日期:2014-05-16 浏览次数:21153 次
Author:sakte
Time:2013/02/27
mysql开发规范文档
1.mysql数据库命名规范
2.表结构设计、数据类型选择
3.开发注意事项
1.mysql数据库命名规范
1.1 命名规范:
Table/view/procedure/function/package:
object类型简称+功能模块简称的小写字母+“_”+业务意义小写单词,如:
主键/外键/索引:
object类型简称+”_”+表名简称+字段名
object类型简称:
Table:t
View:v
Procedure:p
Function:fn
Package:pk
主键 :pk
外键 :fk
索引 :idx
Eg:
Trader后台功能:tbk_operate_log
搜索功能表:ts_operate_log
索引命令:idx_tablename_column
2.表结构设计、数据类型选择
2.1 常用数据类型:
整型:tinyint,smallint,mediumint,int,bigint。一般int就够用了
浮点型:DECIMAL(M,D)精准,不建议用DECIMAL,建议乘以固定倍数转换成整数存储,可以节省存储空间,且不会带来任何附加维护成本
字符型:varchar,char,ENUM和SET,text
字符列选择类型时,尽量不要使用TEXT数据类型,lob类型更是要坚决杜绝,仅当字符数超过20000时,可以采用text类型,且所有使用text类型的字段,必须和原表拆分,与原表主键单独存储在另外一个表里。它的处理方式决定了它的性能要低于char或者是varchar类型的处理。定长字段,建议使用CHAR类型,不定长字段尽量使用VARCHAR,且仅仅设定适当的最大长度,而不是非常随意的给一个很大的最大长度限定,因为不同的长度范围,MySQL也会有不一样的存储处理。对于状态字段,可以采用char类型,也可以尝试使用ENUM来存放,因为可以极大的降低存储空间,而且即使需要增加新的类型,只要增加于末尾,修改结构也不需要重建表数据。如果是存放可预先定义的属性数据呢?可以尝试使用SET类型,即使存在多种属性,同样可以游刃有余,同时还可以节省不小的存储空间。
日期时间:常用TIMESTAMP,date
需要精确(年月日时分秒)的时间字段,可以使用datetime,timestamp ;如果时间字段只需要精确到天,那就用date类型
2.2 表结构基本设计:
2.2.1.字段字段使用not null:
MySQL NULL类型和Oracle的NULL有差异,会进入索引中,如果是一个组合索引,那么这个NULL类型的字段会极大影响整个索引的效率。此外,NULL 在索引中的处理也是特殊的,也会占用额外的存放空间