数据库的范式

第一范式 1NF

属性不可分,属性的原子性约束,要求属性不可再分解,数据库表的每一列也称属性都是不可分割的原子数据项,不能是集合、数组非原子数据项。如果实体中某个属性有多个值,必须拆分为不同的属性。

第二范式 2NF

满足第一范式的基础上,每一个非主属性(不在主键中的列)必须完全依赖于候选键。(2NF是对记录的唯一性约束,要求记录有唯一标识,即实体的唯一性,更通俗的说法就是一个表必须有主键ID)没有部分依赖

候选键:在数据库中,候选键是可以唯一标识每个表中的每个记录的一组属性。候选键具有唯一性和最小性质,这意味着它们必须是唯一的,并且没有任何一个属性可以从候选键中删除而仍然保持其唯一性。

举个例子,假设一个表包含三个属性:ID、姓名和电子邮件地址。在这种情况下,候选键可以是ID、姓名和电子邮件地址的组合,因为它可以唯一标识每个记录。另一方面,只选择ID作为候选键可能不够,因为两个人可能会有相同的ID,但是他们的姓名和电子邮件地址是不同的,因此无法唯一标识每个记录。

候选键在数据库设计中非常重要,因为它们可以确保数据的完整性和一致性。在创建表时,应该选择一个或多个候选键,并将其设置为主键或唯一键,以确保数据的唯一性和完整性。

第三范式 3NF

在满足第二范式上,每个非主属性不依赖于其他非主属性,任何非主属性直接依赖于主键,不能传递依赖于主属性,即表每一列只与属性直接相关,而不是间接相关,表中的每一列只能依赖于主键,每一个非主属性既不部分依赖于超建,也不传递依赖于超键没有传递依赖

超键:在数据库中,超键是可以唯一标识表中每个记录的一组属性,但不一定具有最小性质。也就是说,超键可以包含比候选键更多的属性,因为它们可以标识表中的每个记录,但是可以通过删除其中一个属性而仍然保持其唯一性。

举个例子,假设一个表包含ID、姓名、电子邮件地址和电话号码这四个属性。超键可以是ID、姓名和电话号码的组合,因为它们可以唯一标识每个记录。但是这个超键不是候选键,因为它可以包含电子邮件地址这个属性,这个超键包含的属性比候选键多,但是删除电子邮件地址属性后仍然可以唯一标识每个记录。

超键在数据库设计中也很重要,因为它们可以帮助设计师确定最合适的候选键和主键。在创建表时,应该识别出所有可能的超键,并选择一个最小的候选键作为主键或唯一键,以确保数据的唯一性和完整性。

巴斯-科德范式 BCNF

满足第三范式上,任何主键属性不能对主键子集依赖(消除主属性对候选码的部分函数依赖和传递依赖)。BC范式既检查非主属性,又检查主属性。当只检查非主属性时,就成立第三范式。

若一个关系达到了第三范式,并只有一个候选码,或者每个候选码都是单属性,则该关系自然达BC范式。

把超建改成候选键,比如一个属性又可以依赖于

你可能感兴趣的:(数据库,mysql)