Normalization
คือ กระบวนการปรับเปลี่ยนโครงสร้างของ relation
schema ให้อยู่ในรูปแบบ
Normal
Form ในลำดับต่างๆ
เพื่อให้ได้โครงสร้างของตารางที่ดี ลดความซ้ำซ้อนของข้อมูล
First normal form (1NF)
| if the values in the domain of each attribute of the relation are atomic (that is simple and indivisible). |
- ในแต่ละ attribute ของ relation จะเก็บข้อมูลเพียงค่าเดียว คือในแต่ละ attribute ทุก ๆtuple จะมีเพียงข้อมูลเดียว เรียกว่า atomic (นั่นคือเป็น simple หรือ indivisible value) และต้องไม่มีกลุ่มข้อมูลที่ซ้ำกัน(repeating groups)
- วิธีการที่จะทาให้เป็น 1NF คือ 1. แยกคอลัมน์ที่มีค่ามากกว่า 1 ค่าออกเป็นแถวใหม่ 2. เพิ่มข้อมูลเข้าไปในคอลัมน์ที่ว่างอยู่ของแถวที่เกิดขึ้นใหม่
ตัวอย่างของ 1NF
1NF สามารถแก้ปัญหาของกลุ่มข้อมูลที่ซ้ำกันได้ แต่กลับทำให้เกิดปัญหา เรื่องความซ้ำซ้อนของข้อมูล (Redundancy) ดังต่อไปนี้
1.การแก้ไขข้อมูล การแก้ไขข้อมูลที่มีข้อมูลอยู่หลาย tuple จะต้อง แก้ไขข้อมูลมากกว่าหนึ่งแห่ง เช่น แก้ไขชื่อใน Attribute DOCTOR-NAME ก็ต้องแก้ทุกๆ tuple ที่มีชื่อนั้น
2.การลบข้อมูล บางส่วนออกไป อาจจะทำให้ข้อมูลอื่น ๆ ถูกลบออกไปด้วย เช่น เมื่อลบข้อมูลของ DOCTOR ก็จะทำให้ข้อมูลของ PATIENT หายไปด้วย
3.การเพิ่มข้อมูล บางอย่างอาจไม่สามารถทำได้ หรือ เพิ่มเข้าไปแล้วจะขัดแย้งกับข้อมูลเดิม
Second normal form (2NF)
| if it is in 1NF and every non-prime key attributes of R is fully functionally dependent on each relation (primary) key of R. |
- relation นั้นมีคุณสมบัติอยู่ใน 1NF
- ทุก Atribute ที่เป็น non-prime key ต้องมีความสัมพันธ์กับ Attribute ที่เป็น primary
- ทุก Atribute ที่เป็น non-prime key ต้องมีความสัมพันธ์กับ Attribute ที่เป็น primary
ตัวอย่างของ 2NF
จากตัวอย่างใน 1NF จะมี Attribute CONTACT-NO ที่มีความสัมพันธ์กับ DOCTOR-NAME แต่ไม่มีความสัมพันธ์ DATE-TIME ซึ่งเป็น primary key ด้วยหรือเรียกว่าไม่เป็น full function dependency
ดั้งนั้น จึงแยก DOCTOR-NAME กับ DATE-TIME ออกมาเป็น table ใหม่ก็จะอยู่ในเงื่อนไขของ 2NF
ปัญหาของ 2NF
เมื่อลบข้อมูล จาก relation PATIENT_DOCTOR จะทำให้ข้อมูล PATIENT หายไป
เมื่อมีการแก้ไขข้อมูล บางทีอาจเกิดข้อมูลที่หลากหลาย เพราะว่า ข้อมูลถูกเก็บเกินความจำเป็น
Third normal form (3NF)
if the relation R is in 2NF and the non-prime attributes (that is, attributes that are not part of the primary key) are
|
- relation นั้นมีคุณสมบัติอยู่ใน 2NF
- ต้องไม่มีAttribute ใดในตาราง นอกจาก Primary Key ที่สามารถไปกำหนด Attribute อื่น
(non-prime เป็นอิสระจากกันและมีความสัมพันธ์ primary key )
(non-prime เป็นอิสระจากกันและมีความสัมพันธ์ primary key )
ตัวอย่างของ 3NF
•จากตารางก่อนหน้ามีข้อมูลหลายตัวที่มีส่วนร่วมกับ
DATE-OF-BIRTH
จึงต้องทำการแก้ไข
โดยการใช้ PATIENT-NAME
ในการชี้ไปที่ DATE-OF-BIRTH
เพียงตัวเดียว
จะได้ ข้อมูล Relation ใหม่ ดังนี้
- PATIENT : (PATIENT-NAME , DATE-OF-BIRTH)
- PATIENT_DOCTOR : (PATIENT-NAME , DOCTOR_NAME , DATE-TIME , DURATION-MINUTES)
- DOCTOR : (DOCTOR-NAME , CONTACT-NO)
ปัญหาของ 3NF
กรณีที่เปลี่ยนแปลงข้อมูลของ NON-KEY ที่ทำหน้าที่เชื่อม NON-KEY อื่น จะทำให้เราต้องเปลี่ยน ทุก Tuple ที่เกี่ยวข้องกับ NON-KEY นั้นๆด้วย
reference : https://www.safaribooksonline.com/library/view/database-systems-concepts/9788131760925/22_chapter010.html
Textbook
Database Systems: Concepts, Design and Applications, 2nd Edition by Shio Kumar Singh ISBN: 9788131760925 |




ไม่มีความคิดเห็น:
แสดงความคิดเห็น