第7章 關聯式資料庫的正規化 7-1 正規化的基礎 7-2 功能相依 7-3 第一階到第三階正規化型式 7-4 多重值相依與第四階正規化型式

Slides:



Advertisements
Similar presentations
第五章 企业所得税、个人所得税.
Advertisements

财经法规与会计职业道德 Company Logo.
中考热点 空气中氧气含量的测定习题课.
专题19 自然灾害与防治.
人生格言: 天道酬勤 学院:自动化与电气工程学院 班级: 自师1201 姓名:刘 威.
财产行为税 是以纳税人拥有的财产数量或财产价值为征税对象或为了实现某种特定的目的,以纳税人的某些特定行为为征税对象而开征的税种。包括房产税、城镇土地使用税、车船税、土地增值税、资源税、印花税、城市维护建设税、 契税、耕地占用税等九个税种。由于其税收收入基本上为地方政府财政收入,所以又称为地方税。 除财产行为税以外,还有流转税、所得税两大类税收。
第五单元 社会生活的变迁 第1课时 衡量变化的尺子 ——— 时间和纪年 新围初中 王济洪.
(教育学博士,曾任中学副校长,兼职南京大学博士后)
服务热线: 菏泽教师招聘考试统考Q群: 菏泽教师统考教育基础模拟题解析.
第二单元 生产、劳动与经营.
大 播 海 直.
Chap 11 SQL基本查詢指令.
第七章:数据库设计理论基础.
死與生的自我掌握.
主题一 主题二 模块小结与测评 主题三 考点一 主题四 考点二 主题五 考点三 主题六 考点四 命题热点聚焦 考点五 模块综合检测 考点六.
第二章 股票.
岳阳市教学竞赛课件 勾股定理 授课者 赵真金.
会计学 第九章 财务会计报告.
第六章 結構化分析與設計 ─資料塑模.
An Introduction to Database System
第七章 财务报告 财务报告 第一节 财务报告概述 一、财务报告及其目标: 1、概念:财务报告是指企业对外提供的反映企业某一特定日期
5.3.1 平行线的性质.
第4章 数据库技术及应用 软件开发技术基础 计算机教学实验中心 2006.
第十课 创新意识与社会进步 1.辩证的否定观:辩证否定、形而上学的否定观
群組未知 水蜜桃每4個裝一盒,爸爸買了5盒,一共買了幾個水蜜桃? 爸爸想把20個水蜜桃平分給他的5個朋友,每個朋友可以得到幾個水蜜桃?
勾股定理 说课人:钱丹.
An Introduction to Database System An Introduction to Database System
政治第二轮专题复习专题七 辩 证 法.
狂賀!妝品系同學美容乙級通過 妝品系三甲 學號 姓名 AB 陳柔諺 AB 陳思妤 AB 張蔡婷安
資料庫系統 Database Systems
資料庫系統 Database Systems
課程名稱:資料庫系統 授課老師:李春雄 博士
課程名稱:資料庫系統 授課老師:李春雄 博士
Chap 7 關聯式資料庫的正規化.
Chap 10 SQL定義、操作與控制指令.
資料表正規化.
第 2 章 規劃關聯式資料庫.
正規化 Normalization.
PHP與MySQL 入門學習指南 凱文瑞克 著 第 21 章 資料庫管理概論.
CH06 正規化概述.
Chapter 3 正規化與各種合併.
資料庫簡介 郭士煒 助教.
表格正規化簡介 講授大綱: 第一正規化 資料表的切割 第二正規化 第三正規化 Boyce/Codd正規化 第四正規化 第五正規化
第4章 關聯式資料庫模型 4-1 關聯式資料庫模型的基礎 4-2 關聯式資料庫模型的資料結構 4-3 關聯式資料庫模型的完整性限制條件
第五章 关系数据理论 关系模型有严格的数学理论基础,也是目前应用最广泛的数据模型,关系规范化是指导数据库设计的重要理论。一个好的关系数据库是应该既可以供人们方便地获取信息,而又不产生过多的不必要的重复存储问题。可以说,规范化理论是数据模型优化的理论基础,对其他数据库的逻辑设计同样具有理论上的意义。 2018年12月6日7时18分.
Database Systems Design Part III : Normalization
人教版数学四年级(下) 乘法分配律 单击页面即可演示.
一、认真审题,明确作图目的。 二、作图按投影规律准确无误。 三、图线粗细分明。 四、需要保留作图线的一定保留。
八年级上册 第十三章 轴对称 等腰三角形及其性质 湖北省通山县教育局教研室 袁观六.
10.2 排列 2006年4月6日.
练习: 由三个不同的英文字母和三个不同的阿拉伯数字组成一个六位号码(每位不能重复),并且3个英文字母必须合成一组出现,3个阿拉伯数字必须合成一组出现,一共有多少种方法?
第26讲 解直角三角形的应用 考点知识精讲 中考典例精析 举一反三 考点训练.
八年级上册 第十一章 三角形 三角形的内角(第1课时) 湖北省咸宁市咸安区教育局教研室 王格林.
Dept. of Information Management OCIT February, 2002
第6章 資料庫設計與實體關聯模型 6-1 資料庫設計的基礎 6-2 實體關聯模型 6-3 建立實體關聯圖 6-4 實體關聯圖的常見錯誤
第 2 章 規劃關聯式資料庫.
变 阻 器 常州市北郊初级中学 陆 俊.
中级会计实务 ——第三章 固定资产 主讲:孙文静
資料庫管理系統 緒 論.
從 ER 到 Logical Schema ──兼談Schema Integration
会计基础 第二章 会计要素与会计等式 刘颖
第一部分 数字电路 第4章 组合逻辑电路 主讲教师:喻红.
几何画板5.03教 程 第三章 用变换菜单作图.
线段 射线 直线.
第四章 基本平面图形 线段、射线、直线.
1.理解力和运动的关系,知道物体的运动不需要力来维持。
分配律 ~ 觀念 15 × 15 × + 15 × 乘法公式 蘇德宙 老師 台灣數位學習科技股份有限公司
第3章 关系数据库 内容提要 关系模型的数据结构 关系模型的常用术语 关系数据库的完整性概念 数据库的关系运算 函数依赖的定义
美丽的旋转.
相关知识回顾 1.垂线的定义: 2.线段中点的定义: 3.角的平分线的定义:
Presentation transcript:

