温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

mysql数据库的规范有哪些

发布时间:2021-08-03 11:13:23 来源:亿速云 阅读:170 作者:Leah 栏目:MySQL数据库

今天就跟大家聊聊有关mysql数据库的规范有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

基础规范

【建议】使用InnoDB存储引擎

【强制】无特殊要求必须使用UTF8字符集

【强制】数据表、数据字段必须加入中文注释

【强制】禁止使用存储过程、视图、触发器、Event。特殊情况申请评审

【强制】不在数据库做运算,cpu计算务必移至业务层

命名规范

【建议】 命名使用具有实际意义的英文词汇、词汇缩写,词汇之间使用下划线分隔;

【强制】 命名只能使用小写英文字母、数字、下划线,且必须英文字母开头,下划线为分割符,不能超过32个字符,数据库对象名尽可能简短。避免使用MySQL的保留字

【强制】普通表名命名规则为功能模块前缀_+tablename(login_users); 临时表:tmp前缀+tablename+8位时间后缀(tmp_users_20170501); 备份表:bak前缀+tablename+8位时间后缀(bak_users_20170501); 归档表命名规则:arch前缀+tablename+归档规则 (arch _users_2013)【强制】各表之间相同意义的字段必须同名,数据类型、长度、单位必须相同。

【强制】索引以idx_开头唯一索引以uq_idx开头,后面跟索引所在字段名,多单词组成的列名,取尽可能代表意义的缩写,如t_user_contacts表member_id和friend_id上的组合索引:idx _mid_fid,,组合索引命名应注意字段顺序。如在字段member_id和字段user_id上创建组合索引,则可以命名为idx _uid_mid(userid, member_id)

常用约定:

【建议】序号列字段:以id为后缀,如:user_id表示用户编号

【建议】编码字段:以code为后缀,如:cust_code表示客户编码

【建议】布尔值字段:以“is_”前缀+字段描述+形容词。如member表上表示为enabled的会员的列命名为is_member_enabled。0:否;1:是

【强制】状态字段:以“_status”为后缀,前面加业务逻辑名。如:用户状态可命名为user_status,订单状态为order_status 以此类推

表设计规范(***)

【强制】表设计必须有表主键,并且主键不能提供给外部系统,给外部系统的必须使用业务主键,如user表的业务主键设计,如下id 表主键,自增,表主键不能像外部系统提供 xxx_id 为业务主键,使用IdGenerater(id生成工具类生成,见附件),可以提供给外部系统,使用bigint存储

【强制】表必须有主键,如果使用auto_increment作为自增主键,注意导出初始化脚本时不要设置起始值。

【强制】枚举类型使用tinyint类型

【强制】单表字段数不要太多,最多不要大于50个,且尽可能的少用字符型数据类型

【强制】日期的数据(不包含时分秒的),使用int(11)存储(如,yyyy、yyyyMM、yyyyMMdd),时间的数据((包含时分秒的)),使用datetime存储。

【强制】每个表都必须包含两个保留字段:create_time(创建时间),update_time(最后修改时间)creater varchar(50)(创建人),updater varchar(50)(修改人),设置为非空字段属性。这两个字段不包含额外的业务逻辑。

【强制】每个表设置is_del(0为未删除,1为删除)标记位字段,设置为非空,默认为0的字段属性,生产环境不允许物理删除。特殊表再议

【强制】表和列定义的时候必须加上comment,并能精确描述表和列的含义。类型、状态等字段必须明确给出各个值代表的含义;金钱等计量字段必须给出精确的计量单位;外键字段必须明确给出关联的表和字段

【强制】若需要JOIN的字段(连接键),字段名称、数据类型、长度和单位必须保持绝对一致,避免隐式转换

【强制】禁止使用TEXT、BLOB类型(大文本、大文件、大照片存放在文件系统),可以把文件放到文件服务器中,数据库只存url

【强制】不推荐使用enum,set。因为它们浪费空间,且枚举值写死了,变更不方便。推荐使用tinyint或smallint

【强制】如果有业务流转的加字段:业务流水号

【强制】如果一次操作多张表需要查看修改或者回退操作的,加操作流水号

【强制】禁止创建外键约束,外键约束由应用程序控制。外键会导致表与表之间耦合,update与delete操作都会涉及相关联的表,影响sql 的性能,甚至会造成死锁。

【强制】排序字段都不允许为空,并设置默认值。

字段设计规范

【强制】字符串类型一律使用VARCHAR类型,对于明确长度的建议使用char,如身份证号等

【强制】禁止使用TEXT、BLOB类型。会浪费更多的磁盘和内存空间,非必要的大量的大字段查询会淘汰掉热数据,导致内存命中率急剧降低,影响数据库性能

【建议】字段定义为NOT NULL并且提供默认值。null的列使索引/索引统计/值比较都更加复杂,对MySQL来说更难优化;需要更多的存储空;只能采用is null或is not null,而不能采用=、in、='2017-02-15'-- 正确的写法是: SELECT uid FROM t_user WHERE day>= xxxfunc ('2017-02-15 00:00:00')

【强制】禁止使用OR条件。使用IN或者UINON代替

【强制】禁止大表使用JOIN查询,禁止大表使用子查询。极大影响数据库性能

【强制】禁止负向查询,以及%开头的模糊查询。a)负向查询条件:NOT、!=、、!、NOT IN、NOT LIKE等,会导致全表扫描 b)%开头的模糊查询,会导致全表扫描

【强制】使用IN不能超过200

【建议】UNION ALL 代替 UNION操作。

【建议】order by的顺序尽量与索引保持一致

【强制】大批量更新凌晨操作,避开高峰

看完上述内容,你们对mysql数据库的规范有哪些有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI