为了建立冗余较小,结构合理的数据库,设计数据库时必须遵循一定的规则,在关系型数据库中,这种规则就叫做范式。
范式就是符合某一种设计要求的总结,要想设计一个结构合理的关系型数据库,必须满足一定的范式。
在实际开发中最常见的设计范式有三种:
第一范式 : 每一列属性都是不可再分的属性值,确保每列保持原子性。
第一范式的合理遵循需要根据系统给的实际需求来确定,比如设计用户表的时候,地址这个属性,可以把地址设计成一个字段即可,但是如果系统经常访问地址的城市部分,那么一定要将地址这个属性重新拆分成省份、城市、详细地址多个部分存储。这样对用户信息操作的时候会非常方便,也提高了数据库的性能。
例子1-1
第二范式:确保表中的每列都和主键相关
第二范式比第一范式的基础上更进一层,第二范式需要确保数据库表中每一列都和主键相关,即一行数据只做一件事,而不能只和主键的某一部分相关(主要针对联合主键而言)。
不规范例子
这个表是以订单编号和商品编号为联合主键,但是商品名称和单位等字段仅仅和商品主键相关,在这里违反了第二范式。
第三范式:确保每列都和主键列直接相关,而不是间接相关
第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关
比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相关的关系,而不可以再订单表中添加关于客户的其他信息的字段。
正确例子