第7章 關聯式資料庫的正規化 7-1 正規化的基礎 7-2 功能相依 7-3 第一階到第三階正規化型式 7-4 多重值相依與第四階正規化型式 第7章 關聯式資料庫的正規化 7-1 正規化的基礎 7-2 功能相依 7-3 第一階到第三階正規化型式 7-4 多重值相依與第四階正規化型式 7-5 合併相依與第五階正規化型式

7-1 正規化的基礎 7-1-1 關聯表為什麼需要正規化 7-1-2 正規化的型式

7-1 正規化的基礎-說明 「正規化」(Normalization)是一種標準處理程序來決定關聯表應該擁有哪些屬性,其目的是建立「良好結構關聯表」(Well-structured Relation)。 良好結構關聯表是一種沒有重複資料的關聯表,而且在新增、刪除或更新資料時,不會造成錯誤或資料不一致的異常情況。

7-1 正規化的基礎-目的 去除重複性(Eliminating Redundancy):就是建立沒有重複資料的關聯表,因為重複資料不只浪費資料庫的儲存空間,而且會產生資料維護上的問題。 去除不一致的相依性(Eliminating Inconsistent Dependency):資料相依是指關聯表中的屬性之間擁有關係,如果關聯表擁有不一致的資料相依,這些屬性就會在新增、刪除或更新資料時,造成異常現象。

7-1-1 關聯表為什麼需要正規化-說明 關聯式資料庫正規化的目的以一句話來說,就是避免資料重複,關聯表擁有非自然結合的屬性,就會造成資料重複的問題,稱為「非正規化型式」(Unnormalized Form)關聯表。

7-1-1 關聯表為什麼需要正規化-更新異常(Update Anomaly) 在Student_Course_Classes關聯表更新指定的屬性資料,因為資料重複儲存在多筆值組(記錄),需要同時更新多筆值組的資料。

7-1-1 關聯表為什麼需要正規化-刪除異常(Deletion Anomaly) 在Student_Course_Classes關聯表刪除值組,可能刪除合法資料。例如:CS101和CS121課程都有一筆值組,如下所示:

7-1-1 關聯表為什麼需要正規化-新增異常(Insertion Anomaly) 在Student_Course_Classes關聯表新增值組和刪除相反,可能只新增部分值組的資料。例如:新增一筆值組,課程編號是CS240,課程名稱為資料結構,學分是3,如下:

7-1-2 正規化的型式-階段 正規化的處理過程一共分為五個階段的正規化型式,每一階正規化型式是在處理不同的屬性間資料相依(Dependency)的問題,如下圖所示:

7-1-2 正規化的型式-前三階 第一階正規化型式(First Normal Form, 1NF):在關聯表刪除多重值屬性,讓關聯表只擁有單元值屬性。 第二階正規化型式(Second Normal Form, 2NF):滿足1NF且關聯表沒有「部分相依」(Partial Dependency)。 第三階正規化型式(Third Normal Form, 3NF):滿足2NF,且關聯表沒有「遞移相依」(Transitive Dependency)。

7-1-2 正規化的型式-BCNF+四和五階 Boyce-Codd正規化型式(Boyce-Codd Normal Form, BCNF):屬於一種廣意的第三階正規化型式,如果關聯表擁有多個複合候選鍵,刪除候選鍵間的功能相依。 第四階正規化型式(Fourth Normal Form, 4NF):滿足BCNF且沒有多重值相依。 第五階正規化型式(Fifth Normal Form, 5NF):滿足4NF且沒有合併相依。

7-2 功能相依 7-2-1 功能相依的定義 7-2-2 功能相依的種類 7-2-3 找出所有的功能相依 7-2-4 阿姆斯壯推論規則 7-2-5 功能相依的推論範例

7-2 功能相依-說明 功能相依(Functional Dependency,簡稱FD)是描述關聯表中屬性間的相依關係,這是關聯式資料庫正規化的基礎,簡單的說,關聯表正規化的第一步,就是在關聯表找出所有屬性間的功能相依。

7-2 功能相依-目的 當在關聯表找出所有屬性間的功能相依後,就可以幫助我們在關聯表找出: 重複資料:一些不該屬於此關聯表的屬性。 候選鍵和主鍵:如果關聯表的所有屬性都功能相依於一個或一組屬性,這個屬性就是候選鍵(Candidate Key)或主鍵(Primary Key)。

7-2-1 功能相依的定義-定義 定義7.1:功能相依(Functional Dependency)以關聯表R為例,若關聯表R擁有屬性A與B,A與B可以是複合屬性,我們可以說屬性B功能相依(Functional Dependent)於A,或A功能決定(Functional Determines)B,寫成: R.A→R.B 或簡寫成: A→B 若關聯表R擁有A→B的功能相依,則在關聯表R的每一對t1和t2值組且t1(A) = t2(A),可以得到:t1(B) = t2(B)。

7-2-1 功能相依的定義-說明 關聯表中如果2個值組的屬性A值是相同,我們就可以知道屬性B的值也一定相同,換句話說,如果知道屬性A的值,就可以知道屬性B的值,如下所示: A1→B1 A1→{ B1, B2, …Bn } { A1, A2, …, An }→B1 { A1, A2, …, An }→{ B1, B2, …Bn } 上述功能相依屬於一種單方向的關聯,A→B不表示B→A。

7-2-1 功能相依的定義-範例 在Students關聯表的一些功能相依範例,如下: sid→birthday sid→GPA sid→tel sid→{ name, birthday } sid→{ name, birthday, GPA } sid→{ name, birthday, GPA, tel } { sid, name }→{ name, birthday, GPA, tel }

7-2-2 功能相依的種類-種類 功能相依的種類主要可以分為三種: 完全相依(Full Dependency) 部分相依(Partial Dependency) 遞移相依(Transitive Dependency)

