这些规定是基于数据库表字段命名规范_数据库字段名称_码农书生的博客 - CSDN 博客并稍加修改的。
对数据库和字段均生效:
- 可用字符:小写英文字母、数字(0 – 9)和下划线(‘_’)。
- 保持名称简单、明确(一般不超过三个英文单词) 。
- 用下划线('_')分隔单词。
- 不要数据库关键字,如名称、时间、数据时间、密码。
- 不要使用复数单词。例如,使用 employee 而不是 employees。
- 表必须填写描述信息。
- 不要在列的名称中包含数据类型。
- 不要重复表的名称。例如,不要将名为“employee”的表中的字段命名为“employee_lastname”。
- 字段必须填写描述信息。
- 表中字段是另外一张表的主键,则为表名 + id ,体现关联关系。例:user_id。
- 避免缩写,例如“student_course”,而不是“sc”。
- charset(字符集):utf8mb4;sort by(排序依据):utf8mb4_general_ci。
- 必须定义主键,默认为 id,类型为
bigint unsigned
,自增步长为 1。一般其与业务无关。否则,需与后端开发者或 DBA 评估设计。
- 尽量避免外键,数据完整性靠程序保证。
- 多表中的相同列,必须保证列定义一致。
- 单表一到两年内数据量超过 500 万或数据容量超过 10G 时,考虑分表,不得超过单表 2000 万。需要提前考虑历史数据迁移或应用自行删除历史数据。
- 单条记录大小禁止超过 8k。一方面字段数不要太多,不允许超过 20 个字段;另一方面,字段内容不宜过大,例如文章内容,此时考虑另外建表。
- 避免使用数据库存储日志。
尽量遵循第三范式(3NF)。
- 除了
timestamp
、image
、datetime
、smalldatetime
、uniqueidentifier
、binary
、sql_variant
、binary
、varbinary
等数据类型外,必须有默认值。字符型的默认值为一个空字符值串,数值型的默认值为数值 0,逻辑型的默认值为数值 0 或 false。
- 所有逻辑型中数值 0 表示为 “假”,数值 1 表示为 “真”;
datetime
、smalldatetime
类型的字段没有默认值,必须为 NULL 。
- 用尽量少的存储空间来存储一个字段的数据。例如,能用
varchar(16)
就不要使用varchar(255)
;能用int
就不要使用字符串。
- 固定长度的类型最好使用
char
,例如邮编 (postcode) 。
- 尽量避免
NULL
,因为其很难查询优化,索引需要额外空间,并且其复合索引无效。
- 尽量避免
text
类型。
- 禁止使用
float
、double
类型,因为会产生浮点误差。
- 禁止使用
blob
、text
类型保存大文本、文件、图片等数据。数据库内只保存指针信息,例如 URL。
- 禁止主键使用
varchar
类型。
- 被索引列必须定义为
not null
,并设置默认值。
- 如果字段事实上与其它表的关键字相关联,但未设计为外键引用的,需建索引。
- 如果字段与其它表的字段相关联,需建索引。
- 如果字段需做模糊查询之外的条件查询,需建索引。
- 除了主关键字允许建立簇索引外,其它字段所建索引必须为非簇索引。