SQL之数据库设计

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;--同义词
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值