7-2-2 功能相依的種類-範例 關聯表範例是Student_Course_Instructors關聯表,如下圖所示:

7-2-2 功能相依的種類-完全相依 完全相依是指如果屬性A(複合屬性)和B是關聯表屬性,B功能相依於A,且B沒有功能相依於任何A的子集,則稱B完全功能相依於A。 例如:Student_Course_Instructors關聯表的完全相依,如下所示: sid→name c_no→title eid→instructor eid→office { sid,c_no,eid }→{ name,title,instructor,office }

7-2-2 功能相依的種類-部分相依 部分相依是指如果A(複合屬性)和B是關聯表的屬性,B是功能相依於A,如果刪除A子集的部分屬性,仍然不會影響功能相依,則稱B部分功能相依於A。 例如:Student_Course_Instructors關聯表的部分相依,如下所示: { sid, c_no }→name { sid, c_no}→title { eid, instructor}→office

7-2-2 功能相依的種類-遞移相依1 如果A、B和C是關聯表的屬性,A→B且B→C,則稱C是遞移相依於A,A→C。 例如:Student_Course_Instructors關聯表的遞移相依,如下所示: { sid, c_no, eid }→office 上述office屬性是遞移相依於{ sid, c_no, eid },因為: { sid, c_no, eid }→instructor instructor→office

7-2-2 功能相依的種類-遞移相依2

7-2-3 找出所有的功能相依 暴力演算法(Brute Force Algorithm):這是一種破解密碼常用的演算法,以作苦工方式嘗試所有可能的密碼組合,也就是說,在關聯表找出各屬性間的所有可能組合,然後一一檢查是否符合功能相依,如果關聯表的屬性很多,相對就需要花費更多的時間。 推論基礎演算法(Inference-based Algorithm):因為功能相依可以由其他功能相依來推論出,換句話說,推論基礎演算法是從關聯表已知的功能相依,使用推論規則推論出所有可能的功能相依。

7-2-4 阿姆斯壯推論規則-說明 阿姆斯壯推論規則(Amstrong’s Inference Rule)可以從某些已知的功能相依推論出其他隱含的功能相依,這是一種建全且完整的規則,其意義如下所示: 建全(Sound):阿姆斯壯推論規則不會導出多餘的功能相依。 完整(Complete):阿姆斯壯推論規則可以導出所有的功能相依。

7-2-4 阿姆斯壯推論規則-反身規則(Reflexitivity Rule) 如果屬性B是屬性A的子集合,則A→B,其定義如下: 若:{ B1, B2, …, Bn } { A1, A2, …., An } 則:{ A1, A2, …., An }→{ B1, B2, …, Bn } 例如:{ sid, name } { sid, name },所有屬性都是本身的子集合,所以: sid→sid、name→name和{ sid, name }→{ sid, name }。

7-2-4 阿姆斯壯推論規則-擴充規則(Augmentation Rule) 如果A→B且屬性C是屬性D的子集合,則AD→BC,其定義如下: 若:{A1,A2,….,An}→{B1,B2,…,Bn}且{C1,…,Cn}⊆{D1,...,Dn} 則:{A1,A2,….,An,D1,…,Dn}→{B1,B2,…,Bn,C1,...,Cn} 例如:sid→name且{ GPA } { birthday, GPA },則可以得到: { sid, birthday, GPA }→{ name, GPA }

7-2-4 阿姆斯壯推論規則-遞移規則(Transitivity Rule) 如果A→B且B→C,則A→C,其定義如下: 若:{A1,…,An}→{B1,…,Bn}且{B1,…,Bn}→{C1,...,Cn} 則:{ A1, ..., An }→{ C1, ..., Cn } 例如:sid→instructor且instructor→office,則可以得到: sid→office

7-2-4 阿姆斯壯推論規則-分解規則(Decomposition Rule) 如果A→BC,則A→B且A→C,其定義如下: 若:{ A1, …, An }→{ B1, …, Bn, C1, ..., Cn } 則:{A1,...,An}→{B1,...,Bn}且{A1,...,An}→{C1,...,Cn} 例如:sid→{ name, birthday },則可以得到: sid→name且sid→birthday

