关系数据库设计的目标:决策一个特定的关系模式R是否是“好”的范式。如果R不是好的范式,则将R分解为{R1, R2, …, Rn},使得每一个子模式都是好的模式,而且分解是无损链接分解。过程中涉及理论是函数依赖理论和多值依赖理论。我们这里只讨论函数依赖。
1、 Functional Dependencies
函数依赖是另一种完整性约束,对于消除数据冗余很重要,能够系统地改进数据库设计。
一个关系模式R上的函数依赖,表示为:A1, A2, …, An B,A1,A2,……,An以及B都是R的属性,这样表达的含义是属性集合(A1, A2, …, An) 的值唯一确定属性集合B的值。
很好理解,A中任意一个值不能唯一确定一个B中的值,那么函数依赖A——>B不成立,反之,B中任意一个值能唯一确定一个A中的值,所以B——>A成立。
继续函数依赖的例子:
已知关系模式EMP(ENAME, SSN, STARTDATE,ADDRESS, PHONE),SSN是key,可以看到
SSN → ENAME,SSN → STARTDATE,SSN → ADDRESS,SSN → PHO