20140509 Chapter 15 Basics of Functional Dependencies and
2014/05/09 Chapter 15 Basics of Functional Dependencies and Normalization for Relational Databases - 関係データベースでの関係従属性と正規化の基本 B 4 halken 1
v非公式設計ガイドライン (Informal Design Guideline) v関数従属性 (Functional Dependencies) v正規化 (Normalization) Ø 第 1正規形 (First Normal Form) Ø 第 2正規形 (Second Normal Form) Ø 第 3正規形 (Third Normal Form) Ø ボイス・コッド正規形 (Boyce-Codd Normal Form) Ø 多値従属性と第 4正規形 (Multivalued Dependency and Fourth Normal Form) Ø 結合従属性と第 5正規形 (Join Dependencies and Fifth Normal Form) 2014/05/09 Outline 2
v非公式設計ガイドライン (Informal Design Guideline) v関数従属性 (Functional Dependencies) v正規化 (Normalization) Ø 第 1正規形 (First Normal Form) Ø 第 2正規形 (Second Normal Form) Ø 第 3正規形 (Third Normal Form) Ø ボイス・コッド正規形 (Boyce-Codd Normal Form) Ø 多値従属性と第 4正規形 (Multivalued Dependency and Fourth Normal Form) Ø 結合従属性と第 5正規形 (Join Dependencies and Fifth Normal Form) 2014/05/09 Outline 3
1. 属性に明確な意味を与える (Imparting Clear Semantics to Attributes in Relations) 2014/05/09 example 5
2. 冗長な情報と更新異常 2014/05/09 (Redundant Information in Tuples and Update Anomalies) 8
削除異常 (Deletion Anomalies) 2014/05/09 v例)”Borg, James E. ”を削除したい v. Dnumber=1の部署情報が失われてしまう! 12
4. 偽タプルの発生 2014/05/09 (Generation of Spurious Tuples) 17
4. 偽タプルの発生 2014/05/09 (Generation of Spurious Tuples) 18
v非公式設計ガイドライン (Informal Design Guideline) v関数従属性 (Functional Dependencies) v正規化 (Normalization) Ø 第 1正規形 (First Normal Form) Ø 第 2正規形 (Second Normal Form) Ø 第 3正規形 (Third Normal Form) Ø ボイス・コッド正規形 (Boyce-Codd Normal Form) Ø 多値従属性と第 4正規形 (Multivalued Dependency and Fourth Normal Form) Ø 結合従属性と第 5正規形 (Join Dependencies and Fifth Normal Form) 2014/05/09 Outline 21
関数従属性 (Functional Dependency) Name Project Birth_year andy RMX 1993 halken SSQL 1992 ikuta WIX 1992 moe RMX 1992 ryosuke WIX 1992 yusuke SSQL 1992 2014/05/09 example 23
関数従属性 (Functional Dependency) 2014/05/09 v. FDの図表表記(diagrammatic notation) 24
v非公式設計ガイドライン (Informal Design Guideline) v関数従属性 (Functional Dependencies) v正規化 (Normalization) Ø 第 1正規形 (First Normal Form) Ø 第 2正規形 (Second Normal Form) Ø 第 3正規形 (Third Normal Form) Ø ボイス・コッド正規形 (Boyce-Codd Normal Form) Ø 多値従属性と第 4正規形 (Multivalued Dependency and Fourth Normal Form) Ø 結合従属性と第 5正規形 (Join Dependencies and Fifth Normal Form) 2014/05/09 Outline 25
キーの定義とキーに関与する属性 (Definitions of Keys and Attributes Participating in Keys) いくつかの候補キーの一部である属性 v非主属性(nonprime attribute) 2014/05/09 v主属性(prime attribute) どの候補キーの一部になっていない属性 30
v非公式設計ガイドライン (Informal Design Guideline) v関数従属性 (Functional Dependencies) v正規化 (Normalization) Ø 第 1正規形 (First Normal Form) Ø 第 2正規形 (Second Normal Form) Ø 第 3正規形 (Third Normal Form) Ø ボイス・コッド正規形 (Boyce-Codd Normal Form) Ø 多値従属性と第 4正規形 (Multivalued Dependency and Fourth Normal Form) Ø 結合従属性と第 5正規形 (Join Dependencies and Fifth Normal Form) 2014/05/09 Outline 31
第 1正規形 (First Normal Form) 多値属性(multivalued attributes)や複合属性(composite attributes)を許さない ⇒全ての属性の値は単一値である(atomic values) 2014/05/09 v定義 v非正規形の例 32
第 1正規形 (First Normal Form) 2014/05/09 3. 属性を増やす方法 Dname Dnumber Dmgr_ssn Dlocation 1 Dlocation 2 Dlocation 3 Research 5 333445555 Bellaire Sugerland Houston Administration 4 987654321 Stafford Headquarters 1 888665555 Houston v. NULLが無駄に発生してしまう! 36
第 1正規形 (First Normal Form) 2014/05/09 vexample 38
v非公式設計ガイドライン (Informal Design Guideline) v関数従属性 (Functional Dependencies) v正規化 (Normalization) Ø 第 1正規形 (First Normal Form) Ø 第 2正規形 (Second Normal Form) Ø 第 3正規形 (Third Normal Form) Ø ボイス・コッド正規形 (Boyce-Codd Normal Form) Ø 多値従属性と第 4正規形 (Multivalued Dependency and Fourth Normal Form) Ø 結合従属性と第 5正規形 (Join Dependencies and Fifth Normal Form) 2014/05/09 Outline 39
第 2正規形 (Second Normal Form) Ssn Project_ id name age Project_ name days 1401 002 andy 21 RMX 21 1402 001 halken 22 SSQL 15 1403 003 ikuta 21 WIX 13 1404 002 moe 21 RMX 16 1405 003 ryosuke 22 WIX 15 1406 001 yusuke 21 SSQL 11 v {Project_id} → {Project_name}が部分関数従属であるといえる v {Ssn} → {name}, {Ssn} → {age}も部分関数従属であるといえる 2014/05/09 v部分関数従属の例 41
第 2正規形 (Second Normal Form) Ssn Project_ id name age Project_ name days 1401 002 andy 21 RMX 21 1402 001 halken 22 SSQL 15 1403 003 ikuta 21 WIX 13 1404 002 moe 21 RMX 16 1405 003 ryosuke 22 WIX 15 1406 001 yusuke 21 SSQL 11 v {Ssn, Project_id} → {days}が完全関数従属であるといえる 2014/05/09 v完全関数従属の例 42
第 2正規形 v第 2正規化の例 Ssn Project_ id name 1401 002 andy 1402 001 1403 age Ssn Project_ id name age days 1401 002 andy 21 21 1402 001 halken 22 15 1403 003 ikuta 21 13 1404 002 moe 21 16 Project_ name days 21 RMX 21 1405 003 ryosuke 22 15 halken 22 SSQL 15 1406 001 yusuke 21 11 003 ikuta 21 WIX 13 1404 002 moe 21 RMX 16 1405 003 ryosuke 22 WIX 15 1406 001 yusuke 21 SSQL 11 Project_ id Project_ name 001 SSQL 002 RMX 003 WIX 2014/05/09 (Second Normal Form) 43
第 2正規形 (Second Normal Form) v第 2正規化の例 1401 andy 21 1402 halken 22 name 1401 002 andy 21 21 1403 ikuta 21 1402 001 halken 22 15 1404 moe 21 1403 003 ikuta 21 13 1405 ryosuke 22 1404 002 moe 21 16 1406 yusuke 21 1405 003 ryosuke 22 15 1406 001 yusuke 21 11 Ssn Project_ id days 1401 002 21 1402 001 15 1403 003 13 1404 002 16 1405 003 15 1406 001 11 Project_ name 001 SSQL 002 RMX 003 WIX days age Project_ id age name 2014/05/09 Ssn 44
第 2正規形 (Second Normal Form) 2014/05/09 v第 2正規化の例 Ssn Project_ id days Project_ id Project_ name 1401 002 21 001 SSQL 1402 001 15 002 RMX 1403 003 13 003 WIX 1404 002 1405 1406 Ssn name age 1401 andy 21 1402 halken 22 1403 ikuta 21 16 1404 moe 21 003 15 1405 ryosuke 22 001 11 1406 yusuke 21 v 3つの関係で、非主属性は主キーに完全関数従属している ⇒ 第 2正規形 45
第 2正規形 (Second Normal Form) 2014/05/09 v例 46
v非公式設計ガイドライン (Informal Design Guideline) v関数従属性 (Functional Dependencies) v正規化 (Normalization) Ø 第 1正規形 (First Normal Form) Ø 第 2正規形 (Second Normal Form) Ø 第 3正規形 (Third Normal Form) Ø ボイス・コッド正規形 (Boyce-Codd Normal Form) Ø 多値従属性と第 4正規形 (Multivalued Dependency and Fourth Normal Form) Ø 結合従属性と第 5正規形 (Join Dependencies and Fifth Normal Form) 2014/05/09 Outline 47
第 3正規形 (Third Normal Form) Ssn name age Project_ id name 1401 andy 21 002 RMX 1402 halken 22 001 SSQL 1403 ikuta 21 003 WIX 1404 moe 21 002 RMX 1405 ryosuke 22 003 WIX 1406 yusuke 21 001 SSQL v {Ssn} → {Project_name} は完全関数従属ではあるが、、、 v {Ssn} → {Project_id} → {Project_name} のように推移的に従属している! 2014/05/09 v推移的関数従属の例 49
第 3正規形 v第 3正規化の例 Ssn name age Project_ id Project_ name 1401 andy 21 002 RMX 1402 halken 22 001 SSQL 1403 ikuta 21 003 WIX 1404 moe 21 002 RMX 1405 ryosuke 22 003 WIX 1406 yusuke 21 001 SSQL v 推移的関数従属は取り除かれた ⇒ 第 3正規形 Ssn name age Project_ id 1401 andy 21 002 1402 halken 22 001 1403 ikuta 21 003 1404 moe 21 002 1405 ryosuke 22 003 1406 yusuke 21 001 Project_ id Project_ name 001 SSQL 002 RMX 003 WIX 2014/05/09 (Third Normal Form) 50
v非公式設計ガイドライン (Informal Design Guideline) v関数従属性 (Functional Dependencies) v正規化 (Normalization) Ø 第 1正規形 (First Normal Form) Ø 第 2正規形 (Second Normal Form) Ø 第 3正規形 (Third Normal Form) Ø ボイス・コッド正規形 (Boyce-Codd Normal Form) Ø 多値従属性と第 4正規形 (Multivalued Dependency and Fourth Normal Form) Ø 結合従属性と第 5正規形 (Join Dependencies and Fifth Normal Form) 2014/05/09 Outline 51
ボイス・コッド正規形 (Boyce-Codd Normal Form) 1. {Student, Course} → {Instructor} 2. {Instructor} → {Course} 2は自明でない関数従属性であるが、 Instructorはスーパーキーでない! ⇒ ボイス・コッド正規形でない! 2014/05/09 v第 3正規形であってボイス・コッド正規形でない例 Student Course Instructor Narayan Database Mark Smith Database Navathe Smith Operating Systems Ammar Smith Theory Schulman Wallace Database Mark Wallace Operating Systems Ahamad Wong Database Omiecinski Zelaya Database Navathe Narayan Operating Systems Ammar 55
ボイス・コッド正規形 (Boyce-Codd Normal Form) Instructor Course Student Course Instructor Mark Database Narayan Database Mark Navathe Database Smith Database Navathe Ammar Operating Systems Smith Operating Systems Ammar Schulman Theory Smith Theory Schulman Ahamad Operating Systems Wallace Database Mark Omiecinski Database Wallace Operating Systems Ahamad Wong Database Omiecinski Student Course Zelaya Database Navathe Narayan Database Narayan Operating Systems Ammar Smith Database Smith Operating Systems Smith Theory Wallace Database Wallace Operating Systems Wong Database Zelaya Database Narayan Operating Systems v 確かにボイス・コッド正規形に なっているが、、、 ⇒良くない分解方法! 2014/05/09 vボイス・コッド正規化の例(?) 56
ボイス・コッド正規形 v再結合してみると… Student Course Instructor Narayan Database Mark Narayan Database Navathe Narayan Database Omiecinski Narayan Database Mark Smith Database Navathe Smith Database Omiecinski Smith Operating Systems Ammar Smith Operating Systems Ahamad Instructor Course Mark Database Navathe Database Ammar Operating Systems Schulman Theory Ahamad Operating Systems Omiecinski Database Student Course Smith Theory Schulman Narayan Database Wallace Database Mark Smith Database Wallace Database Navathe Smith Operating Systems Wallace Database Omiecinski Smith Theory … … … Wallace Database Wallace Operating Systems Wong Database Zelaya Database Narayan Operating Systems 偽タプルが発生してしまう! 2014/05/09 (Boyce-Codd Normal Form) 57
ボイス・コッド正規形 (Boyce-Codd Normal Form) Instructor Course Student Course Instructor Mark Database Narayan Database Mark Navathe Database Smith Database Navathe Ammar Operating Systems Smith Operating Systems Ammar Schulman Theory Smith Theory Schulman Ahamad Operating Systems Wallace Database Mark Omiecinski Database Wallace Operating Systems Ahamad Wong Database Omiecinski Student Instructor Zelaya Database Navathe Narayan Mark Smith Navathe Narayan Operating Systems Ammar Smith Schulman Wallace Mark Wallace Ahamad Wong Omiecinski Zelaya Navathe Narayan Ammar v 無損失分解の形になった! 2014/05/09 vボイス・コッド正規化の例 58
v非公式設計ガイドライン (Informal Design Guideline) v関数従属性 (Functional Dependencies) v正規化 (Normalization) Ø 第 1正規形 (First Normal Form) Ø 第 2正規形 (Second Normal Form) Ø 第 3正規形 (Third Normal Form) Ø ボイス・コッド正規形 (Boyce-Codd Normal Form) Ø 多値従属性と第 4正規形 (Multivalued Dependency and Fourth Normal Form) Ø 結合従属性と第 5正規形 (Join Dependencies and Fifth Normal Form) 2014/05/09 Outline 60
第 4正規形 (Fourth Normal Form) 2014/05/09 v第 4正規化の例 {Ename} →→ {Pname} | {Dname} {Ename} →→ {Pname} {Ename} →→ {Dname} 64
v非公式設計ガイドライン (Informal Design Guideline) v関数従属性 (Functional Dependencies) v正規化 (Normalization) Ø 第 1正規形 (First Normal Form) Ø 第 2正規形 (Second Normal Form) Ø 第 3正規形 (Third Normal Form) Ø ボイス・コッド正規形 (Boyce-Codd Normal Form) Ø 多値従属性と第 4正規形 (Multivalued Dependency and Fourth Normal Form) Ø 結合従属性と第 5正規形 (Join Dependencies and Fifth Normal Form) 2014/05/09 Outline 65
第 5正規形 (Fifth Normal Form) {Sname} →→ {Part_name} {Sname} →→ {Proj_name} {Part_name} →→ {Proj_name} 2014/05/09 v第 5正規化の例 68
v非公式設計ガイドライン (Informal Design Guideline) v関数従属性 (Functional Dependencies) v正規化 (Normalization) Ø 第 1正規形 (First Normal Form) Ø 第 2正規形 (Second Normal Form) Ø 第 3正規形 (Third Normal Form) Ø ボイス・コッド正規形 (Boyce-Codd Normal Form) Ø 多値従属性と第 4正規形 (Multivalued Dependency and Fourth Normal Form) Ø 結合従属性と第 5正規形 (Join Dependencies and Fifth Normal Form) 2014/05/09 Summary 69
- Slides: 69