รูปแบบบรรทัดฐาน (Normal Forms)
รูปแบบบรรทัดฐานคือลำดับชั้นของเงื่อนไขบนโครงร่างเชิงสัมพันธ์ (relational schemas) ซึ่งกำหนดขึ้นจากความสัมพันธ์เชิงฟังก์ชัน (functional dependencies) และความสัมพันธ์แบบหลายค่า (multivalued dependencies) โดยแต่ละรูปแบบจะช่วยขจัดความซ้ำซ้อนประเภทหนึ่งๆ และความผิดปกติที่เกิดจากความซ้ำซ้อนนั้น
Definition
รูปแบบบรรทัดฐานคือคุณสมบัติของโครงร่างความสัมพันธ์ (relation schema) ซึ่งระบุในรูปของความสัมพันธ์เชิงฟังก์ชันหรือความสัมพันธ์แบบหลายค่า โดยการปฏิบัติตามคุณสมบัตินี้จะรับประกันการไม่มีความซ้ำซ้อนประเภทใดประเภทหนึ่งและความผิดปกติที่เกี่ยวข้องกับการอัปเดต การแทรก และการลบข้อมูล
Scope
หัวข้อนี้ครอบคลุมรูปแบบบรรทัดฐานและความซ้ำซ้อนที่แต่ละรูปแบบขจัดออกไป: รูปแบบบรรทัดฐานขั้นที่หนึ่ง (first normal form) (ค่าแอตทริบิวต์ที่เป็นอะตอม), รูปแบบบรรทัดฐานขั้นที่สองและสาม (second and third normal form) (การขจัดความสัมพันธ์บางส่วนและเชิงถ่ายทอดบนคีย์ผู้สมัคร), รูปแบบบรรทัดฐานบอยซ์-คอดด์ (Boyce-Codd normal form) (ความสัมพันธ์เชิงฟังก์ชันที่ไม่ใช่เรื่องเล็กน้อยทุกรายการมีซูเปอร์คีย์อยู่ทางซ้าย) และรูปแบบบรรทัดฐานขั้นที่สี่ (fourth normal form) (การขจัดความสัมพันธ์แบบหลายค่าที่ไม่ใช่เรื่องเล็กน้อย) หัวข้อนี้จะอธิบายวิธีการทดสอบการเป็นสมาชิกในแต่ละรูปแบบโดยใช้ความสัมพันธ์ และไม่รวมกลไกของการแยกโครงร่างเพื่อเข้าถึงรูปแบบบรรทัดฐาน ซึ่งจะกล่าวถึงในหัวข้อการปรับปรุงโครงร่าง (schema refinement)
Core questions
- แต่ละรูปแบบบรรทัดฐานกำหนดเงื่อนไขอะไร และขจัดความซ้ำซ้อนประเภทใด?
- ความสัมพันธ์บางส่วนและความสัมพันธ์เชิงถ่ายทอดเกี่ยวข้องกับรูปแบบบรรทัดฐานขั้นที่สองและสามอย่างไร?
- โครงร่างอยู่ในรูปแบบบรรทัดฐานบอยซ์-คอดด์ แต่ไม่อยู่ในรูปแบบที่ต่ำกว่าเมื่อใด หรือในทางกลับกัน?
- ความสัมพันธ์แบบหลายค่าเป็นแรงจูงใจให้เกิดรูปแบบบรรทัดฐานขั้นที่สี่ได้อย่างไร?
- จะทดสอบการเป็นสมาชิกของความสัมพันธ์ในรูปแบบบรรทัดฐานที่กำหนดได้อย่างไร?
Key concepts
- รูปแบบบรรทัดฐานขั้นที่หนึ่ง (ความเป็นอะตอม)
- รูปแบบบรรทัดฐานขั้นที่สอง (ไม่มีความสัมพันธ์บางส่วน)
- รูปแบบบรรทัดฐานขั้นที่สาม (ไม่มีความสัมพันธ์เชิงถ่ายทอด)
- รูปแบบบรรทัดฐานบอยซ์-คอดด์
- แอตทริบิวต์หลักและไม่ใช่หลัก
- ความสัมพันธ์แบบหลายค่า
- รูปแบบบรรทัดฐานขั้นที่สี่
- การขจัดความผิดปกติ
Key theories
- รูปแบบบรรทัดฐานขั้นที่หนึ่งถึงสาม
- 1NF กำหนดให้ค่าแอตทริบิวต์เป็นอะตอม; 2NF ขจัดความสัมพันธ์ของแอตทริบิวต์ที่ไม่ใช่หลักบนส่วนหนึ่งของคีย์ผู้สมัคร; 3NF ขจัดความสัมพันธ์เชิงถ่ายทอดเพิ่มเติม ดังนั้นแอตทริบิวต์ที่ไม่ใช่หลักจึงขึ้นอยู่กับคีย์ผู้สมัครเท่านั้น
- รูปแบบบรรทัดฐานบอยซ์-คอดด์
- โครงร่างอยู่ใน BCNF หากสำหรับความสัมพันธ์เชิงฟังก์ชันที่ไม่ใช่เรื่องเล็กน้อยทุกรายการ X → Y, X เป็นซูเปอร์คีย์; BCNF ขจัดความซ้ำซ้อนทั้งหมดที่เกิดจากความสัมพันธ์เชิงฟังก์ชัน แต่การแยกส่วน BCNF อาจไม่สามารถรักษาความสัมพันธ์ทั้งหมดไว้ได้
- รูปแบบบรรทัดฐานขั้นที่สี่และความสัมพันธ์แบบหลายค่า
- รูปแบบบรรทัดฐานขั้นที่สี่ของฟากิน (Fagin's fourth normal form) ขยาย BCNF ไปสู่ความสัมพันธ์แบบหลายค่า โดยกำหนดให้ความสัมพันธ์แบบหลายค่าที่ไม่ใช่เรื่องเล็กน้อยทุกรายการมีซูเปอร์คีย์อยู่ทางซ้าย ซึ่งช่วยขจัดความซ้ำซ้อนที่ความสัมพันธ์เชิงฟังก์ชันไม่สามารถอธิบายได้
Clinical relevance
รูปแบบบรรทัดฐานช่วยให้นักออกแบบฐานข้อมูลมีรายการตรวจสอบที่เป็นรูปธรรมในการสร้างโครงร่างที่ปราศจากความผิดปกติที่เกิดจากความซ้ำซ้อน ในทางปฏิบัติ ฐานข้อมูลเชิงปฏิบัติการส่วนใหญ่มักกำหนดเป้าหมายที่รูปแบบบรรทัดฐานขั้นที่สามหรือ BCNF ในขณะที่นักออกแบบอาจผ่อนคลายรูปแบบเหล่านี้โดยเจตนาเพื่อประสิทธิภาพในการทำงานด้านการวิเคราะห์และการรายงาน
History
คอดด์ (Codd) ได้กำหนด 1NF, 2NF และ 3NF ในช่วงต้นทศวรรษ 1970; BCNF ที่แข็งแกร่งกว่าได้รับการพัฒนาโดยบอยซ์ (Boyce) และคอดด์ในเวลาต่อมา โรนัลด์ ฟากิน (Ronald Fagin) ได้นำเสนอ 4NF (1977) สำหรับความสัมพันธ์แบบหลายค่า และต่อมา 5NF สำหรับความสัมพันธ์แบบเชื่อมโยง (join dependencies) ซึ่งเป็นการเติมเต็มลำดับชั้นแบบคลาสสิกที่ใช้ในการเรียนการสอนและการปฏิบัติ
Key figures
- Edgar F. Codd
- Raymond F. Boyce
- Ronald Fagin
Related topics
Seminal works
- codd1972
- fagin1977
- silberschatz2019
Frequently asked questions
- ฉันควรกำหนดเป้าหมายรูปแบบบรรทัดฐานใด?
- การออกแบบธุรกรรมส่วนใหญ่มักกำหนดเป้าหมายที่รูปแบบบรรทัดฐานขั้นที่สามหรือรูปแบบบรรทัดฐานบอยซ์-คอดด์ ซึ่งช่วยขจัดความซ้ำซ้อนที่เกิดจากความสัมพันธ์เชิงฟังก์ชัน รูปแบบบรรทัดฐานขั้นที่สี่และห้าจะจัดการกับความสัมพันธ์แบบหลายค่าและความสัมพันธ์แบบเชื่อมโยงที่หายากกว่า ในทางปฏิบัติ การมีรูปแบบที่สูงกว่าไม่ได้ดีกว่าเสมอไป: นักออกแบบบางครั้งหยุดที่ 3NF หรือลดความเป็นบรรทัดฐาน (denormalize) เพื่อประสิทธิภาพในการอ่านข้อมูล
- โครงร่างสามารถอยู่ในรูปแบบบรรทัดฐานที่สูงกว่าแต่ไม่อยู่ในรูปแบบที่ต่ำกว่าได้หรือไม่?
- รูปแบบคลาสสิก 1NF ถึง BCNF เป็นแบบซ้อนกัน ดังนั้นการอยู่ใน BCNF หมายความว่าอยู่ใน 3NF, 2NF และ 1NF อย่างไรก็ตาม โครงร่างสามารถเป็นไปตาม 3NF ได้ในขณะที่ไม่เป็นไปตาม BCNF ซึ่งเป็นกรณีปกติที่นักออกแบบต้องเลือกระหว่าง BCNF กับการรักษาความสัมพันธ์เชิงฟังก์ชันทั้งหมดไว้