![]() |
|
![]() |
|
![]() |
รูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์โดยทั่วไป ในทางปฏิบัติการจัดทำให้เป็นรูปแบบที่เป็นบรรทัดฐานมักทำจนกระทั่งรีเลชันมี คุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 3 เนื่องจากสามารถขจัดปัญหาความซ้ำซ้อนของข้อมูลลงได้จนแทบไม่หลงเหลืออยู่แล้ว แต่ก็มีโอกาสที่จะเกิดปัญหาความซ้ำซ้อนของข้อมูลได้อีก แม้จะพบได้ค่อนข้างน้อยมากก็ตาม ดังนั้น รูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์ (Boyce/Codd Normal Form : BCNF) เป็น รูปแบบที่ขยายขอบเขตมาจากรูปแบบที่เป็นบรรทัดฐานขั้นที่ 3 เพื่อให้การแก้ไขปัญหาความซ้ำซ้อนของ ข้อมูลที่พบในรีเลชันมีความชัดเจนและรัดกุมยิ่งขึ้น 1. คุณสมบัติของรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์รีเลชันใด ๆ ที่ไม่มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์ คือ 1. รีเลชันใด ๆ ที่มีคีย์คู่แข่ง (candidate key) ตั้งแต่ 2 ตัวขึ้นไป 2. คีย์คู่แข่งนั้นเป็นคีย์ผสม ซึ่งมีแอททริบิวต์บางส่วนร่วมกัน หรือกล่าวอีกนัยหนึ่ง รีเลชันใด ๆ จะมีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์ ก็ต่อเมื่อ 1. ทุกแอททริบิวต์ที่เป็นตัวระบุค่า หรือ Determinant ในรีเลชันนั้นต้องเป็นคีย์คู่แข่ง 2. ไม่มีแอททริบิวต์ใดในรีเลชันที่สามารถระบุค่าของแอททริบิวต์ที่เป็นคีย์หลัก หรือส่วนใดส่วนหนึ่งของแอททริบิวต์ที่ประกอบกันเป็นคีย์หลักได้ หมายเหตุ 1. นิยามคุณสมบัติของรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์ไม่ระบุว่า รีเลชันนั้นจะต้องมีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 3 ด้วย 2. โดยทั่วไปมักพบว่า รีเลชันที่มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์จะมีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 3 ด้วย และสำหรับรีเลชันที่มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 3 มักมีน้อยมากที่ไม่มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์ 2. ขั้นตอนการจัดทำรีเลชันให้เป็นรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์เพื่อแสดงให้เห็นถึงการจัดทำรีเลชันให้เป็นรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์ ในที่นี้ขอนำตัวอย่างรีเลชันมาประกอบดังนี้ 1. รีเลชันที่ไม่มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์
ภาพที่ 4.16รีเลชันที่ไม่มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์จากรีเลชันข้างต้น นักศึกษาแต่ละคนจะมีใบลงทะเบียนเพียงหนึ่งใบ ดังนั้น เลขที่ใบลงทะเบียนของนักศึกษาแต่ละคนจึงไม่ซ้ำกัน และแต่ละใบลงทะเบียนของนักศึกษาสามารถลงทะเบียนเรียนได้มากกว่าหนึ่งชุดวิชา รีเลชันข้างต้นจึงมีความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันดังนี้ เขียน FD ไดอะแกรมได้ดังนี้
จากภาพที่ 1 หมายความว่า หากระบุค่าของรหัสนักศึกษาและรหัสชุดวิชาจะสามารถทราบเลขที่ ใบลงทะเบียนและหมู่เรียนได้ ตัวอย่างเช่น ถ้าระบุค่าของ Determinant หรือ รหัสนักศึกษา คือ 41010703 และรหัสชุดวิชา คือ 999211 จะทำให้ทราบค่าของ Dependent หรือ เลขที่ใบลงทะเบียนคือ 205 และหมู่เรียน คือ 713 จากภาพที่ 2 หมายความว่า หากระบุค่าของเลขที่ใบลงทะเบียนและรหัสชุดวิชาจะสามารถทราบรหัสนักศึกษาและหมู่เรียนได้ ตัวอย่างเช่น ถ้าระบุค่าของ Determinant หรือ เลขที่ใบลงทะเบียน คือ 236 และรหัสชุดวิชา คือ 729111 จะทำให้ทราบค่าของ Dependent หรือ รหัสนักศึกษา คือ 41012451 และหมู่เรียน คือ 712 จากภาพที่ 3 หมายความว่า หากระบุค่าของรหัสนักศึกษาคนใดจะสามารถทราบเลขที่ใบลงทะเบียนของนักศึกษาคนนั้นได้ เช่น ถ้าระบุค่าของรหัสนักศึกษา คือ 41010703 จะทำให้ทราบเลขที่ใบลงทะเบียนของนักศึกษา คือ 205 และในทางตรงกันข้าม หากระบุค่าของเลขที่ใบลงทะเบียนใดจะสามารถทราบรหัสของ นักศึกษาคนนั้นได้ เช่น ถ้าเลขที่ใบลงทะเบียน คือ 236 จะ ทำให้ทราบค่ารหัสนักศึกษา คือ 41012451 รีเลชันข้างต้นนี้เป็นรีเลชันที่ไม่มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์ เนื่องจากมีคุณสมบัติดังนี้คือ 1. รีเลชันข้างต้นเป็นรีเลชันที่มีคีย์คู่แข่งมากกว่า 2 ตัวขึ้นไป คือ - คีย์คู่แข่งตัวที่ 1 ประกอบด้วยแอททริบิวต์รหัสนักศึกษา และรหัสชุดวิชา - คีย์คู่แข่งตัวที่ 2 ประกอบด้วยแอททริบิวต์เลขที่ใบลงทะเบียนและรหัสชุดวิชา - คีย์คู่แข่งตัวที่ 3 คือ แอททริบิวต์รหัสนักศึกษา - คีย์คู่แข่งตัวที่ 4 คือ แอททริบิวต์เลขที่ใบลงทะเบียน 2.รีเลชันข้างต้นเป็นรีเลชันที่มีคีย์คู่แข่งเป็นคีย์ผสม ซึ่งมีแอททริบิวต์บางส่วนร่วมกัน หากพิจารณาจากข้อ 1 จะพบว่า ในรีเลชันข้างต้น คีย์คู่แข่งที่เป็นคีย์ผสม คือ คีย์คู่แข่งตัวที่ 1 และคีย์คู่แข่งตัวที่ 2 ซึ่งคีย์คู่แข่งทั้ง 2 ตัว มีแอททริบิวต์ร่วมกัน 1 แอททริบิวต์ คือ แอททริบิวต์รหัสชุดวิชา 2. การทำให้รีเลชันมีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์รีเลชันข้างต้นเป็นรีเลชันที่ไม่มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์ เนื่องจากเมื่อเลือกคีย์คู่แข่งตัวใดเป็นคีย์หลักแล้ว คีย์คู่แข่งที่ไม่ได้ถูกเลือกจะยังคงปรากฏซ้ำซ้อนอยู่ในรีเลชัน และมีคุณสมบัติในการระบุค่าของแอททริบิวต์ที่เป็นคีย์หลักหรือแอททริบิวต์ที่ประกอบกันเป็นคีย์หลักอีกด้วย ตัวอย่างเช่น หากเลือกแอททริบิวต์รหัสนักศึกษาและรหัสชุดวิชาซึ่งเป็นคีย์คู่แข่งตัวที่1 เป็นคีย์หลัก แอททริบิวต์เลขที่ใบลงทะเบียนจะยังคงปรากฏซ้ำซ้อนอยู่ในรีเลชัน และมีคุณสมบัติในการระบุค่าของ แอททริบิวต์รหัสนักศึกษาซึ่งเป็นส่วนประกอบหนึ่งของคีย์หลักได้ด้วย นอกจากนี้ รีเลชันข้างต้นยังประกอบด้วยข้อมูลที่ซ้ำซ้อนกัน ซึ่งจะทำให้เกิดความผิดพลาดได้ง่ายเมื่อทำการเพิ่ม ลบ หรือปรับปรุงข้อมูลอีกด้วย ตัวอย่างเช่น การแก้ไขเลขที่ใบลงทะเบียนจาก 205 เป็น 520 หรือการแก้ไขรหัสนักศึกษาจาก 41010703 เป็น 41014077 จะต้องทำซ้ำหลายแห่ง ทำให้สิ้นเปลืองเวลา รวมทั้งอาจทำการแก้ไขข้อมูลได้ไม่ครบถ้วนและถูกต้องทุกรายการก็ได้ เพื่อขจัดปัญหาความซ้ำซ้อนของข้อมูลที่เกิดขึ้นจึงต้องทำการจำแนกรีเลชันออกเป็น 2 รีเลชันย่อย เพื่อไม่ให้มีแอททริบิวต์ใดในรีเลชันที่สามารถระบุค่าของแอททริบิวต์ที่เป็นคีย์หลัก หรือส่วนใดส่วนหนึ่งของแอททริบิวต์ที่ประกอบกันเป็นคีย์หลักได้ ซึ่งการจำแนกรีเลชันทำได้ด้วยการนำคีย์คู่แข่งตัวใดตัวหนึ่งที่เป็น ตัวระบุค่าของแอททริบิวต์อื่น และแอททริบิวต์หรือกลุ่มของแอททริบิวต์ที่ถูกระบุค่าแยกออกเป็นรีเลชันใหม่ ดังนั้น รีเลชันข้างต้นจึงสามารถจำแนกเป็นรีเลชันย่อยได้ 2 แบบ คือ แบบที่หนึ่ง - รีเลชันรหัสนักศึกษา-รหัสชุดวิชา ประกอบด้วย แอททริบิวต์รหัสนักศึกษา รหัสชุดวิชา และ หมู่เรียน โดยมีแอททริบิวต์รหัสนักศึกษาและรหัสชุดวิชา เป็นคีย์หลัก - รีเลชันรหัสนักศึกษา-เลขที่ใบลงทะเบียน ประกอบด้วย แอททริบิวต์รหัสนักศึกษา และเลขที่ ใบลงทะเบียน โดยมีแอททริบิวต์รหัสนักศึกษาเป็นคีย์หลัก ภาพที่ 4.17 การจำแนกรีเลชันฯ แบบที่ 1แบบที่สอง - รีเลชันเลขที่ใบลงทะเบียน-รหัสชุดวิชา ประกอบด้วย แอททริบิวต์เลขที่ใบลงทะเบียนรหัส ชุดวิชา และหมู่เรียน โดยมีแอททริบิวต์เลขที่ใบลงทะเบียนและรหัสชุดวิชา เป็นคีย์หลัก - รีเลชันรหัสนักศึกษา-เลขที่ใบลงทะเบียน ประกอบด้วย แอททริบิวต์รหัสนักศึกษา และเลขที่ ใบลงทะเบียน โดยมีแอททริบิวต์รหัสนักศึกษาเป็นคีย์หลัก ภาพที่ 4.18การจำแนกรีเลชันฯ แบบที่ 2 |
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|