Chapter 5 Part 3
Agenda Normal form
The Seven Normal Forms Normal form Description First (1NF) The value stored at the intersection of each row and column must be a scalar value, and a table must not contain any repeating columns Second (2NF) Every non-key column must depend on the entire PK Third (3NF) Every non-key column must depend only on the PK Boyce-Codd(BCNF) A non-key column can’t be dependent on another non-key column. This prevents transitive dependencies, where column A depends on column C and column B depends on column C. Since both A and B depend on C, A and B should be moved into another table with C as the key.
The Seven Normal Forms Normal form Description Fourth (4NF) A table must not have more than one multivalued dependency, where the PK has a one-to-many relationship to non-key columns. This form gets rid of misleading many-to-many relationships. Fifth (5NF) The data structure is split into smaller and smaller tables until all redundancy has been criminated. If further splitting would result in tables that couldn’t be joined to recreate the original table, the structure is in fifth normal form. Domain-key (DKNF) or Sixth (6NF) Every constraint on the relationship is dependent only on key constraints and domain constraints, where a domain is the set of allowable values for a column. This form prevents the insertion of any unacceptable data by enforcing constraints at the level of relationship, rather than at the table or column level. DKNF is less a design model than an abstract “ultimate” normal form
The benefits of normalization Retrieval more efficient Insert, update, and delete operation more efficient Data redundancy is minimized Simplifies maintenance and reduces storage
Example 1:
ตารางที่มีลักษณะข้อมูลเป็น Repeating group รหัสวิชาที่ลงทะเบียน First Normal Form (1NF) ทุก Attribute ในแต่ละ record จะเป็น single value ไม่มี ค่าของกลุ่ม ข้อมูลที่ ซ้ำกัน (Repeating Group) ข้อมูลทุกแถว (Tuple) ต้องมีค่าไม่ซ้ำกัน ตารางที่มีลักษณะข้อมูลเป็น Repeating group รหัสนักศึกษา ชื่อ นามสกุล รหัสวิชาที่ลงทะเบียน 001 สมชาย สมใจนึก 204-101 204-204 204-205 002 ธีรชาย บุญมาศ 204-102 Repeating Group
Second Normal Form (2NF) 1. ต้องเป็น First Normal Form (1NF) มาก่อน 2. ต้องไม่มี Partial Dependency (การขึ้นต่อกัน บางส่วน) สรุปก็คือ นอร์มัลไลเซชันระดับที่ 2 (Second normal form : 2NF) เป็นการขจัดแอตตริบิวที่ ไม่ ขึ้นกับทั้งส่วนของคีย์หลัก ออกไป เพื่อให้ แอตตริบิวอื่นทั้งหมดขึ้นตรงกับส่วนที่เป็นคีย์ หลักทั้งหมดเท่านั้น
ตัวอย่างตารางที่ Partial Dependency (การขึ้นต่อกันบางส่วน) รหัสนักศึกษา รหัสวิชา เกรด ชื่อวิชา 534267001 F01 A การเขียนโปรแกรม F02 B การออกแบบฐานข้อมูล 534267002 D 534267003 C รหัสนักศึกษา รหัสวิชา เกรด ชื่อวิชา Partial Dependency รหัสนักศึกษา, รหัสวิชา เกรด ,ชื่อวิชา รหัสวิชา ชื่อวิชา
Second Normal Form (2NF) วิธีขจัดปัญหา ต้องสร้างตารางเพิ่ม นำคอลัมย์ที่มีปัญหาไปใส่ในตารางที่สร้างเพิ่ม กำหนดคีย์หลักให้กับตารางที่สร้างใหม่ แอททริบิวต์ใดในตารางเดิม เมื่อนำไปใส่ในตาราง ใหม่ ให้ตัดออกจากตารางเดิม ยกเว้น ส่วนของ คีย์หลัก คงไว้ในตารางเดิม
ตารางนี้เมื่อทำให้อยู่ในรูป 2 NF จะได้ 2 ตารางดังนี้ ตารางผลการเรียน รหัสนักศึกษา รหัสวิชา เกรด ชื่อวิชา 534267001 F01 A การเขียนโปรแกรม F02 B การออกแบบฐานข้อมูล 534267002 D 534267003 C ตารางนี้เมื่อทำให้อยู่ในรูป 2 NF จะได้ 2 ตารางดังนี้ ตารางผลการเรียน ตารางวิชา รหัสนักศึกษา รหัสวิชา เกรด 534267001 F01 A F02 B 534267002 D 534267003 C รหัสวิชา ชื่อวิชา F01 การเขียนโปรแกรม F02 การออกแบบฐานข้อมูล
ให้นักศึกษานอมัลไลซ์ตารางนี้ให้อยู่ในรูปแบบ 2NF ตารางผลการอบรม รหัสผู้เข้าอบรม รหัสครอสอบรม ชื่อผู้เข้าอบรม ชื่อครอสอบรม ผลการทดสอบ 0001 TR01 นายเอ ใจดี การซ่อมไฟฟ้า ผ่าน TR05 การซ่อมตู้เย็น 0002 TR03 นางบี ใจกล้า การทำอาหาร ไม่ผ่าน TR09 การเลี้ยงเด็ก 0003 นายรวย มีเงิน
Third Normal Form (3NF) 1.Relation นั้นจะต้องมีคุณสมบัติ 2NF 2.ต้องไม่มีความสัมพันธ์ระหว่าง Non-key Attribute หรือ ไม่มี Transitive Dependency สรุป : แอททริบิวต์ที่ไม่ใช่คีย์หลัก ต้องไม่ขึ้นต่อกันเอง
Third Normal Form (3NF) วิธีขจัดปัญหา สร้างตารางเพิ่ม นำแอททริบิวต์ที่มีปัญหามาใส่ในตารางใหม่ กำหนดคีย์หลัก แอททริบิวต์ที่ย้ายจากตารางเดิมไปใส่ในตารางใหม่ให้ ตัดออกจากตารางเดิม นำคีย์หลักในข้อ 3 ไปใส่ในตารางเดิม
รหัสพนักงาน ชื่อสกุล รหัสแผนก ชื่อแผนก เงินเดือน P001 นพเกศ แก้วใส A001 บัญชี 25000 P002 วารุณี รวดเร็ว F001 การเงิน 30000 คีย์หลักของตารางนี้คือ รหัสพนักงาน จากตารางยังมีฟังก์ชั่นการขึ้นต่อกันแบบ Transitive Dependency อยู่ คือ รหัสแผนก ซึ่งไม่ใช่คีย์หลักของตาราง แต่สามารถระบุ ค่า ชื่อแผนก ได้ คือ ถ้ารู้รหัสแผนก ก็จะรู้ชื่อแผนก จากตารางข้างบน ทำให้อยู่ในรูป 3 NF จะได้ 2 ตารางข้างล่างนี้ รหัสพนักงาน ชื่อสกุล เงินเดือน P001 นพเกศ แก้วใส 25000 P002 วารุณี รวดเร็ว 30000 รหัสแผนก A001 F001 รหัสแผนก ชื่อแผนก A001 บัญชี F001 การเงิน
สรุป Normalization 1NF ทุกแอททริบิวต์ในแต่ละแถวมีค่าของข้อมูล เพียงค่าเดียว 2NF รีเลชันนั้นต้องไม่มีความสัมพันธ์ระหว่างแอ ททริบิวต์แบบบางส่วน (แอททริบิวต์ทุกตัวต้อง ขึ้นกับคีย์หลักทุกตัว ไม่ขึ้นอยู่กับตัวใดตัวหนึ่ง) 3NF ทุกแอททริบิวต์ที่ไม่ใช่คีย์หลักไม่มีคุณสมบัติ ในการกำหนดค่าของ แอ ททริบิวต์อื่น
Example 2:
How to apply the first normal form A table in first normal form often has repeating values in its rows. This can be resolved by applying the second normal form.
How to apply the second normal form Every non-key column must depend on the entire primary key. To apply second normal form, you move columns that don’t depend on the entire primary key to another table and then establish a relationship between the two tables Second normal form helps remove redundant row data, which can save storage space, make maintenance easier, and reduce the chance of storing inconsistent data
How to apply the third normal form For a table to be in third normal form, every non-key column must depend only on the primary key. If a column doesn’t depend only on the primary key. It implies that the column is assigned to the wrong table or that it can be computed from other columns in the table.
Example 3:
1NF
2NF
3NF
Example 4:
First Normal Form (1NF) A database schema is in First Normal Form if all tables are flat Student Student Name GPA Alice 3.8 Bob 3.7 Carol 3.9 Name GPA Courses Alice 3.8 Bob 3.7 Carol 3.9 Math DB OS Takes Course Student Course Alice Math Carol DB Bob OS Course Math DB OS DB OS May need to add keys Math OS
Relational Schema Design Person buys Product name price ssn Conceptual Model: Relational Model: plus FD’s FD: Functional dependencies Normalization: Eliminates anomalies ขจัดความผิดปกติ
Data Anomalies When a database is poorly designed we get anomalies: Redundancy: data is repeated Update anomalies: need to change in several places Delete anomalies: may lose data when we don’t want
Relational Schema Design Recall set attributes (persons with several phones): Name SSN PhoneNumber City Fred 123-45-6789 206-555-1234 Seattle 206-555-6543 Joe 987-65-4321 908-555-2121 Westfield One person may have multiple phones, but lives in only one city Anomalies: ความผิดปกติ Redundancy = repeated data Update anomalies = Fred moves to “Bellevue” Deletion anomalies = Joe deletes his phone number: what is his city ?
Relation Decomposition Break the relation into two: Name SSN PhoneNumber City Fred 123-45-6789 206-555-1234 Seattle 206-555-6543 Joe 987-65-4321 908-555-2121 Westfield Name SSN City Fred 123-45-6789 Seattle Joe 987-65-4321 Westfield SSN PhoneNumber 123-45-6789 206-555-1234 206-555-6543 987-65-4321 908-555-2121 Anomalies are gone: No more repeated data Easy to move Fred to “Bellevue” (how?) Easy to delete all Joe’s phone numbers (how?)
Relational Schema Design (or Logical Design) Main idea: Start with some relational schema Find out its functional dependencies Use them to design a better relational schema
Functional Dependencies A form of constraint hence, part of the schema Finding them is part of the database design Also used in normalizing the relations
Examples An FD holds, or does not hold on an instance: ตัวอย่าง EmpID Name Phone Position E0045 Smith 1234 Clerk E3542 Mike 9876 Salesrep E1111 E9999 Mary Lawyer EmpID Name, Phone, Position Position Phone but not Phone Position
Example EmpID Name Phone Position E0045 Smith 1234 Clerk E3542 Mike 9876 Salesrep E1111 E9999 Mary Lawyer Position Phone
Example EmpID Name Phone Position E0045 Smith 1234 Clerk E3542 Mike 1234 Clerk E3542 Mike 9876 Salesrep E1111 E9999 Mary Lawyer but not Phone Position
Example SSN Name, City What the key? {SSN, PhoneNumber} Fred 123-45-6789 206-555-1234 Seattle 206-555-6543 Joe 987-65-4321 908-555-2121 Westfield 908-555-1234 SSN Name, City What the key? {SSN, PhoneNumber} Hence SSN Name, City is a “bad” dependency
BCNF (Boyce/Codd Normal Form) นิยาม ต้องเปน 3NF และไมมี attribute อื่นในรีเลชันที่ สามารถระบุคาของ attribute ที่เปนคีย หลักหรือสวนหนึ่งสวนใดของคียหลักในกรณีที่คีย หลักเปนคียผสม โดยทั่วไปรูปแบบ BCNF จะอยูในรูปแบบ 3NF แตไม จําเปนเสมอไปที่รูปแบบ 3NF จะอยูในรูป แบบ BCNF ทั้งนี้เนื่องจากรูปแบบนี้เปนการขยายขอบเขต ของรูปแบบ 3NF ใหเหมาะสมยิ่งขึ้น โดยรูป แบบที่ต องทําใหเปน BCNF มักจะมีคุณสมบัติ ดังนี้ เป็นรีเลชันที่มีคียคูแขงหลายคีย (Multiple Candidate Key) โดยที่คีย์คูแขงเปนคียผสม (Composite Key) และคียคูแขงนั้นมีบางสวนซํ้าซอนกัน (Overlapped) มี attribute บางตัวรวมกันอยู
Question & Answer
References รัฐสิทธิ์ สุขะหุต. (2555). ฐานข้อมูลเบื้องต้น Murach, J. (2015). Murach’s MySQL.