加入收藏 | 设为首页 | 会员中心 | 我要投稿 91站长网 (https://www.91zhanzhang.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL建表规范有哪几种

发布时间:2022-02-12 14:51:54 所属栏目:MySql教程 来源:互联网
导读:本篇文章给大家分享的是有关MySQL建表规范有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 一、MySQL建表规范 1.1、准入规范级别 必须:为强制要求,必须遵守,如有特殊需求需要评
      本篇文章给大家分享的是有关MySQL建表规范有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
 
一、MySQL建表规范
1.1、准入规范级别
必须:为强制要求,必须遵守,如有特殊需求需要评审
 
强烈建议:尽量遵守,如无法遵守请给出备注说明
 
建议:为最佳实践,开发人员可以根据实际情况有所调整
 
1.2、设计类核心规则
表字符集选择UTF8 【必须】
 
生产库存储引擎使用INNODB 【必须】
 
不在数据库中存储图片、文件,不使用大文本类型【必须】
 
不使用外键,由程序保证数据一致性【必须】
 
禁止使用存储过程、触发器 【必须】
 
每张表数据量控制在2000W以下 ,如预计会超出,需提前做好拆分或者归档迁移计划【强烈建议】
 
1.3、命名规范
库名、表名、字段名、索引名使用小写字母,以下划线_分割 【必须】
 
库名、表名、字段名、索引名不使用保留字 (关键字)【必须】
 
库名、表名、字段名不超过15个字符,需见名知意 【建议】
 
索引命名:【强烈建议】
 
唯一索引:“ux_表名_字段名前3字母[_字段名前3字母]”
 
非唯一索引:“ix_表名_字段名前3字母[_字段名前3字母]”
 
1.4、字段类规范
所有字段均定义为NOT NULL 【必须】
 
字符串统一单引号引用,而不是双引号【必须】
 
使用UNSIGNED存储非负整数 【必须】
 
使用DECIMAL存储精确浮点数 【必须】
 
使用TINYINT来代替ENUM类型 【必须】
 
拆分TEXT、BLOB类型字段,或者独立建表 【必须】
 
使用UNSIGNED INT存储ipv4 地址,而不是CHAR(15) 【强烈建议】
 
非中文字段使用varchar存储变长字符串 【强烈建议】
 
尽可能将字符转化为数字 存储【建议】
 
使用TIMESTAMP存储操作时间 *【建议】
 
1.5、索引类规范
单张表索引数量不超过5,单个索引字段数不超过5  【强烈建议】
 
避免冗余索引 【强烈建议】
 
重要的SQL必须被索引 【强烈建议】
 
       UPDATE、DELETE语句的WHERE条件列
 
       ORDER BY、GROUP BY、DISTINCT的字段
 
       多表JOIN的字段
 
 主键的选择要慎重 【强烈建议】
 
      首选使用非空的唯一键, 其次选择自增列或发号器
 
      不使用更新频繁的列,尽量不选择字符串列,不使用UUID MD5 HASH、
 
能不建立索引尽量不用索引 【强烈建议】
 
     不在null列上加索引
 
     不在低基数列上建立索引,例如“性别”
 
二、建表SQL审核平台
2.1、说明
此系统为了学习与减轻DBA的审核建表SQL的工作而做。达到自动审核基本规则问题
 
<1>优点:
 
<1>减少了DBA手动审核表的工作
 
<2>平台化操作,方便
 
<3>通过python自动匹配与审核规范
 
<2>缺点:
 
<1>、只有建表SQL审核
 
<2>、比较简单,后期可以使用inception,来审核建表SQL+上线SQL+备份等,请关注博客 http://blog.itpub.net/28823725/  后期会调研与应用
 
<3>审核说明:
 
利用python程序来分析
 
分为:error,suggest错误类别
 
按字段错误进行展示
 
<4>其他说明:
 
<1>此系统写于2015年6月初左右,为了学习inception 与python 为做,分享此文章只为了学习与交流

(编辑:91站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读