第一范式,第二范式,第三范式,BCNF
在数据库设计中,范式是用来规范关系型数据库中的表和数据结构的一种规则。范式分为一到五个等级,每个等级都有各自的要求和特点。
第一范式
第一范式是关系型数据库设计的最基本要求,它保证数据库中的每个属性都是原子性的,不可再分。也就是说,每个属性不能再包含其他属性或者集合。
例如,一张学生信息表,如果其中的“成绩”字段包含了“数学成绩”、“语文成绩”、“英语成绩”等多个属性,那么这张表就不符合第一范式,需要拆分成多个表才能满足第一范式。
第二范式
第二范式是在满足第一范式的基础之上,保证每个表中的非主键属性完全依赖于主键。也就是说,每个非主键属性只能与主键有关联关系,而不能依赖其他非主键属性。
例如,一张订单信息表,其中的“商品名称”字段与“商品数量”、“商品价格”等字段都有关联关系,这个表就不符合第二范式,需要进行拆表。
第三范式
第三范式是在满足第二范式的基础之上,进一步保证表中的列都和主键直接相关,而不是间接相关。也就是说,每个非主键属性不能直接依赖其他非主键属性,而是必须依赖主键。
例如,一张订单信息表,其中的“商品种类”、“厂家名称”等属性都依赖于“商品编号”,而不是依赖于其他非主键属性,这个表就符合第三范式。
BCNF
BCNF是在满足第三范式的基础之上,进一步分解非主键属性之间的依赖关系,保证每个属性都与主键有直接关系,消除了数据冗余和数据异常。
例如,一张员工信息表,其中包含“部门名称”、“部门地址”等属性,这些属性都依赖于“部门编号”,但是“部门地址”属性与“部门名称”属性之间也存在依赖关系。这个表就不符合BCNF,需要进行拆分。