7-2-4 阿姆斯壯推論規則-聯集規則(Union Rule) 如果A→B且A→C,則A→BC,其定義如下: 若:{A1,…,An}→{B1,…,Bn}且{A1,…,An}→{C1,...,Cn} 則:{ A1, ..., An }→{ B1, ..., Bn, C1, ..., Cn } 例如:sid→name且sid→birthday,則可得: sid→{ name, birthday }

7-2-5 功能相依的推論範例-範例 現在只需使用推論規則,就可以從關聯表現有的功能相依推論出其他的功能相依。例如:關聯表已經擁有3條功能相依(Functional Dependency, FD),如下所示: 1: AB→D 2: BD→E 3: E→C 請使用上述3條功能相依推論出AB→C。

7-2-5 功能相依的推論範例-過程

7-3 第一階到第三階正規化型式 7-3-1 第一階正規化型式 – 1NF 7-3-2 第二階正規化型式 – 2NF 7-3-4 Boyce-Codd正規化型式 – BCNF 7-3-5 符合Boyce-Codd正規化型式的範例

7-3-1 第一階正規化型式 – 1NF(定義) 簡單的說,上述定義是指關聯表沒有多重值和複合屬性。 定義7.2:關聯表R符合第一階正規化型式(First Normal Form;1NF)是指關聯表的每一個定義域(Domain)都是單元值(Atomic Value)且只能是單元值,也就是刪除多重值屬性型態(Multi-value Attribute Type)與複合屬性型態(Composite Attribute Type)的屬性。 簡單的說,上述定義是指關聯表沒有多重值和複合屬性。

7-3-1 第一階正規化型式 – 1NF(範例) 例如:在Students關聯表儲存學生的選課資料,主鍵是學號sid,如下圖所示:

7-3-1 第一階正規化型式 – 1NF(正規化方法1) 方法一:分割成不同的關聯表 關聯表違反1NF,一階正規化可以將這些多重值屬性連同主鍵分割成新關聯表,如下圖所示:

7-3-1 第一階正規化型式 – 1NF(正規化方法2) 方法二:分割成值組 1NF關聯表的每一個屬性只能儲存單元值,所以一階正規化可以將多重值屬性改成重複值組,屬性的每一個多重值新增一筆值組,如下圖所示:

7-3-1 第一階正規化型式 – 1NF(正規化方法3) 方法三:分割成不同屬性 一階正規化還可以將多重值屬性配合虛值新增為關聯表的多個屬性,不過其先決條件是多重值的個數是有限的。 例如:一位學生規定只能修兩門課程,Students關聯表可以使用2組屬性儲存選課資料的課程編號與名稱,雖然符合1NF,但是若學生選課數不只兩門,就會產生資料無法新增的異常情況。

7-3-2 第二階正規化型式 – 2NF(定義) 定義7.3:關聯表R符合第二階正規化型式(Second Normal Form;2NF)是指關聯表符合1NF,而且所有非主鍵(Primary Key)的屬性都完全相依(Fully Dependency)於主鍵,也就是刪除所有部份相依的屬性。 簡單的說,上述定義是指關聯表中,不是主鍵的屬性需要完全相依於主鍵;反過來說,就是刪除關聯表所有部分相依(Partial Dependency)的屬性。

7-3-2 第二階正規化型式 – 2NF(範例) Students關聯表執行一階正規化後,已經分割成Students和Classes關聯表,

7-3-2 第二階正規化型式 – 2NF(功能相依) Classes關聯表的主鍵是(sid, c_no, eid),關聯表已知的功能相依,如下所示: FD1:{ sid, c_no, eid }→room FD2:c_no→title FD3:eid→{ instructor, office }

7-3-2 第二階正規化型式 – 2NF(正規化結果)

7-3-3 第三階正規化型式 – 3NF(定義) 定義7.4:關聯表R符合第三階正規化型式(Third Normal Form;3NF)是指關聯表符合2NF,而且所有非主鍵(Primary Key)的屬性都只能功能相依(Functional Dependency)於主鍵;沒有功能相依於其他非主鍵的屬性,即刪除遞移相依的屬性。 簡單的說,上述定義是指關聯表中不屬於主鍵的屬性都只能功能相依於主鍵,而不能同時功能相依於其他非主鍵的屬性,也就是刪除關聯表所有遞移相依(Transitive Dependency)的屬性。

