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 |
ไม่มีความคิดเห็น:
แสดงความคิดเห็น