关系:指表中数据之间的关系。
关系:R(U,F),U={EntityA,EntityB,EntityC} F={EntityA->EntityB}
关系型数据库通过定义表格之间的关系来组织和存储数据,具体来说,就是通过主键和外键来建立联系。
常见的关系有三种:
Normal Forms(NF)
NF1:列不可再分
NF2:不包含非主属性对主键的部分函数依赖。
NF3:不包含非主属性对主键的传递函数依赖。
如果不满足规范化,那么可以通过无损连接分解来实现规范化:
即将一个表,拆分成多个表,从而实现规范化(但是这些表要有一个冗余属性用来使得:各个表利用这个属性连接后成为原先的表)。
R(U,F) U={A,B,C} F={A->B,B->C} A为主键,不满足3NF,进行模式拆分:
R1({A,B},{A->B}) R2({B,C},{B->C})可以看出B为连接属性,冗余。
自然连接
使用两张表相同属性的连接,如果没有相同属性,则按照笛卡尔积来连接。
分解关系模型,一定会有冗余,因为自然连接会使用冗余属性连接。
为什么要使用规范化?
降低冗余,使数据更容易保持一致性,完整性。
为了使用更高级别的规范化也会造成冗余,需要设计者权衡。