7-3-3 第三階正規化型式 – 3NF(範例) 例如:繼續上一節的關聯表,執行Instructors關聯表的第三階正規化,如下圖所示:

7-3-3 第三階正規化型式 – 3NF(正規化結果) eid→office 是遞移相依

7-3-4 Boyce-Codd正規化型式 – BCNF(條件) Boyce-Codd正規化是在處理關聯表擁有多個候選鍵的特殊情況,Boyce-Codd正規化處理的關聯表至少擁有二個或更多個候選鍵,而且這兩個候選鍵是: 複合候選鍵。 在複合候選鍵之間擁有重疊屬性,也就是說至少擁有一個相同屬性。 如果關聯表沒有上述情況,3NF就等於BCNF。

7-3-4 Boyce-Codd正規化型式 – BCNF(範例1) 例如:學生身份證字號(SSN)與成績(grade)的Students關聯表,如下圖所示: Students關聯表擁有兩個候選鍵,如下所示: ( sid, c_no ) ( SSN, c_no )

7-3-4 Boyce-Codd正規化型式 – BCNF(範例2) 兩個候選鍵擁有重疊屬性c_no,在候選鍵之間擁有功能相依SSN→sid,因為身份證字號可以決定學生編號,如下所示: { sid, c_no }→SSN SSN→sid 上述SSN屬性可以決定sid屬性,不過SSN只是候選鍵的一部分,且不是超鍵(Superkey),所以違反BCNF。

7-3-4 Boyce-Codd正規化型式 – BCNF(定義) 定義7.5:關聯表R符合BCNF正規化型式(Boyce-Codd Normal Form;BCNF)是指關聯表所有主要的功能相依A→B,A一定且只可以是候選鍵(Candidate Keys),也就是刪除只功能相依候選鍵部分屬性的功能相依。 簡單的說,上述定義是指關聯表中,主要功能相依A→B的左邊屬性A稱為「決定屬性」(Determinant),決定屬性一定是候選鍵或主鍵。功能相依的標準語法,如下所示: 候選鍵或主鍵→其他屬性

7-3-4 Boyce-Codd正規化型式 – BCNF(正規化結果1) 例如:執行前述的關聯表Students關聯表的BCNF正規化,如下圖所示:

7-3-4 Boyce-Codd正規化型式 – BCNF(正規化結果2) 因為Students關聯表的sid和SSN兩個屬性間相互擁有功能相依,如下所示: sid→SSN SSN→sid 所以執行BCNF正規化分割Students關聯表時,也可以使用SSN屬性進行分割,如下圖所示:

7-3-5 符合Boyce-Codd正規化型式的範例(說明) Boyce-Codd正規化型式的條件是關聯表至少擁有二個或多個複合候選鍵,不過關聯表擁有兩個複合候選鍵,並不表示一定需要進行BCNF正規化,兩個複合候選鍵的關聯表仍可以符合BNCF。

7-3-5 符合Boyce-Codd正規化型式的範例(範例1) 例如:學生期末考座位的Exams關聯表,因為期末考分成多天進行考試,所以各科的考試座位可能不同,如下圖所示:

7-3-5 符合Boyce-Codd正規化型式的範例(範例2) 在Exams關聯表一共有兩個候選鍵,如下所示: ( sid, c_no ) ( seat_no, c_no ) 兩個候選鍵擁有重疊屬性c_no,不過在候選鍵之間並沒有功能相依seat_no→sid。 在Exams關聯表擁有的功能相依清單,如下所示: { sid, c_no }→seat_no { seat_no, c_no }→sid 上述2個功能相依的決定屬性都是候選鍵,符合BCNF定義。所以,Exams關聯表雖然擁有2組候選鍵,但是它不但符合3NF,而且符合BCNF。

7-4 多重值相依與第四階正規化型式 7-4-1 多重值相依(Multi-valued Dependency) 7-4-2 第四階正規化型式 – 4NF

