千家信息网

mysql数据库的规范有哪些

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,今天就跟大家聊聊有关mysql数据库的规范有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。基础规范【建议】使用InnoDB存储引擎【强制】
千家信息网最后更新 2024年11月30日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数据库的规范有哪些有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

强制 字段 数据 类型 建议 索引 业务 数据库 查询 存储 前缀 后缀 开头 时间 系统 字符 文件 状态 设计 特殊 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 淘宝发布服务器不安全 曙光服务器管理ip是多少 什么是网络技术行业 学校网络安全手抄报图片 数字经济服务器概念股 网络安全隐患会被盗吗 1m云服务器可以带多少矿机 普陀区参考数据库销售收费标准 2019网络安全教育宣传片 打印服务器 自制 天澜网络技术工作室 数据库并发控制三个技术 汕头市林百欣计算机网络技术 计算机网络技术网络管理专科 为何下载东西出现资源服务器异常 两个小程序共用一个云数据库 办公软件开发公司收费 sql数据库只显示一个字 软件开发专业怎么挣钱啊 sql数据库求5 6返回值 学习网络技术有前景吗 中科院吕述望网络安全 服务器同时安装云锁和安全狗 qq空间如何增加服务器 腾讯网络安全赛 网络安全需要用到哪些设备 查找数据库中文变成靠靠靠 天空岛数据库是谁创建的 网络安全事件分哪几种形式 宜良方便软件开发市场报价
0