【规则2-1.1】
库的创建原则,根据项目和模块划分,尽量保持相同垂直业务模块的表位于同一库。
【规则2-1.2】
库的默认引擎统一为InnoDB
语言编码统一为utf8_general_ci
【规则2-1.3】
库的命名规则:
库名的字符范围为[a-z0-9]
,统一为小写字母,按下划线_
分割,需简介明了,按项目字母简写_模块名规则排列,长度不超过30个字符, , 比如项目为bx,用户模块为user 则用户数据库的命名为bx_user。
【规则2-1.4】
数据库的设计,应该是做到冷热数据分离。
【规则2-2.1】
数据表的创建原则,根据模块划分,尽量保持单一业务模块为一个数据表系列。
【规则2-2.2】
数据表的命名,字符范围为[a-z09]
,统一为小写字母,按下划线分割。每个表必须有自增主键,表与表的相关联字段,必须尽可能保持相同,前缀必须带上项目简写。
例:
项目bx,用户数据表,便为bx_user, bx_user_info, bx_user_extend等。
【规则2-2.3】
表字段的创建原则,在InnoDB引擎下,用尽量少的存储空间在存储字段数据,减少内存占用,比如 int varchar等,必须指定长度,能用smallint tinyint 的 就不要用int,能用int(8)的,就不要用int(10);每个字段尽可能保持NO NULL 和默认值,增加查询和索引效率。
【规则2-2.4】
数据表的索引创建原则,命名简洁明了,尽量与字段名产生关联,bx_user的username字段建立索引的名称,需为bx_user_username_index,也可简写为bxu_username。
【规则2-2.5】
每个表必须有主键索引,索引应该合理,并每个表不超过6个索引,慎用复合索引。
【范式2-3.1】
字段名必须具备原子性,即不可能产生下一个子字段,比如name。
【范式2-3.2】
每个表必须有主键和主键索引。
【范式2-3.3】
一个表,非考虑扩展性情况下,不能有冗余字段,即尽量保持精简和减少无意义字段,但在为了减少join查询,可适当在不同表添加相同字段
。