版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库结构命名规范目 录第一章 介绍1. 目的2. 范围3. 文档约定4. 参考文档第二章 命名及设计规范1. 数据库表(Table)、字段(Field)命名及设计规范1.1 表命名规范1.2 列命名规范1.3 设计规范2. 存储过程(Procedure)命名及设计规范2.1 命名规范2.2 设计规范3. 函数(Function)命名及设计规范3.1 命名规范3.2 设计规范4. 视图(View)命名及设计规范4.1 命名规范4.2 设计规范5. 触发器(Trigger) 命名及设计规范5.1 命名规范5.2 设计规范6. 主键(Primary Key)命名规范7. 外键(Foreign Ke
2、y)命名规范8. 索引(Index)命名规范9. 约束(Check、Constraint)命名规范 第一章 介绍1. 目的整理数据库结构规范的目的是:增加数据库对象的可读性,在设计上尽量规范化,标准化,方便系统后期维护。2. 范围如没有特殊规定,本数据库结构规范文档适用于产品中心的所有开发项目的数据库设计。3. 文档约定在本规范中,采用标准的文档书写约定,章标题使用粗体三号字,节标题使用粗体的小四号宋体,小节标题采用粗体的五号字体,正文采用正常的五号宋体。术语解释时术语部分加以下划线表示。4. 参考文档1. 百度文库数据库命名及设计规范V1.0.3 第二章 命名及设计规范1. 数据库表(Tab
3、le)、字段(Field)命名及设计规范1.1表命名规范1) 表名用T_作为标识,表名一般不超过三个英文单词,长度不能超过30个字符。表名必须是易于理解,能表达表的功能的英文单词或缩写英文单词:如果业务表的含义用英文表述困难,也可用汉语拼音方式命名。无论是完整英文单词还是缩写英文单词,抑或是汉语拼音,单词必须大写。表名中含有单词全部采用单数形式,例如,使用USER,而不是USERS。2) 表中含有的单词建议用完整的单词,多个单词间用下划线(_)进行连接。如果导致表名长度过长,则从最后一个单词开始,依次向前采用该单词的缩写。(如果没有约定的缩写,则采用该单词前4个字母来表示)。3) 对于有主明细
4、的表来说。明细表名为:主表名+_DTS。例如:采购定单的表名为:T_PO_ORDER,则采购定单的明细表名为:T_PO_ORDER_DTS。4) 一般表采用“系统名_+T_模块名_表义名”格式构成,其他特殊情况如:l 若数据库中只含有单个系统,命名可去掉前缀“系统名_”,采用“T_模块名_表义名”格式构成。l 若数据库中只含有单个模块,命名可去掉“模块名”,采用“系统名_+T_表义名”格式构成。l 临时表采用“系统名_+T_TEMP_表义名”格式构成。l 关联表命名为RE_表A_表B,RE是Relative的缩写,表A和表B均采用其表义名或缩写形式。例如:A. 如果有一个模块叫做Bulleti
5、n Board System(缩写为BBS),那么你的数据库中所有对象的名称都要加上这个前缀:T_BBS_+数据库对象名称,T_BBS_CUSTOMER_INFO标示论坛模块中的客户信息表。B. 如果有一个系统叫做行政服务(缩写为XZFW),其中有一张表记录补齐补正业务,由于用英文表达其含有较难或不准确,可以用汉语拼音为其命名:XZFW_T_ +拼音名,XZFW_T_ BUQIBUZHENG.1.2列命名规范1) 列统一采用“CL_”作为前缀。2) 采用有意义的列名,列名必须是易于理解,能表达列功能的英文单词或缩写英文单词;如果列的含义用英文表述困难或不准确,也可用汉语拼音字母的方式命名。无论
6、是完整英文单词还是缩写英文单词,抑或是汉语拼音,不超过三个英文单词,长度不能超过30个字符,一般用完整的英文单词,单词必须大写。在同一数据表内,不允许同时出现英文和拼音字母两种命名方式的列。多个单词间用下划线(_)进行连接。例如:人员信息表中的电话号码所在列可命名为:CL_TELEPHONE或CL_TEL。产品明细表中的产品名称所在列名可用CL_PRODECT_NAME表示。办件表中的审批事项名称所在列名可用拼音字母的方式表示为CL_SPSXMC。3) 表中的主键名使用:“CL_ID”,其数据类型为varchar,主键数据一律采用java程序或存储过程按照一定的规则生成,不允许采用自增长的数据
7、,如identity,sequences等。如项目无特定需求,主键生成规则如下:主键采用字符型,长度为18位XXXXXX XXXXXXXXX XXX前六位代表记录生成的年、月、日,如:Q71225中间九位代表记录生成的时、分、秒、毫秒,如122009337后三位为生成的随机码,随机码采用java.util.Random生成。那么2007年12月26日15时44分产生的数据记录,其主键应类似于071226154430233901(注:主键生成的规则需抽象出具体方法放入底层架构中)4) 系统中属于是业务范围内的编码的列,其代表一定的业务信息,比如办件信息和单据的编号,这样的列建议命名为:业务含义+
8、“_CODE”,其数据类型为varchar,该列需加唯一索引。如:组织机构代码可命名为CL_ORGAN_CODE。5) 在命名表的列时,不要重复表名;例如,在名为T_SYS_USER的表中避免使用名为CL_USERNAME的列,应直接使用CL_NAME。6) 不要在列名中包含数据类型。7) 不要使用“ID”作为列名。8) 关联列命名以“CL_关联表的表义名(或缩写)_列名”构成。1.3设计规范1) 所有列在设计时,除以下数据类型timestamp、image、datetime、smalldatetime、uniqueidentifier、binary、sql_variant、varbinary
9、外,必须有默认值。字符型的默认值为一个空字符值串;数值型的默认值为数值0;逻辑型的默认值为数值0;其中:系统中所有逻辑型中数值0表示为“假”;数值1表示为“真”。datetime、smalldatetime类型的列没有默认值,必须为NULL。当列定义为字符串型时建议使用varchar而不用nvarchar。在Oracle中,不建议使用varchar,建议用varchar2或char类型。2) 尽量遵守第三范式的标准(3NF)A. 表内的每一个值只能表达一次;B. 表内的每一行都应当被唯一的标示;C. 表内不应该存储依赖于其他键的非键信息;D. 如果列事实上是与其它表的关键字相关联而未设计为外键
10、引用,需建索引;E. 如果列与其他表的列相关联,需建索引;F. 如果列需做模糊查询之外的条件查询,需建索引;G. 除了主关键字允许建立簇索引外,其他列所建索引必须为非簇索引。3) 列必须填写描述信息2. 存储过程(Procedure)命名及设计规范2.1命名规范1) 存储过程的命名遵循以下命名规范:“系统名_+PR_系统模块缩写(与表前缀类似)_功能标识_代表存储过程操作的主要表义名(不带前缀)或功能的英文单词或英文单词缩写”,长度不能超过30个字符。2) 如 果一个存储过程只对一个表进行操作,建议存储过程的名称就用存储过程所操作的表的表名(不带前缀)。这样有利于根据表名找到相应的存储过程。为
11、了在众多的 存储过程中能很快的找到并维护存储过程,我们按存储过程的作用将系统的存储过程进行以下的分类及命名:(以下示例假设存储过程所在的模块名为ORG)作用第一前缀第二前缀名(示例)用于新增的存储过程PR_ORG_ADD_EMPLOYEE用于修改的存储过程PR_ORG_UPD_EMPLOYEE用于删除的存储过程PR_ORG_DEL_EMPLOYEE用于单据查询的存储过程PR_ORG_QUERY_EMPLOYEE用于报表统计的存储过程PR_ORG_RPT_STATSEMPLOYEE用于一些特殊过程处理的存储过程PR_ORG_OTH_SETSYSTEMMESSAGE(注:在Oracle中应将存储过
12、程进行分类,按照分类建立不同的PACKAGE,存储过程要从属于某一个PACKAGE。)3) 如果系统中的存储过程只有一级,则遵照以上规则命名,如果存在多级,则需要区分其属于哪一级,具体为“PR+所属的级次+_+后面的部分”表明:其调用了第(所属级次-1)级的存储过程例如:1. PR1_ORG_ADD_SUBJECT(没有调用其它存储过程)2. PR2_ORG_UPD_SUBJECT(调用了第1级的存储过程)3. PR3_ORG_QUERY_SUBJECT(调用了第2级的存储过程)2.2设计规范在存储过程中必须说明以下内容:1) 目的:说明此存储过程的作用。2) 作者:首次创建此存储过程的人的姓
13、名。3) 创建日期:创建存储过程时的日期。4) 修改记录:修改记录需包含修改顺序号、修改者、修改日期、修改原因,修改时不能直接在原来的代码上修改,也不能删除原来的代码,只能先将原来的代码注释掉,再重新增加正确的代码。修改顺序号的形式为:log1,log2,log3,根据修改次数顺序增加,同时在注释掉的原来的代码块和新增的正确代码块前后注明修改顺序号。5) 对存储过程各参数及变量的中文注解。示例如下:/*目的:根据部门与物料和会计区间查询生产现场领料汇总报表作者:张三创建日期:-09-13*/*修改顺序号:log1修改者:李四修改日期:-09-14修改原因:(具体原因详细描述)*/CREATE
14、PROCEDURE PR_GETLMSSUMProductionType int=1, -生产类型(1-自制;-委外加工)DeptID int=0, -生产部门ItemID int=0, -物料StartDate datetime=2001-11-26, -会计区间开始日期EndDate datetime=2002-12-25, -会计区间截止日期AS/*log1 old-自制领料INSERT INTO #LMSDtsSELECT DEPTID FROM T_DEPT.end log1 old*/-log1 new-自制领料INSERT INTO #LMSDtsSELECT DEPTID FR
15、OM T_DEPT.-end log1 new3. 函数(Function)命名及设计规范3.1命名规范1) 函数的命名遵循以下命名规范:“系统名_+FU_+系统模块缩写(与表前缀类似)+_+功能标识+代表函数操作的主要表义名或功能的英文单词或英文单词缩写”,长度不能超过30个字符。2) 如果一个函数只对一个表进行操作,建议函数名就用函数所操作的表的表义名。这样有利于根据表名找到相应的函数。为了在众多的函数中能很快的找到并维护函数,我们按函数的作用将系统的函数进行以下的分类及命名:(以下示例假设函数所在的模块名为ORG)作用第一前缀第二前缀名(功能标识)示例用于新增的函数FU_ORG_ADD_
16、EMPLOYEE用于修改的函数FU_ORG_UPD_EMPLOYEE用于删除的函数FU_ORG_DEL_EMPLOYEE用于单据查询的函数FU_ORG_QUERY_EMPLOYEE用于报表统计的函数FU_ORG_RPT_STATSEMPLOYEE用于一些特殊过程处理的函数PR_ORG_OTH_SETSYSTEMMESSAGE3) 如果系统中的函数只有一级,则遵照以上规则命名,如果存在多级,则需要区分其属于哪一级,具体为“FU+所属的级次+_+后面的部分”表明:其调用了第(所属级次-1)级的函数。例如:1. FU1_ORG_ADD_SUBJECT(没有调用其他函数)2. FU2_ORG_UPD_
17、SUBJECT(调用了第1级的函数)3. FU3_ORG_QUERY_SUBJECT(调用了第2级的函数)3.2设计规范在存储过程中必须说明以下内容:1) 目的:说明此函数的作用。2) 作者:首次创建此函数的人的姓名。3) 创建日期:创建函数时的日期。4) 修改记录:修改记录需包含修改顺序号、修改者、修改日期、修改原因,修改时不能直接在原来的代码上修改,也不能删除原来的代码,只能先将原来的代码注释掉,再重新增加正确的代码。修改顺序号的形式为:log1,log2,log3,根据修改次数顺序增加,同时在注释掉的原来的代码块和新增的正确代码块前后注明修改顺序号。5) 对函数各参数及变量的中文注解。示
18、例如下:/*目的:查询生成现场领料汇总报表作者:张三创建日期:-09-13*/*修改顺序号:log1修改者:李四修改日期:-09-14修改原因:(具体原因详细描述)*/CREATE FUNCTION FU_GETLMSSUMProductionType int=1, -生产类型(1-自制;-委外加工)DeptID int=0, -生产部门ItemID int=0, -物料StartDate datetime=2001-11-26, -会计区间开始日期EndDate datetime=2002-12-25, -会计区间截止日期AS/*log1 old-自制领料INSERT INTO #LMSDt
19、sSELECT DEPTID FROM T_DEPT.end log1 old*/-log1 new-自制领料INSERT INTO #LMSDtsSELECT DEPTID FROM T_DEPT.-end log1 new4. 视图(View)命名及设计规范4.1命名规范1) 视图的命名遵循以下命名规范:“系统名_+V_+系统模块缩写(与表前缀相似)+_+功能标识+代表视图查询的主要表名(不要带前缀)或功能的英文单词或英文单词缩写”,长度不能超过30个字符。2) 如果一个视图只对一个表进行查询,建议视图名就用视图查询的表的名(不带前缀)。这样有利于根据表名找到相应的视图,为了在众多的视图中
20、能很快的找到并维护视图,我们按其作用系统的视图进行以下的分类及命名:(以下示例假设视图所在的模块名为ORG)作用第一前缀第二前缀名(功能标识)示例用于单据查询的视图V_ORG_QUERY_EMPLOYEE用于报表统计的视图V_ORG_RPT_STATSEMPLOYEE用于一些特殊过程处理的视图V_ORG_OTH_SETSYSTEMMESSAGE3) 如果系统中的视图只有一级,则遵照以上规则命名,如果存在多级,则需要区分其属于哪一级,具体为“V+所属的级次+_+后面的部分”表明:其调用了第(所属级次-1)级的视图。例如:1. V1_ORG_ADD_SUBJECT(没有调用其他视图)2. V2_O
21、RG_UPD_SUBJECT(调用了第1级的视图)3. V3_ORG_QUERY_SUBJECT(调用了第2级的视图)4.2设计规范在视图中必须说明以下内容:1) 目的:说明此视图的作用。2) 作者:首次创建此视图的人的姓名。3) 创建日期:创建视图时的日期。4) 修改记录:修改记录需包含修改顺序号、修改者、修改日期、修改原因,修改时不能直接在原来的代码上修改,也不能删除原来的代码,只能先将原来的代码注释掉,再重新增加正确的代码。修改顺序号的形式为:log1,log2,log3,根据修改次数顺序增加,同时在注释掉的原来的代码块和新增的正确代码块前后注明修改顺序号。5) 对视图各参数及变量的中文
22、注解。示例如下:/*目的:查询本月所要培训的科目作者:张三创建日期:-09-13*/*log1 oldCREATE VIEW V_ADD_SUBJECTASSELECT SUBJECTCODE AS课程编号FROM T_SUBJECT.end log1 old*/*修改顺序号:log1修改者:李四修改日期:-09-14修改原因:学员不需要培训,将不需要培训的课程去掉。*/-log1 newCREATE VIEW V_ADD_SUBJECTASSELECT SUBJECTCODE AS课程编号FROM T_SUBJECT.-end log1 new5. 触发器(Trigger)命名及设计规范5.
23、1命名规范触发器命名遵循如下规范:“系统名_+TR_+表义名(不能带前缀)+_+触发类型简写”,触发器名需大写。Insert触发器加_INS;Update触发器加_UPD;Delete触发器加_DEL。如:T_SYS_USER表的Insert触发器为TR_SYS_USER_INS。5.2设计规范在触发器中必须说明以下内容:1) 目的:说明此触发器的作用。2) 创建者:首次此触发器的创建人的姓名。3) 修改记录:修改记录需包含修改顺序号、修改者、修改日期、修改原因,修改时不能直接在原来的代码上修改,也不能删除原来的代码,只能先将原来的代码注释掉,再重新增加正确的代码。修改顺序号的形式为:log1,log2,log3,根据修改次数顺序增加,同时在注释掉的原来的代码块和新增的正确代码块前后注明修改顺序号。4) 对其中各参数及变量的中文注解。示例如下:/*目的:删除TR_SYS_A表中关联的记录作者:张三创建日期:-09-13*/*log1 oldCREATE TRIGGER TR_SYS_A ON T_SYS_A FOR DELETEASIF ROWCOUNT=0 -no rows deleted RETURNDELETE T_SYS_B FROM T_SYS_B b,deleted d WHERE b.id=d.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论