当前位置:
文档之家› 数据库系统概念原书第六版第八章
数据库系统概念原书第六版第八章
8.5.1 BCNF分解
Database System Concepts - 5th Edition, July 28, 2005.
7.2
©Silberschatz, Korth and Sudarshan
Database System Concepts - 5th Edition, July 28, 2005.
/*删NF· 算法通过为正则覆盖中的每个依赖显式地构造一个模式确保依赖的保持。 该算法通过保证至少有一个模式包含被分解模式的候选码,确保该分解是一个 无损分解。
Database System Concepts - 5th Edition, July 28, 2005.
7.9
©Silberschatz, Korth and Sudarshan
8.6.3
4NF 分解算法
Database System Concepts - 5th Edition, July 28, 2005.
7.10
©Silberschatz, Korth and Sudarshan
第八章 关系数据库设计
8.5 分解算法4
8.6 使用多值依赖的分解
8.7 更多的范式
8.8 数据库设计过程 8.9 时态数据建模
Database System Concepts - 5th Edition, July 28, 2005.
7.1
©Silberschatz, Korth and Sudarshan
7.3
©Silberschatz, Korth and Sudarshan
Database System Concepts - 5th Edition, July 28, 2005.
7.4
©Silberschatz, Korth and Sudarshan
8.5.1.2 BCNF分解算法
result := {R }; done := false; 计算F +; while (not done) do if (result中存在模式Ri,不属于BCNF) then begin 令 为一个在Ri上成立的非平凡函数依赖,满足 Ri 不属于F +,并且 = ; result := (result – Ri ) (Ri – ) (, ); end else done := true;
这个算法产生的分解不仅是一个BCNF分解,而且是一 个无损分解。
Database System Concepts - 5th Edition, July 28, 2005.
7.5
©Silberschatz, Korth and Sudarshan
8.5.2 3NF 分解算法
令Fc为F的正则覆盖; i := 0; for each Fc中的函数依赖 i:=i+1; Ri:= ; if 模式RJ,j=1,2,3…,i都不包含R的候选码 then i:=i+1; Ri:=R的任意候选码; repeat /*(可选)移除冗余关系*/
7.7
©Silberschatz, Korth and Sudarshan
8.5.4 BCNF和3NF的比较
BCNF: 分解是无损的 保持依赖 不得不用控制表示数据项间的某些可能有意义的联系,并 且存在信息重复的问题 BCNF是在3NF基础上的改进式,BCNF比3NF更为严格。 3NF: 分解是无损的 可能无法保持依赖
Database System Concepts - 5th Edition, July 28, 2005.
7.8
©Silberschatz, Korth and Sudarshan
8.6 使用多值依赖的分解
Database System Concepts - 5th Edition, July 28, 2005.
if模式Rj包含于另一个模式Rk中
then Rj:=Ri; i:=i-1; Until 不再有可以删除的RJ return (R1, R2, ..., Ri)
Database System Concepts - 5th Edition, July 28, 2005. 7.6 ©Silberschatz, Korth and Sudarshan