某大型互联网公司mysql设计规范
总体原则:
I: 反第三范式-->第三范式仅仅是在大学里用的,出来后,不能随便用;
II: 数据冗余 --> 一张表几百万甚至上千万数据,你不搞数据冗余,以后数据量上来了,查询肯定很慢。
具体原则:
1 字段设计:最短最小原则,够用即可,可以用varchar(10)的,不要用varchar(20),能用smallint的,不要用int
2 字段类型:能用数字的,不要用varchar,数字类型的,查询速度要优于字符串
3 字段数量:不要超过50个
4 字段命名:见名知意,简单明了,驼峰表示,不要用大小写,那是java语言的规范
5 常规表,应该都包含以下字段 create_user create_time update_user update_time
6 根据需要,设计is_delete字段,选择进行逻辑删除还是物理删除。
7 sys_version,存在并发更新的表,可以添加该字段:
update table set col1 = value1,sys_version = sys_version + 1 where id = id and sys_version = sys_version
8 尽量不要有join查询,如果确实需要join,join的数量,不能超过3个
9 不要设计物理外键
10 不要在sql语句上叫mysql进行隐士类型转换
11 尽量不要在mysql的字段上进行函数运算,尤其是索引列.
12 百万以上数据,再考虑建立索引,字符串类型要建立前置索引,索引数量,限制个5个以内。
13 不要用视图,存储过程
14 设置ts字段(timestamp),初始值为insert time,数据更新时为当时的更新时间