如果今天不努力,明天也不努力,那么人生只是在重复而已。(心不定,难成事)

数据库设计规范

DataBase Sam 119℃

本文来自涛哥所在公司的技术总监分享,现分享出来让大家更好的设计使用数据库


命名规范


库名、表名、字段名必须使用小写字母,并采用下划线分割;
库名、表名、字段名禁止超过32个字符;
库名、表名、字段名禁止使用MySQL保留字;(保留字列表见官方网站)
临时库、表名必须以tmp为前缀, 并以日期为后缀; 例如 tmp_test;
备份库、表必须以bak为前缀, 并以日期为后缀; 例如 bak_test;


表规范


使用尽可能小的VARCHAR字段;VARCHAR(N)中的N表示字符数而非字节数;
区分使用DATETIME和TIMESTAMP;存储年使用YEAR类型;存储日期使用DATE类型; 存储时间(精确到秒)建议使用TIMESTAMP类型;
所有字段均定义为NOT NULL, 并设置默认值, 说明信息.
存储引擎为InnoDB, 编码 utf8mb4;
禁止在数据库中存储图片、文件等大数据。
禁止从测试、开发环境直连线上数据库。
禁止使用TEXT、BLOB类型;
禁止在数据库中存储明文密码;
模块_业务表;
模块划分:uc(用户中心), oc(订单中心), ic(商品中心), pc(价格,库存中心), ec(物流中心), fc(财务中心), cc(公共);


字段规范


base表为公共字段;
表中所有涉及用户id的统一用uid作为非约束外键;
所有字段均为非空字段, 须有默认值;
建议使用UNSIGNED存储非负数值
区分使用TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT数据类型。例如取值范围为0-80时,使用TINYINT UNSIGNED。(0~255,2^15,2^31,2^63)
INT类型固定占用4字节存储,例如INT(4)仅代表显示字符宽度为4位,不代表存储长度
用DECIMAL代替FLOAT和DOUBLE存储精确浮点数。例如与货币、金融相关的数据。


索引规范


索引名必须全部使用小写
非唯一索引按照“idx_字段名称[_字段名称]”进用行命名。例如idx_age_name
唯一索引按照“uniq_字段名称[_字段名称]”进用行命名。例如uniq_age_name
组合索引建议包含所有字段名,过长的字段名可以采用缩写形式。例如idx_age_name_add地方

转载请注明:PHP笔记 » 数据库设计规范

喜欢 (1)