7-4 多重值相依與第四階正規化型式 第四階正規化型式的基礎是「多重值相依」(Multi-valued Dependency, MVD),這是1977年R. Fagin所提出,屬於功能相依的推廣定義,或是說,功能相依是多重值相依的一種特例。 多重值相依的先決條件是關聯表擁有3個以上的屬性。

7-4-1 多重值相依(範例) 例如:一門課可能由多位講師授課,每一門課可以使用多本教課書,儲存這些資料的Course_Instructor_Textbook關聯表,簡稱為CIT,如下圖所示:

7-4-1 多重值相依(說明) CIT關聯表的屬性仍然有類似功能相依的相依情況,例如:對於每一門課,存在課程相關教課書的子集合,同樣的,對於每一門課,存在此課程相關講師的子集合,如下所示: 教課書textbook相依於課程course(在此的相依不是指功能相依)。 講師instructor相依於課程course(在此的相依不是指功能相依)。 上述相依關係就是「多重值相依」(Multi-valued Dependency),以雙箭頭表示寫成: course→→textbook course→→instructor

7-4-1 多重值相依(定義) 定義7.6:多重值相依(Multi-valued Dependency)以關聯表R為例,若關聯表R是由屬性A、B與C組成R(A, B, C),A、B與C可以是複合屬性,我們可以說屬性B多重值相依(Multi-valued Dependent)於A,或A多重決定(Multi-determines)於B,寫成: R.A→→R.B 或簡寫成: A→→B 若關聯表R擁有A→→B多重值相依,則表示存在t1和t2值組且t1(A) = t2(A),且另外存在二個值組t3和t4滿足下列條件: t1(A) = t2(A) = t3(A) = t4(A) t3(B) = t1(B) t3(C) = t2(C) t4(B) = t2(B) t4(C) = t1(C)

7-4-1 多重值相依(定義說明) 以CIT關聯表為例,因為關聯表CIT擁有course→→textbook(A→→B)多重值相依,所以在關聯表可以找到交換instructor屬性的2對值組t1、t2和t3、t4,如下圖所示:

7-4-1 多重值相依(異常狀況) 在CIT關聯表擁有很多重複資料,這些重複資料會導致新增或更新異常,例如:新增講師陳慶新教授程式語言這門課,雖然只有一門課,但是需要同時新增3筆值組,每一個值組是一本教課書,否則就會產生資料不一致的問題。

7-4-1 多重值相依(推論規則1) 多重值相依的推論規則是1977年C. Beeri、R. Fagin和J. H. Howard擴充自阿姆斯壯推論規則,其中前3個推論規是源自功能相依,如下所示: FD反身規則(FD Reflexitivity):如果屬性B是屬性A的子集合,則A→B。 FD擴充規則(FD Augmentation):如果A→B且屬性C是屬性D的子集合,則AD→BC。 FD遞移規則(FD Transitivity):如果A→B且B→C,則A→C。 MVD擴充規則(MVD Augmentation):如果A→→B且屬性C是屬性D的子集合,則AD→→BC。 MVD遞移規則(MVD Transitivity):如果A→→B且B→→C,則A→→C – B。

7-4-1 多重值相依(推論規則2) MVD互補規則(MVD Complementation):如果A→→B,則A→→(R – A – B)。 MVD聯集規則(MVD Union):如果A→→B且A→→C,則A→→BC。 MVD分解規則(MVD Decomposition):如果A→→BC,則A→→B C,A→→B - C且A→→C - B。 複製規則(Replication或稱為升級Promotion):如果A→B,則A→→B。 合併規則(Coalescence):如果A→→B且C→D,D是B的子集合,C與B的交集是空集合,則A→D。 偽裝遞移規則(Pseudotransitivity):如果A→→B且CB→→D,則CA→→D - CB。 混合偽裝遞移規則(Mixed Pseudotransitivity):如果A→→B且AB→→C,則A→→C - B。

