- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
mysql设计规范.
Mysql设计规范
模型设计流程
设计工具
待定
命名规范
基本原则
数据模型中的表(Table)、字段(Column)、索引(Index)、视图(View)等数据库对象均应遵循以下命名规范:
命名全部采用小写字母
名称的各部分之间用下划线_连接
命名应采用能够准确反映对象中文含义的英文单词或英文缩写,尽量不使用汉语拼音(中英文命名对照表详见附录A)
命名长度一般不超过32个字符
名称较长时使用英文缩写,相同缩写含义应相同
禁止使用mysql保留字
默认使用 innodb 存储引擎,使用其他引擎必须注明缘由
使用utf8字符集
表必须有主键,推荐使用UNSIGNED自增列作为主键
避免使用存储过程、触发器、视图、自定义函数等
表名
表名构成:模块名前缀 + 表主体名 + 表后缀(可选)
模块名前缀:表归属模块
表主体名:准确表达表含义,尽量使用英文全称,表名较长时使用英文缩写
表后缀:可选项,表示关系(rlt)、明细(dtl)、周期(mm/dd)等表的类型
字段名
字段名需准确表达字段的含义
可根据情况增加表名前缀
不同表中相同字段名的含义、字段类型、取值含义应相同
不使用数据库关键字
尽量使用英文缩写
尽量不使用单个单词(约定的通用字段除外)
字段全部定义为 NOT NULL
主键名
主键名构成:pk_ + 表名
名称较长时使用表名缩写减小长度,注意表名缩写的唯一性
索引
索引命名
索引名称全部使用小写
非唯一索引按照“idx_字段名称_字段名称[_字段名称]”进行命名
唯一索引按照“uq_字段名称_字段名称[_字段名称]”进行命名
建立索引规范
唯一索引由 3 个以下字段组成并且字段都是整形时,使用唯一索引作为主键。没有唯一索引或唯一索引不符合上述条件时,使用自增 id 作为主键。注意唯一索引不和主键重复
单张表的索引数量控制在字段数的 20%以内,至多 5 个,索引数量过多会导致写入性能 的显著下降
合理创建复合索引。首先要避免冗余,ix_a_b_c 相当于同时创建了 ix-_a,ix_a_b,ix_a_b_c 三个索引;其次要避免索引过大,建议最大 4 列复合,列数过多很难提升索引的区分度,反而降低索引的性能
合理使用覆盖索引
对于长度大于 100 的 varchar 字段建立索引时,使用其他方法
使用 EXPLAIN 判断 SQL 语句是否合理使用索引,尽量避免 extra 列出现 FILE SORT,USINGTEMPORARY
索引不只用于 select 查询,update 和 delete 语句也需要根据 where 条件合理设计索引
where 条件中的非等值条件(IN,BETWEEN,,=,,=)会导致后面的条件无法使用索引
视图
视图名构成:v_ + 模块名前缀 + 视图主体名 + 后缀(可选)
数据类型规范
数值型
存储精确浮点数使用 DECIMAL,替代 FLOAT 和 DOUBLE;
根据字段长度选择合适的字段类型,如数字类型有 tinyint,smallint,mediuint,int,bigint 五种类型,分别占用 1byte,2byte,3byte,4byte,8byte。需要特别注意,int(10)和 int(2)无区别,应该采用 tinyint(2)替代 int(2);
尽量使用 tinyint 代替 enum 和 set 类型,减少后台类型转换;
使用UNSIGNED存储非负数值
字符型
Varchar(N)中,N 表示的是字符数不是字节数,如 varchar(255),可以最大存储255 个汉字。N 值应尽可能小,单表 varchar 字段最大长度为 65536 个字节,在排序和创建临时表等内存操作时,会使用 N 值来申请内存,而非存储值的实际长度
日期时间型
存储年使用 year 类型,存储日期使用 date 类型
存储日期使用 date 类型
存储时间(精确到秒)使用timestamp 类型, 而非 datetime 类型, 因为 timestamp 使用 4 个字节,而 datetime 使用 8 个字节
其它数据类型
使用 int unsigned 存储 IP 地址,通过 MySQL 函数 inet_ntoa 和inet_aton 来进行转化
避免使用 text、blob 字段类型
SQL 语句设计
使用 prepared statement,可以提升性能并且避免 SQL 注入
降低 SQL 的复杂度,把 MySQL 尽量当做存储使用
避免在 SQL 语句中进行数学运算、函数计算、逻辑判断等操作
避免多表 join,尽量拆分成多条查询。如无法避免,在 join 表时应
文档评论(0)