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站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
热点阅读