2.5关系范式 函数依赖 ■关系范式 分解
2.5 关系范式 ▪ 函数依赖 ▪ 关系范式 ▪ 分解
关系数据库逻辑设计 针对具体问题,如何构造一个适合于它的数据模式 数据库逻辑设计的工具——关系数据库的规范化理论 数据依赖(函数依赖,多值依赖) 是通过一个关系中属性间值的相等与否体现出来的数 据间的相互关系 是现实世界属性间相互联系的抽象 是数据内在的性质 是语义的体现
关系数据库逻辑设计 – 针对具体问题,如何构造一个适合于它的数据模式 – 数据库逻辑设计的工具──关系数据库的规范化理论 数据依赖(函数依赖 ,多值依赖) • 是通过一个关系中属性间值的相等与否体现出来的数 据间的相互关系 • 是现实世界属性间相互联系的抽象 • 是数据内在的性质 • 是语义的体现
函数依赖 设R是一关系模式,且有属性集 ∈R,βcR 函数依赖 →>β 在R上成立当且仅当对任意合法关系(R)2若r的任 意两条元组t1和t2在属性集α上的值相同,则他们在 属性集β上的值也相同.即, t1[cx]=2[ax]→t1[B]=12[β]
函数依赖 • 设R 是一关系模式, 且有属性集 R , R • 函数依赖 → 在R上成立 当且仅当对任意合法关系r(R), 若r 的任 意两条元组t1 和t2 在属性集上的值相同, 则他们在 属性集 上的值也相同. 即, t1 [] = t2 [] t1 [ ] = t2 [ ]
K是关系模式R的超键当且仅当K→>R K是R的候选键当且仅当 K→R,并且 没有acK使α→R
•K 是关系模式R 的超键当且仅当 K → R •K 是R 的候选键当且仅当: K → R, 并且 没有 K 使 → R
函数依赖的使用: 我们用涵数依赖来 检查关系在给定函数依赖之下是否合法 若关系r在函数依赖集F下是合法的,则称r满足 F 对合法关系集合指定约束 如果R上的所有合法关系都满足F则称F在R上 成立 注意:关系模式的特定实例可能满足一函数依赖,但该函 数依赖不是在所有合法实例上成立
函数依赖的使用: 我们用函数依赖来: •检查关系在给定函数依赖之下是否合法. 若关系r 在函数依赖集F 下是合法的, 则称r 满足 F. •对合法关系集合指定约束 如果R 上的所有合法关系都满足F, 则称F 在R上 成立. 注意: 关系模式的特定实例可能满足一函数依赖, 但该函 数依赖不是在所有合法实例上成立
平凡依赖 被所有关系实例都满足的函数依赖称为平凡的 例如 customer-name. oan-number> customer name customer-name-> customer-name 般地,若β≤a则α→>β是平凡的
平凡依赖 被所有关系实例都满足的函数依赖称为平凡的 例如 customer-name, loan-number → customername customer-name → customer-name 一般地,若 则 → 是平凡的
函数依赖: 如下的涵数依赖是传递的 α→B,(Ba),Bα,B→y, 称y传递依赖于α CTO(CNO, TNAME, ADDRESS, OFFICE) CNO→ TNAME, TNAME→> ADDRESS transitive dependency CNO→→ ADDRESS
CTO(CNO,TNAME,ADDRESS,OFFICE): CNO→TNAME,TNAME→ ADDRESS transitive dependency: CNO→ADDRESS ▪ 如下的函数依赖是传递的: → ,( ), , → , 称 传递依赖于 . 函数依赖:
部分依赖: if →>β,ya,y→B B部分依赖于α CTO(CNO, TNAME, ADDRESS, OFFICE) CNO→ TNAME, TNAME→> ADDRESS partial dependency (CNO, TNAME)→ ADDRESS
▪ if: → , , → 部分依赖于 . CTO(CNO,TNAME,ADDRESS,OFFICE): CNO→TNAME,TNAME→ ADDRESS partial dependency: (CNO, TNAME)→ADDRESS 部分依赖:
函数依赖集的闭包: 给定函数依赖集F,存在其他函数依赖被F逻辑蕴含 例如:如果A→B且B→C,则可推出A→C 被F逻辑蕴含的全体函数依赖的集合称为F的闭包 用F+表示F的闭包 可利用 Armstrong公理找出F+ 若Bc,则α→B (自反) 若α→>凤则ya->yB (增广) 若α→>B且β→y,则a→y(传递) 这些规则是 正确的(只产生确实成立的函数依赖) 完备的(产生所有成立的函数依赖)
• 给定函数依赖集F, 存在其他函数依赖被F 逻辑蕴含. – 例如: 如果 A → B 且 B → C, 则可推出 A → C • 被F 逻辑蕴含的全体函数依赖的集合称为F 的闭包. – 用F + 表示F 的闭包. • 可利用Armstrong公理找出 F + : – 若 , 则 → (自反) – 若 → , 则 → (增广) – 若 → 且 → , 则 → (传递) • 这些规则是 – 正确的 (只产生确实成立的函数依赖) – 完备的 (产生所有成立的函数依赖). 函数依赖集的闭包:
·下列过程计算函数依赖集F的闭包 F+=F repeat for each F中的函数依赖∫ 对∫应用自反和增广规则 将结果函数依赖加入F for each ft中的一对函数依赖f1和f if若f和2可利用传递规则合并 then将结果函数依赖加入F until不再变化 注意:后面会介绍完成此任务的另一过程
• 下列过程计算函数依赖集F的闭包: F + = F repeat for each F +中的函数依赖 f 对f 应用自反和增广规则 将结果函数依赖加入F + for each F +中的一对函数依赖f1 和f2 if 若 f1 和f2 可利用传递规则合并 then将结果函数依赖加入F + until F + 不再变化 注意: 后面会介绍完成此任务的另一过程