Luo Hao

数据库设计守则

rehoni / 2020-06-20


数据库命名规则
  1. 表名与字段的命名统一采用大写英文全称或简称,严禁用拼音或缩写;
  2. 数据库的所有表名、视图名、字段名、存储过程一律采用大写;
  3. 名称中间词的间隔采用下划线“_”拼接。
表名命名规定
  1. 表名命名统一采用大写英文全称或简称,严禁用拼音或缩写;
  2. 数据库的所有表明、视图名、字段名、存储过程一律采用大写;
  3. 名词中间词的间隔采用下划线“_”拼接;
  4. 表名不可以太长,最好不要超过3个英文单词长度(30个字母);
  5. 在表创建完成前,应该为表添加表的注释。
表设计规范
  1. 所有字段在设计时,除以下数据类型timestamp、image、datetime、smalldatetime、uniqueidentifier、binary、sql_variant、binary、varbinary外,最好有默认值;
  2. 字符型的默认值为一个空字符值串‘’;
  3. 数值型的默认值为数值0;
  4. 逻辑型的默认值为数值0(其中:系统中所有逻辑型中数值0表示为“假”,数值1表示为“真”);
  5. datetime、smalldatetime类型的字段没有默认值,必须为NULL;
  6. 当字段定义为字符串型时,建议使用varchar2(varchar和varchar2的区别)而不是用nvarchar;
  7. 字段的描述:
    1. 字段必须填写描述信息(注释)
    2. 尽量遵守第三范式的标准(3NF)
      1. 表内的每一个值都只能被表达一次(列名不重复)
      2. 表内的每一行都应当被唯一的标示(标识唯一性,如自动增长主键)
      3. 表内不应该存储依赖于其他键的非键信息
字段名命名约定
  1. 数据库字段应该是有意义且易于理解的,最好是能够表达字段含义的英文字母;
  2. 系统中所有属于内码,即仅用于标识唯一性和程序内部用到的标识性字段,字段名称建议取为ID,采用类型为整型或长整型,也可以使用字符类型;
  3. 系统中属于是业务内的编号字段,代表一定业务信息,建议字段命名为CODE,如线路编号LINE_CODE;
  4. 不要在数据库表字段(列名)中包含数据类型,如:datetime;
  5. 不要在数据库表字段(列名)命名时重复表名,可以使用表名首字母(不包含数据库表名前缀)。

注意:

​ 在数据库表字段(列名)命名时不建议使用数据库关键字,如:name,time,datetime,password等。

存储过程命名规定

存储过程的命名请遵循以下命名规范:PRO_+系统模块(与表前缀类似)+_+功能标识英文单词或英文单词缩写。

如果一个存储过程只对一个表进行操作,建议存储过程的名称就用存储过程的表的表名(不带前缀)。这样有利于根据表名找到相应的存储过程。例如,用于清洗缺陷信息的过程PRO_DEFECT_CLEANING。

存储过程设计规范
  1. 在存储过程中必须说明一下内容:
    1. 目的:说明此存储过程的作用。
    2. 作者:首次创建此存储过程的人的姓名。在此请使用中文全名,不允许使用英文简称。
    3. 创建日期:创建存储过程的日期。
    4. 修改记录:修改记录需包含修改顺序号、修改者、修改日期、修改原因,修改时不能直接在原来的代码上修改,也不能删除原来的代码,只能先将原来的代码注释掉,再重新增加正确的代码。修改顺序号的形式为:log1,log2,log3。。。根据修改次数顺序增加,同时在注释掉的原来的代码块和新增的正确代码块前后注明修改顺序号。
  2. 对存储过程各参数及变量加中文注解。
  3. 建议在数据库中创建一个文本文件保存创建脚本。
触发器命名规范

Insert触发器加’_i’,Delete触发器加’_d',Update触发器加’_u’。

触发器设计规范

在触发器中必须说明以下内容:

  1. 目的:说明此触发器的作用。
  2. 创建者:首次创建此触发器的人的姓名。在此请使用中文全名,不允许使用英文简称。
  3. 修改者、修改日期、修改原因:如果有人对此触发器进行了修改,则必须在此触发器的前面加注修改者姓名、修改日期及修改原因。
  4. 对触发器各参数及变量加中文注解。
  5. 建议在数据库中创建一个文本文件保存创建脚本。