咨询邮箱 咨询邮箱:mail@yaanidc.com 咨询热线 咨询热线:13795856919 微博 微信
MYSQL数据库字段命名及设计规范
发表日期:2020-08-13    文章编辑:网络    浏览次数:

MYSQL数据库字段命名及设计规范

1. 设计原则


(1) 标准化和规范化

数据的标准化有助于消除数据库中的数据冗余。标准化有好几种形式,但ThirdNormalForm(3NF)通常被认为在性能、扩展性和数据完整性方面达到了最好平衡。简单来说,遵守3NF标准的数据库的表设计原则是:“OneFactinOnePlace”即某个表只包括其本身基本的属性,当不是它们本身所具有的属性时需进行分解。表之间的关系通过外键相连接。它具有以下特点:有一组表专门存放通过键连接起来的关联数据。
举例:某个存放客户及其有关定单的3NF数据库就可能有两个表:Customer和Order。Order表不包含定单关联客户的任何信息,但表内会存放一个键值,该键指向Customer表里包含该客户信息的那一行。
事实上,为了效率的缘故,对表不进行标准化有时也是必要的。

(2) 数据驱动

采用数据驱动而非硬编码的方式,许多策略变更和维护都会方便得多,大大增强系统的灵活性和扩展性。
举例,假如用户界面要访问外部数据源(文件、XML文档、其他数据库等),不妨把相应的连接和路径信息存储在用户界面支持表里。还有,如果用户界面执行工作流之类的任务(发送邮件、打印信笺、修改记录状态等),那么产生工作流的数据也可以存放在数据库里。角色权限管理也可以通过数据驱动来完成。事实上,如果过程是数据驱动的,你就可以把相当大的责任推给用户,由用户来维护自己的工作流过程。

(3) 考虑各种变化

在设计数据库的时候考虑到哪些数据字段将来可能会发生变更。
举例,姓氏就是如此(注意是西方人的姓氏,比如女性结婚后从夫姓等)。所以,在建立系统存储客户信息时,在单独的一个数据表里存储姓氏字段,而且还附加起始日和终止日等字段,这样就可以跟踪这一数据条目的变化。

2. 数据库涉及字符规范


采用26个英文字母(区分大小写)和0-9这十个自然数,加上下划线’_'组成,共63个字符,不能出现其他字符(注释除外)。
注意事项:
(1) 以上命名都不得超过30个字符的系统限制.变量名的长度限制为29(不包括标识字符@)。
(2) 数据对象、变量的命名都采用英文字符,禁止使用中文命名,绝对不要在对象名的字符之间留空格。
(3) 小心保留词,要保证你的字段名没有和保留词、数据 库系统或者常用访问方法冲突。
(4) 保持字段名和类型的一致性,在命名字段并为其指定数据类型的时候一定要保证一致性。假如数据类型在一个表里是整数,那在另一个表里可就别变成字符型了。

3. 数据库命名规范


数据库,数据表一律使用前缀。

正式数据库名使用小写英文以及下划线组成,尽量说明是那个应用或者系统在使用的。比如:

web_19floor_net
web_car
  • 1
  • 2

备份数据库名使用正式库名加上备份时间组成,如:

web_19floor_net_20070403
web_car_20070403
  • 1
  • 2

4. 数据库表命名规范


数据表名使用小写英文以及下划线组成,尽量说明是那个应用或者系统在使用的。 相关应用的数据表使用同一前缀,如 论坛的表使用cdb_前缀,博客的数据表使用supe_前缀。前缀名称一般不超过5字, 比如:

web_user
web_group
supe_userspace
  • 1
  • 2
  • 3

备份数据表名使用正式表名加上备份时间组成,如:

web_user_20070403
web_group_20070403
supe_userspace_20070403
  • 1
  • 2
  • 3

5. 字段命名规范


字段名称使用单词组合完成,首字母小写,后面单词的首字母大写,最好是带表名前缀。 如 web_user 表的字段:

user_Id
user_Name
user_Password
  • 1
  • 2
  • 3

表与表之间的相关联字段要用统一名称, 如 web_user 表 里面的 user_Id 和 web_group 表里面的 user_Id 相对应

(大叔旁白) 按《阿里Java开发规范》中的约定,不得使用大写字母,不得连写两个单词。

6.字段类型规范


规则:用尽量少的存储空间来存 数一个字段的数据。比如:

  • 能用int的就不用char或者varchar;
  • 能用tinyint的就不用int;
  • 能用varchar(20)的就不用varchar(255);
  • 时间戳字段尽量用int型,如gmt_create:表示从 ‘1970-01-01 08:00:00’ 开始的int秒数,采用英文单词的过去式;gmtCreated:表示datetime类型的时间,即形如 '1980-01-01 00:00:00’的时间串,Java中对应的类型为Timestamp

相关文章推荐
在线客服