7-4-2 第四階正規化型式 – 4NF(定義) 定義7.7:關聯表R符合第四階正規化型式(Fourth Normal Form;4NF)是指關聯表符合BCNF,而且所有多重值相依(Multi-valued Dependency)都是功能相依(Functional Dependency),也就是刪除多重值相依。 簡單的說,上述定義是指關聯表沒有存在的多重值相依,只有功能相依。

7-4-2 第四階正規化型式 – 4NF(正規化) CIT關聯表擁有2個多重值相依,如下所示: course→→textbook course→→instructor 執行第四階正規化,只需將多重值相依A→→B兩邊的屬性獨立成關聯表即可,如下圖所示:

7-5 合併相依與第五階正規化型式 7-5-1 合併相依(Join Dependency) 7-5-2 第五階正規化型式 – 5NF

7-5 合併相依與第五階正規化型式 關聯式資料庫正規化分析的第一階到第三階正規化型式是使用功能相依找出關聯表的重複資料。 在第四階正規化型式的基礎是多重值相依,這是功能相依的擴充。 第五階正規化型式的基礎則是擴充多重值相依的「合併相依」(Join Dependency)。 簡單的說,合併相依是指當關聯表分割成3個或更多關聯表後,一定能夠透過多次合併運算恢復成原來的關聯表。

7-5-1 合併相依(範例) 例如:每個科系(department)開多門課,課程(course)可以給多位學生修,學生(student)可以修不同科系的課,這3個屬性循環關聯儲存在同一個關聯表DCS,如下圖所示:

7-5-1 合併相依(說明) 將DCS分割成2個關聯表,看看是否可以解決資料重複的問題,分割方式有多種組合,如下所示: DC (department, course)、CS (course, student) 或: DC (department, course)、DS (department, student) 以第一種分割方式為例,在分割成2個關聯表DC和CS後,可以看到減少一些資料重複,不過如果將這2個關聯表以自然合併進行結合,可以發現多出幾筆值組,和原始關聯表不同。

7-5-1 合併相依(自然合併)

7-5-1 合併相依(投影分割) 將關聯表使用投影運算分割成3個關聯表:DC (department, course)、CS (course, student)、SD (student, department),如下圖所示:

7-5-1 合併相依(自然合併) 關聯表可以分割成3個或更多個關聯表,然後透過多次合併運算恢復成原始關聯表,就稱為「合併相依」(Join Dependency)。

7-5-1 合併相依(定義) 定義7.8:合併相依(Join Dependency)以關聯表R為例,若關聯表R等於自然合併運算R1 R2, … Rn,Ri是關聯表R屬性的子集合,我們可以說,關聯表R滿足合併相依(R1, R2, …, Rn)。 關聯表DCS可以使用投影運算分割成DC、CS和SD三個關聯表,執行DC CS SD自然合併運算就可以還原成原始DCS關聯表,所以關聯表DCS擁有合併相依。

7-5-1 合併相依(異常狀況1) 如果關聯表擁有合併相依,在新增和刪除時就會產生異常情況,例如:DCS關聯表擁有合併相依,如下圖所示:

7-5-1 合併相依(異常狀況2) 將上述關聯表以投影運算分割成DC、CS和SD三個關聯表,再將它使用合併運算結合起來,可以發現多了一筆值組,如下圖所示: 如果新增一筆值組{資訊系, 101, 江小魚},在分割和合併後,就不會多出一筆值組。

7-5-2 第五階正規化型式 – 5NF(定義) 定義7.9:關聯表R符合第五階正規化型式(Fifth Normal Form;5NF),也稱為投影-合併正規化型式(Project-Join Normal Form;PJNF),這是指關聯表符合4NF,且所有合併相依(R1, R2, …, Rn)的關聯表屬性子集Ri,都是關聯表R的超鍵(Superkey),也就是刪除合併相依。 上述定義是指關聯表沒有存在合併相依。以上一節的DCS關聯表為例,DCS關聯表擁有合併相依,所以不符合5NF。

7-5-2 第五階正規化型式 – 5NF(正規化) DCS關聯表擁有合併相依,可以使用投影運算進行再次的分割,並不符合5NF,所以需要執行第五階正規化,使用投影運算分割成3個關聯表,如下圖所示: