建议2: 表名建议要体现系统简称或者功能模块名
规范5: 表名由英文单词组成;单词之间用下划线隔开,不允许用汉语拼音;尽量用单词的全称,不用缩写
对于名称超长的,可对其中的个别单词缩写,单词缩写必须能够完整表达原有英文全称的含义;
规范6: 表名要有含义
能保证不太熟悉这个系统的人都能大概理解这个表是什么意思。
规范7: 表名规范如下:模块简称+”_”+业务描述。
例如:
是否正确 | 举例 | 说明 |
错误 | APP_USER、USER、TEST | |
正确 | SEC_USER | SEC为权限模块(SECURITY)的简称,USER是表描述 |
规范8: 字段名由英文单词组成;单词之间用下划线隔开,不允许用汉语拼音;尽量用单词的全称,不用缩写
对于名称超长的,可对其中的个别单词缩写,单词缩写必须能够完整表达原有英文全称的含义;
规范9: 字段名要有含义
能保证不太熟悉这个系统的人都能大概理解这个字段是什么意思。另外,如果有外键关联或者是不同表中同样含义的字段,最好用同一个字段名。而不同含义的字段,尽量避免使用相同的名字。
规范10: Date 类型的字段, 需要以“date_”作为前缀或者“_date”做为后缀。Boolean类型的字段,需要以”is_”作为前缀。
例如:
是否正确 | 举例 | 说明 |
错误 | ADTP、ADDRESS_T | |
正确 | ADDRESS_TYPE |
规范11: 所有约束必须有约束名,包括非空约束
约束按如下规则命名:
主键约束:PK_+表名_+字段名;
外键约束:FK_+表名_+字段名;
唯一约束:UN_+表名_+字段名;
非空约束:NN_+表名_+字段名;
值检查约束:CK_+表名_+字段名;
例如:
是否正确 | 举例 | 说明 |
错误 | PK_1 | |
正确 | PK_SEC_USER_USERID FK_SEC_USER_ROLEID UN_SEC_USER_USERID NN_SEC_USER_USERID CK_SEC_USER_USERNAME |
规范12: 分区表和字段的命名规范与普通表命名规范相同,分区索引的命名规范与普通索引的命名规范相同。
规范九: 必须为表分区命名。
表分区的命名格式为:”表名_”+分区特征+”_pt”
索引分区的命名格式为:”索引名_”+分区特征+”_pi”
例如:
是否正确 | 举例 | 说明 |
错误 | ||
正确 | 表policy_base_info上按created_date字段来分区,则分区名称可为:policy_base_info_2001_pt、 policy_base_info_2002_pt等; 表endorse_info上按department_code字段来分区,则分区名称可为:endorse_info_sz_pt、 endorse_info_sh_pt等; 表policy_base_info上将索引pbi_created_date进行分区,其分区名称可以为: idx_pbi_created_date_2001_pi、 idx_pbi_created_date_2002_pi等。 |
规范13: 索引的命名格式为:
主键索引:”PK_”+表名+”_”+字段名或字段名组合(与主键约束同名)
外键索引:”FK_”+表名+”_”+字段名或字段名组合(与外键约束同名)
其他索引:”IDX_”+表名+”_”+字段名或字段名组合
例如:
是否正确 | 举例 | 说明 |
错误 | IDX_1、INDEX_1、SEC_USER_IDX | |
正确 | PK_SEC_USER_USERID FK_SEC_USER_GROUPID IDX_SEC_USER_USERNAME |
规范14: 如系统中没有冲突,则同义词名称必须与其指向的对象同名。
规范15: 如果系统中已存在同名的公共同义词,则采用数据库用户名_表名来命名。
建议3: 如果系统中已存在某公共同义词,则不建议创建同名的私有同义词,以免引起混乱。
例如:
是否正确 | 举例 | 说明 |
错误 | CREATE PUBLIC SYNONYM SEC_USER FOR SECURITYDATA.SEC_ROLE; | |
正确 | 无冲突: CREATE PUBLIC SYNONYM SEC_USER FOR SECURITYDATA.SEC_USER; | |
存在冲突: CREATE PUBLIC SYNONYM SECURITYDATA_SEC_USER FOR SECURITYDATA.SEC_USER; |
规范16: sequence的命名格式为:表名+”_”+字段名+ “_SEQ”。
例如:
是否正确 | 举例 | 说明 |
错误 | SEC_USER_SEQ、TEST_SEQ | |
正确 | SEC_USER_USERID_SEQ | USERID为与SEQUENCE关联的字段名 |
规范17: 视图名规范如下:模块简称+”_”+视图描述+” _V”。
例如:
是否正确 | 举例 | 说明 |
错误 | SEC_USER_VIEW VIEW_SEC_USER | |
正确 | SEC_USER_V | V表示该对象是一个视图,SEC为权限模块(SECURITY)的简称,USER是表描述 |
规范18: 物化视图的命名格式为:模块简称+”_”+物化视图描述+ “_MV”。
例如:
是否正确 | 举例 | 说明 |
错误 | SEC_USER_MVIEW MVIEW_SEC_USER | |
正确 | SEC_FLUSH_DUTY_TYPE_PCIS_MV | SEC为模块简称,FLUSH_DUTY_TYPE_PCIS为物化视图描述 |
规范19: 存储过程的命名格式为:模块简称+”_”+过程描述+ “_PRC”。
例如:
是否正确 | 举例 | 说明 |
错误 | TEST_PRC | |
正确 | SEC_DROP_ORDER_TABLES_PRC | SEC为模块简称,DROP_ORDER_TABLES为存储过程描述 |
建议4: 因触发器太耗费资源,原则上尽量不使用触发器
规范20: 触发器的命名格式为:模块简称+”_”+触发器描述+ “_TRI”。
例如:
是否正确 | 举例 | 说明 |
错误 | TEST_TRI | |
正确 | SEC_DROP_ORDER_TABLES_TRI | SEC为模块简称,DROP_ORDER_TABLES为触发器描述 |
规范21: 包的命名格式为:模块简称+”_”+包描述+“_PKG”。
例如:
是否正确 | 举例 | 说明 |
错误 | TEST_PKG | |
正确 | SEC_DROP_ORDER_TABLES_PKG | SEC为模块简称,DROP_ORDER_TABLES为包描述 |
规范22: 函数的命名格式为:模块简称+”_”+函数功能描述+“_FUN”。
例如:
是否正确 | 举例 | 说明 |
错误 | TEST_FUN | |
正确 | SEC_DROP_ORDER_TABLES_FUN | SEC为模块简称,DROP_ORDER_TABLES为函数描述 |
建议5: 链接名称建议要尽量体现目标系统简称及目标用户
建议6: 从长远来看,需要控制dblink的使用,如果一定有准实时的数据交互访问需求,可以考虑goldengate。
dblink会使得数据库库和库之间耦合度太高,不利于后期运维管理,而且用得多了,dblink的接口用户密码很难管理,导致数据库迁移升级时接口用户密码要重置,更加麻烦。
规范23: 如链接是公共连接,则命名格式:
远程数据库名称+”_”+远程用户名+” _DBLINK”。
如果是私有连接,则命名格式:
模块简称+”_”+远程数据库名称+”_”+远程用户名+”_”+”DBLINK”。
例如:
是否正确 | 举例 | 说明 |
错误 | TEST_DBLINK | |
正确 | D0RWA_SECURITYDATA_DBLINK | 建公共链接,连接远程库D0RWA的用户SECURITYDATA |
TSP_D0RWA_SECURITYDATA_DBLINK | 新建TSP模块的私有链接,连接远程库D0RWA的用户SECURITYDATA |