SQL之数据库设计
2016-04-25 09:25
190 查看
1 整体解析
大的项目一般会分多个小项目来做,而每个项目的数据库角色一般都不一样。这就使得数据库的“变更脚本”,必须按照不同角色来归类,其中权限变更脚本必须单独一个。如下图:CS/PC为角色名称,
IFS为接口表,发送(相对开发系统)
IFR为接口表,接收(相对开发系统)
SYS为权限变更脚本名称
表名:T_角色DB/BU名称,DB-基础数据,BU-业务数据 。
2 变更脚本
2.1 新增/修改
数据库变更的脚本,本人不赞同自己写,因为每个人写代码的风格不一致,自己写变会影响脚本的美观性和易读性。所以一般是使用PL/SQL软件进行可视化的操作。(PS:也可以将变更内容Excel文档中,让数据库的变更人员进行代码的编写)新增:左侧的对象窗口–》table文件夹–》右键新建–》一般:填写“名称”,“注释”这两项;列:按照自己的需求填写数据库结构–》“查看SQL”。
修改:右击表名–》编辑–》添加字段–》查看SQL–》不需要如下部分代码:
alter table ME.T_ME_BU_ACC_IN_STORAGE storage ( next 1 ) ;
对于数据备份表,只需要比原数据表多一个备份时间就行了,备份表可以没有ID。
2.2 值列表添加数据
对于值列表的数据添加脚本,有一个特殊的要求————可以被多次执行。可以被多次执行的意思是,如果值列表中已经存在该数据,则不需要添加。
代码如下:
DECLARE mCount integer; begin select count(1) into mCount from T_CS_DB_LOOKUP_TYPE t where T.LOOKUP_TYPE_CODE='PCM006'; if mCount =0 then INSERT INTO T_CS_DB_LOOKUP_TYPE (LOOKUP_TYPE_CODE,LOOKUP_TYPE_NAME) VALUES ('PCM006','专营店惩罚阀值'); END if; select count(1) into mCount from T_CS_DB_LOOKUP_VALUE t where T.LOOKUP_TYPE_CODE='PCM006' and T.LOOKUP_VALUE_CODE='1'; if mCount =0 then INSERT INTO T_CS_DB_LOOKUP_VALUE ( LOOKUP_VALUE_CODE, LOOKUP_VALUE_NAME, LOOKUP_TYPE_CODE, LOOKUP_TYPE_NAME, REMARK ) VALUES ( '1', '24', 'PCM006', '专营店惩罚阀值', '单位:小时' ); end if; commit; end; /
上面代码中,最后的“/”是必须的,它告诉程序停止执行。
2.3 权限变更
权限变更主要是将一个角色(项目)的表授权给另一个角色(代码运行使用的角色)。代码如下
GRANT SELECT ON PC.T_PC_BU_PUNISH TO MDS WITH GRANT OPTION;--查询权限,包括视图 GRANT INSERT,UPDATE,DELETE ON PC.T_PC_BU_PUNISH TO MDS;--增、修、删 CREATE SYNONYM MDS.T_PC_BU_PUNISH FOR pc.T_PC_BU_PUNISH;--同义词
相关文章推荐
- 关于c#sql中返回的dt问题探究
- 关于Redis info的参数总结
- ORACLE表空间的导入与导出
- Hibernate原生SQL查询多表关联,SQL语句要注意的问题
- redis的基本类型及操作命令
- 数据库ACID
- Linux下php安装Redis扩展
- MySqlHelper、CacheHelper
- Oracle在Linux下使用异步IO配置
- hadoop从oracle中到数据
- 查询MYSQL和查询HBASE速度比较
- 1-MySQL数据库简介
- mysql索引总结----mysql 索引类型以及创建
- sudo service memcached start
- sudo service memcached start
- Mac 安装MySQL到移动硬盘
- mysql主从同步
- 4_网易数据库发展历史
- MySQL开发
- MySQL 安装方式 @Doyle