数据库设计规范
具体规范:
- 表中要避免字段数据为空,要设置默认值,字符型的默认值为一个空字符值串,数字型的默认值为数值0。
- 尽可能的存取单一实体的属性,避免数据冗余、操作数据复杂。
- 表中每一条数据都必需有唯一表示符,即每个表都必需有主键
- 表中字段要有统一前缀,让人容易读懂
- 尽可能的去遵守三大范式(为了某些目的,提升效率,可以进行反范式设计)
设计规范的原因:
- 遵循范式能够减少数据的冗余,减少储存空间。
- 保持表的简洁,对表的增删改查清晰
- 能够更加明确表内容是什么
- 减少每张表的索引使用,因为通过索引进行非聚集索引查询效率较聚集索引低。维护索的树结构消耗性能
数据库设计三大范式:
范式即我们在创建数据库时应该遵守的规律。
第一范式:
数据库中所有字段数据都要具有原子性(即不可再分)。如:不能写一个学生字段,把姓名、性别、专业等属性写成一个字段。这个原子性是主观的,有些属性是不需要拆开写的,这样会提高效率。
第二范式:
在符合第一范式的基础上,还要满足表中的每一条数据都是唯一的、可标识的,即可以根据主键查询到任意一条唯一数据。并且非主键字段属性都必需完全依赖主键,即不能部分依赖主键。要确切的查询到某一条数据中的某个字段数据,需要知道这条数据主键的全部数据,不能根据主键中某一字段就能查询到。这样的话会导致数据的冗余,要将其拆分为多个表,使其符合第二范式。
第三范式:
再符合第二范式的基础上,还要满足非主属性字段(不包含在任何候选键的字段)不能对其他非主属性字段产生依赖,即不能根据非主属性字段就能查询到想要得到的某个数据。
范式的优缺点
优点:
- 减少数据的冗余。
- 让数据之间的结构更加明确
- 第三范式被认为在空间和时间(效率)上达到了最好的平衡。
缺点:
- 范式级别越高,所需要建立的表越多,则导致多表操作次数变多,这导致效率降低
- 但有的时候为了提高数据库的效率,通过增加一定的冗余数据,提高效率。达到我牺牲空间换取效率的效果,称为反范式化。