您的位置:首页 > 数据库

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;--同义词
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: