请选择 进入手机版 | 继续访问电脑版

爱分享吧

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1422|回复: 0

你们公司有哪些核心的MySQL应用开发规范?

[复制链接]

75

主题

75

帖子

1058

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1058
发表于 2019-9-2 16:16:38 | 显示全部楼层 |阅读模式
这里重点介绍下Schema设计规范
一、schema设计原则:
1、尽量小的原则,不浪费
2、为了高并发,禁止使用外键
3、每个表必须有主键
4、字符集和库级保持一致,不单独定义字段字符集

二、字段设计规范:
1、每个表建议使用自增列作为主键,避免字符型、UUID等作为主键
2、建议每个字段都设置NOT NULL
3、每个表建议不超过30-50个字段
4、优先选择utf8mb4字符集,它的兼容性最好,而且还支持emoji字符。如果对存储容量比较敏感的,可以改成latin1字符集
5、严禁在数据库中明文存储用户密码、身份证、信用卡号(信用卡PIN码)等核心机密数据,务必先行加密
6、存储整型数据时,默认加上UNSIGNED,扩大存储范围
7、建议用INT UNSIGNED存储IPV4地址,查询时再利用INET_ATON()、INET_NTOA()函数转换
8、如果遇到BLOB、TEXT字段,则尽量拆出去,再用主键做关联
9、在够用的前提下,选择尽可能小的字段,用于节省磁盘和内存空间
10、涉及精确金额相关用途时,建议扩大N倍后,全部转成整型存储(例如把分扩大百倍),避免浮点数加减出现不准确问题

三、常用数据类型参考:
1、字符类型建议采用varchar数据类型(InnoDB建议用varchar替代char)
2、金额货币科学计数建议采用decimal数据类型,如果运算在数据库中完成可以考虑使用bigint存储,单位:分
3、自增长标识建议采用int或bigint数据类型,如果该表有大量的删除及再写入就使用bigint,反之int就够用
4、时间类型建议采用为datetime/timestamp数据类型
5、禁止使用text、longtext等的数据类型
6、字段值如果为非负数,就加上unsigned定语,提升可用范围

四、SQL规范
1、在MySQL中SQL语句一般不区分大小写,全部小写
2、sql语句在使用join, 子查询一定先要进行explain确定执行计划
3、为每个业务收集sql list.


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|爱分享吧

GMT+8, 2021-4-14 12:57 , Processed in 0.085930 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表