文档简介(最多显示3000字):
阿⾥——数据库设计规范(转⾃阿⾥平台,仅学习使⽤)阿⾥——数据库设计规范(转⾃阿⾥平台,仅学习使⽤)基于阿⾥数据库设计规范扩展⽽来设计规范1.【推荐】字段允许适当冗余,以提⾼查询性能,但必须考虑数据⼀致。冗余字段应遵循:不是频繁修改的字段。不是varchar超长字段,更不能是text字段。正例:商品类⽬名称使⽤频率⾼,字段长度短,名称基本⼀成不变,可在相关联的表中冗余存储类⽬名称,避免关联查询。2.【推荐】单表⾏数超过500万⾏或者单表容量超过2GB,才推荐进⾏分库分表。说明:如果预计2年后的数据量根本达不到这个级别,请不要在创建表时就分库分表。3.【推荐】id必须是主键,每个表必须有主键,且保持增长趋势的,⼩型系统可以依赖于MySQL的⾃增主键,⼤型系统或者需要分库分表时才使⽤内置的ID⽣成器4.【强制】id类型没有特殊要求,必须使⽤bigintunsigned,禁⽌使⽤int,即使现在的数据量很⼩。id如果是数字类型的话,必须是8个字节。参见最后例⼦⽅便对接外部系统,还有可能产⽣很多废数据避免废弃数据对系统id的影响未来分库分表,⾃动⽣成id,⼀般也是8个字节5.【推荐】字段尽量设置为NOTNULL,为字段提供默认值。如字符型的默认值为⼀个空字符值串’’;数值型默认值为数值0;逻辑型的默认值为数值0;6.【推荐】每个字段和表必须提供清晰的注释7.【推荐】时间统⼀格式:‘YYYY-MM-DDHH:MM:SS’8.【强制】更新数据表记录时,必须同时更新记录对应的gmt_modified字段值为当前时间,命名规范1.【强制】表达是与否概念的字段,必须使⽤is_xxx的⽅式命名,数据类型是unsignedtinyint(1表⽰是,0表⽰否)。说明:任何字段如果为⾮负数,必须是unsigned。正例:表达逻辑删除的字段名is_deleted,1表⽰删除,0表⽰未删除。2.【强制】表名、字段名必须使⽤⼩写字母或数字,禁⽌出现数字开头,禁⽌两个下划线中间只出现数字。数据库字段名的修改代价很⼤,因为⽆法进⾏预发布,所以字段名称需要慎重考虑。说明:MySQL在Windows下不区分⼤⼩写,但在Linux下默认是区分⼤⼩写。因此,数据库名、表名、字段名,都不允许出现任何⼤写字母,避免节外⽣枝。正例:health_user,rdc_config,level3_name反例:HealthUser,rdcConfig,level_3_name3.【强制】表名不使⽤复数名词。说明:表名应该仅仅表⽰表⾥⾯的实体内容,不应该表⽰实体数量,对应于DO类名也是单数形式,符合表达习惯。4.【强制】禁⽤保留字,如desc、range、match、delayed等,请参考MySQL官⽅保留字。5.【强制】主键索引名为pk_字段名;唯⼀索引名为uk_字段名;普通索引名则为idx_字段名。说明:pk_即primarykey;uk_即uniquekey;idx_即index的简称。6.【强制】⼩数类型为decimal,禁⽌使⽤float和double。说明:float和double在存储的时候,存在精度损失的问题,很可能在值的⽐较时,得到不正确的结果。如果存储的数据范围超过decimal的范围,建议将数据拆成整数和⼩数分开存储。7.【强制】如果存储的字符串长度⼏乎相等,使⽤char定长字符串类型。
评论
发表评论