การออกแบบและการทำให้เป็นบรรทัดฐานของฐานข้อมูล
การออกแบบและการทำให้เป็นบรรทัดฐานของฐานข้อมูลเป็นระเบียบวินัยในการจัดโครงสร้างสคีมาเชิงสัมพันธ์ เพื่อให้สามารถแสดงข้อมูลได้อย่างถูกต้องแม่นยำ พร้อมทั้งขจัดความซ้ำซ้อนและความผิดปกติในการอัปเดต การแทรก และการลบที่เกิดจากความซ้ำซ้อนนั้น
Definition
การทำให้เป็นบรรทัดฐาน (Normalization) คือกระบวนการแยกความสัมพันธ์เพื่อลดความซ้ำซ้อนและหลีกเลี่ยงความผิดปกติ โดยมีแนวทางจากการพึ่งพาเชิงฟังก์ชันและการพึ่งพาแบบหลายค่าที่เกิดขึ้นระหว่างแอตทริบิวต์ ในขณะที่ยังคงรักษาเนื้อหาข้อมูลของสคีมาดั้งเดิมไว้
Scope
ขอบเขตนี้ครอบคลุมทฤษฎีและการปฏิบัติของการปรับปรุงสคีมาเชิงสัมพันธ์: การพึ่งพาเชิงฟังก์ชันและการพึ่งพาแบบหลายค่า (functional and multivalued dependencies) ในฐานะข้อจำกัดเชิงความหมายที่เป็นตัวขับเคลื่อนการออกแบบ ลำดับชั้นของรูปแบบบรรทัดฐาน (1NF ถึง BCNF, 4NF) และการแยกความสัมพันธ์เพื่อขจัดความซ้ำซ้อนในขณะที่ยังคงรักษาการเชื่อมโยงแบบไม่สูญเสียข้อมูล (lossless joins) และหากเป็นไปได้ การพึ่งพา (dependencies) ขอบเขตนี้ไม่รวมสัญกรณ์การสร้างแบบจำลองเชิงแนวคิด เช่น แผนภาพเอนทิตี-ความสัมพันธ์ (ครอบคลุมในแบบจำลองข้อมูลและภาษาคิวรี) และทางเลือกการออกแบบทางกายภาพ เช่น การทำดัชนี
Sub-topics
Core questions
- การพึ่งพาเชิงฟังก์ชันและการพึ่งพาแบบหลายค่าใดบ้างที่เกิดขึ้นระหว่างแอตทริบิวต์ของความสัมพันธ์?
- ความผิดปกติใดบ้าง — การอัปเดต การแทรก การลบ — ที่เกิดจากความซ้ำซ้อน?
- เงื่อนไขใดบ้างที่กำหนดรูปแบบบรรทัดฐานแต่ละรูปแบบ และแต่ละรูปแบบขจัดความซ้ำซ้อนใดบ้าง?
- จะสามารถแยกความสัมพันธ์ได้อย่างไรโดยไม่สูญเสียข้อมูล?
- เมื่อใดที่ต้องแลกเปลี่ยนการรักษาการพึ่งพา (dependency preservation) กับรูปแบบบรรทัดฐานที่สูงขึ้น?
Key concepts
- การพึ่งพาเชิงฟังก์ชัน (functional dependency)
- สัจพจน์ของอาร์มสตรองและการปิด (Armstrong's axioms and closure)
- คีย์ผู้สมัครและแอตทริบิวต์หลัก (candidate keys and prime attributes)
- ความผิดปกติในการอัปเดต การแทรก การลบ (update, insertion, deletion anomalies)
- รูปแบบบรรทัดฐานที่หนึ่ง ที่สอง ที่สาม (first, second, third normal form)
- รูปแบบบรรทัดฐาน Boyce-Codd (Boyce-Codd normal form)
- การพึ่งพาแบบหลายค่าและ 4NF (multivalued dependencies and 4NF)
- การแยกแบบไม่สูญเสียการเชื่อมโยง (lossless-join decomposition)
- การรักษาการพึ่งพา (dependency preservation)
Key theories
- การพึ่งพาเชิงฟังก์ชันและการปิด
- การพึ่งพาเชิงฟังก์ชัน X → Y ยืนยันว่า X กำหนด Y; สัจพจน์ของอาร์มสตรองช่วยให้สามารถคำนวณการปิดของชุดของการพึ่งพา ซึ่งเป็นพื้นฐานของการค้นหาคีย์และการทดสอบรูปแบบบรรทัดฐาน
- รูปแบบบรรทัดฐาน
- รูปแบบบรรทัดฐานที่หนึ่งถึงสามและรูปแบบบรรทัดฐาน Boyce-Codd กำหนดเงื่อนไขที่เข้มงวดขึ้นเรื่อยๆ สำหรับการพึ่งพาเชิงฟังก์ชันเพื่อขจัดความซ้ำซ้อน; รูปแบบบรรทัดฐานที่สี่ขยายแนวคิดนี้ไปยังการพึ่งพาแบบหลายค่า
- การแยกแบบไม่สูญเสียการเชื่อมโยงและการรักษาการพึ่งพา
- การแยกส่วนจะพึงประสงค์ก็ต่อเมื่อไม่สูญเสียข้อมูล (ความสัมพันธ์ดั้งเดิมสามารถสร้างขึ้นใหม่ได้โดยการเชื่อมโยงส่วนต่างๆ) และโดยหลักการแล้วจะรักษาการพึ่งพา (การพึ่งพาเดิมทั้งหมดสามารถบังคับใช้กับส่วนต่างๆ ได้) ซึ่งเป็นเกณฑ์ที่จำกัดวิธีการแบ่งสคีมา
Clinical relevance
การทำให้เป็นบรรทัดฐานเป็นทักษะหลักในการสร้างระบบสารสนเทศที่เชื่อถือได้: สคีมาที่ผ่านการทำให้เป็นบรรทัดฐานอย่างดีจะช่วยป้องกันข้อมูลที่ไม่สอดคล้องกันและทำให้การบำรุงรักษาในแอปพลิเคชันธุรกรรมง่ายขึ้น ในขณะที่ผู้ปฏิบัติงานก็จงใจทำการลดบรรทัดฐาน (denormalize) สำหรับการวิเคราะห์และการรายงานที่เน้นการอ่านข้อมูล ทำให้การแลกเปลี่ยนเป็นหัวใจสำคัญของวิศวกรรมฐานข้อมูลในโลกแห่งความเป็นจริง
History
Codd ได้นำเสนอรูปแบบบรรทัดฐานที่หนึ่ง ที่สอง และที่สามในช่วงต้นทศวรรษ 1970 และร่วมกับ Boyce ได้นำเสนอรูปแบบบรรทัดฐาน Boyce-Codd ที่เข้มงวดกว่า ต่อมา Ronald Fagin ได้กำหนดรูปแบบบรรทัดฐานที่สี่และที่ห้าโดยอิงจากการพึ่งพาแบบหลายค่าและการพึ่งพาการเชื่อมโยง (join dependencies) ผลลัพธ์เหล่านี้ได้เปลี่ยนการออกแบบสคีมาจากการเป็นศิลปะไปสู่ทฤษฎีที่มีพื้นฐานมาจากข้อจำกัดการพึ่งพา
Debates
- ควรทำให้เป็นบรรทัดฐานมากน้อยเพียงใดในการปฏิบัติจริง
- การทำให้เป็นบรรทัดฐานอย่างเคร่งครัดจะช่วยขจัดความซ้ำซ้อนและความผิดปกติ แต่ก็อาจต้องมีการเชื่อมโยงหลายครั้งที่ทำให้เวิร์กโหลดที่เน้นการอ่านข้อมูลช้าลง ผู้ปฏิบัติงานถกเถียงกันว่าเมื่อใดที่การลดบรรทัดฐานแบบควบคุมเพื่อประสิทธิภาพเป็นสิ่งที่สมเหตุสมผล เทียบกับเมื่อใดที่มันนำไปสู่ความไม่สอดคล้องกันที่การทำให้เป็นบรรทัดฐานถูกออกแบบมาเพื่อป้องกัน
Key figures
- Edgar F. Codd
- Raymond F. Boyce
- Ronald Fagin
Related topics
Seminal works
- codd1972
- silberschatz2019
- garciamolina2008
Frequently asked questions
- เหตุใดความซ้ำซ้อนจึงก่อให้เกิดปัญหาหากฉันระมัดระวัง?
- การจัดเก็บข้อเท็จจริงเดียวกันซ้ำซ้อนในหลายแถวทำให้เกิดความผิดปกติ: การอัปเดตอาจเปลี่ยนแปลงสำเนาบางส่วนแต่ไม่ใช่ทั้งหมด (ความผิดปกติในการอัปเดต) คุณอาจไม่สามารถบันทึกข้อเท็จจริงได้หากไม่มีข้อมูลที่ไม่เกี่ยวข้อง (ความผิดปกติในการแทรก) หรือการลบแถวอาจทำให้ข้อมูลที่คุณต้องการเก็บไว้สูญหายไป (ความผิดปกติในการลบ) การทำให้เป็นบรรทัดฐานจะขจัดความซ้ำซ้อนที่ทำให้สิ่งเหล่านี้เป็นไปได้
- ความแตกต่างระหว่าง BCNF และรูปแบบบรรทัดฐานที่สามคืออะไร?
- ทั้งสองรูปแบบจัดการกับความซ้ำซ้อนจากการพึ่งพาเชิงฟังก์ชัน แต่ BCNF เข้มงวดกว่า: กำหนดให้ด้านซ้ายของการพึ่งพาที่ไม่ใช่เรื่องเล็กน้อยทุกรายการต้องเป็นซูเปอร์คีย์ สคีมาอาจอยู่ใน 3NF แต่ไม่อยู่ใน BCNF BCNF ให้การแยกส่วนแบบไม่สูญเสียข้อมูลเสมอ แต่อาจไม่รักษาการพึ่งพา ซึ่งเป็นเหตุผลว่าทำไมบางครั้งจึงยังคงใช้ 3NF