智一科技 约定 mysql
设计:
1.只用表跟索引。
2.其他视图,外键,存储过程,函数通通都不用。
表:
1.命名:
采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成,命名简洁明确,多个单词用下划线'_'分隔。
全部小写命名,禁止出现大写
禁止使用数据库关键字,如:name,time ,datetime,password等
用单数形式表示名称,例如,使用 employee,而不是 employees
系统级别举例: opt_sys_user 或者 opt_admin_user
业务级别举例: opt_cms_link 或者 opt_cms_nav 或者 opt_cms_menu
2.引擎:
统一innodb
3.格式
表默认编码utf8mb4
默认排序规则utf8mb4_general_ci
4.注释
写表注释
字段规范:
1.命名:
采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成,命名简洁明确,多个单词用下划线'_'分隔
全部小写命名,禁止出现大写
除user表,其他表用user_id代表用户id
布尔类型的值均以 is、has、exist 或者 can开头
禁止使用数据库关键字,如:name,time ,datetime password 等
在命名表的列时,不要重复表的名称.例如,在名employe的表中避免使用名为employee_lastname的字段
2.格式
多语言排序要求字符串类型,统一utf8mb4_unicode_ci
3.注释
除了主键,其他字段要写注释
字段类型:
1.所有字段在设计时,除以下数据类型timestamp、image、datetime、smalldatetime、uniqueidentifier、binary、sql_variant、binary 、varbinary外,必须有默认值,字符型的默认值为一个空字符值串’’,数值型的默认值为数值0,逻辑型的默认值为数值0
2.不用NULL
3.固定长度的字符串用char不用varchar
4.满足预见的未来需求的前提下,数据类型尽量小。
5.数据类型尽量用数字类型,数字类型的比字符类型的要快很多。
6.系统中所有逻辑型中数值0表示为“假”,数值1表示为“真”
7.用尽量少的存储空间来存储一个字段的数据使用int就不要使用varchar、char,用varchar(16)就不要使varchar(256)
8.所有date,time,datetime都用int或者bigint类型保存时间戳
固定字段命名
create_time作为记录创建时间
update_time作为记录更新时间
delete_time作为记录软删除时间(需要软删除的表统一加delete_time字段)(默认0为没有删除)
status作为记录状态(0禁用/1启用)
sort作为排序(默认值为100,默认排序按从小到大)
table_name作为表名,字段varchar长度64
remark代表备注,给管理员区分记录类型用
description代表描述给前台用户用
image 代表图片,thumbnail 代表缩略图,photos代表相册
parent_id代表父级ID,
id_tree代表id层级关系
id_layer代表id等级
待优化命名示例
①大小写规则不统一
错误示例:user_Id houseID
说明:使用统一规则,修改为”user_id”,”house_id”
②加下划线规则不统一
错误示例:username userid isfriend isgood
说明:使用下划线进行分类,提升可性,方便管理,修改为”user_name”,”user_id”,”is_friend”,”is_good”
③字段表示不明确
错误示例:uid pid
说明:使用完整名称,提高可读性,修改为”user_id”,”person_id”