- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Mysql设计规范
模型设计流程
设计工具
待定
命名规范
基本原则
数据模型中的表(Table)、字段(Column)、索引(Index)、视图(View)等数据库对象均应遵循以下命名规范:
命名全部采用小写字母
名称的各部分之间用下划线_连接
命名应采用能够准确反映对象中文含义的英文单词或英文缩写,尽量不使用汉语拼音(中英文命名对照表详见附录A)
命名长度一般不超过32个字符
名称较长时使用英文缩写,相同缩写含义应相同
禁止使用mysql保留字
表名
表名构成:模块名前缀 + 表主体名 + 表后缀(可选)
模块名前缀:表归属模块
表主体名:准确表达表含义,尽量使用英文全称,表名较长时使用英文缩写
表后缀:可选项,表示关系(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 表时应使用相同类型的列,并且在列上有索引
避免使用存储过程、触发器、函数等
Insert 语句使用 batch 提交(insert into table values (),(),(),……),values 的个数不超过 500;sql 语句中 in 包含的值不超过 500
Update,
您可能关注的文档
最近下载
- 考研法律硕士专业基础(法学397)研究生考试2024年模拟试卷与参考答案.docx VIP
- 黑龙江地方课程人文与社会五年级上册教案.pdf
- 电解质代谢紊乱护理查房ppt课件.pptx
- 第五章 信号调理电路.ppt
- 中小学教师数据素养题库及答案(包含期末考试)(1).pdf
- 传递窗紫外灯表面消毒效果验证-嘉和众邦.pdf
- 2025届高考语文一轮复习名篇名句默写基础题训练含答案.doc
- 《中国民间故事》导读.pptx
- 高级供应链管理师职业技能鉴定考试题库资料(含答案).pdf
- IEEE Std 1936.1-2021 IEEE Standard for Drone Applicatons Framework.人机应用框架标准.pdf
文档评论(0)