Back to Home

DataBase System

Lesson1235679101112131415

Lesson 4 : Normal Form



Lesson Plan
Section No.
Section 1
Section 2
Test
PDF file
PPT File


<<Prev pageCourse MapNext page>>

Print content of this page
Save content of this page

 

รูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์

โดยทั่วไป ในทางปฏิบัติการจัดทำให้เป็นรูปแบบที่เป็นบรรทัดฐานมักทำจนกระทั่งรีเลชันมี คุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 3 เนื่องจากสามารถขจัดปัญหาความซ้ำซ้อนของข้อมูลลงได้จนแทบไม่หลงเหลืออยู่แล้ว แต่ก็มีโอกาสที่จะเกิดปัญหาความซ้ำซ้อนของข้อมูลได้อีก แม้จะพบได้ค่อนข้างน้อยมากก็ตาม

ดังนั้น รูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์ (Boyce/Codd Normal Form : BCNF) เป็น รูปแบบที่ขยายขอบเขตมาจากรูปแบบที่เป็นบรรทัดฐานขั้นที่ 3 เพื่อให้การแก้ไขปัญหาความซ้ำซ้อนของ ข้อมูลที่พบในรีเลชันมีความชัดเจนและรัดกุมยิ่งขึ้น

1. คุณสมบัติของรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์

รีเลชันใด ๆ ที่ไม่มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์ คือ

1. รีเลชันใด ๆ ที่มีคีย์คู่แข่ง (candidate key) ตั้งแต่ 2 ตัวขึ้นไป

2. คีย์คู่แข่งนั้นเป็นคีย์ผสม ซึ่งมีแอททริบิวต์บางส่วนร่วมกัน

หรือกล่าวอีกนัยหนึ่ง รีเลชันใด ๆ จะมีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์ ก็ต่อเมื่อ

1. ทุกแอททริบิวต์ที่เป็นตัวระบุค่า หรือ Determinant ในรีเลชันนั้นต้องเป็นคีย์คู่แข่ง

2. ไม่มีแอททริบิวต์ใดในรีเลชันที่สามารถระบุค่าของแอททริบิวต์ที่เป็นคีย์หลัก หรือส่วนใดส่วนหนึ่งของแอททริบิวต์ที่ประกอบกันเป็นคีย์หลักได้

หมายเหตุ

1. นิยามคุณสมบัติของรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์ไม่ระบุว่า รีเลชันนั้นจะต้องมีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 3 ด้วย

2. โดยทั่วไปมักพบว่า รีเลชันที่มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์จะมีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 3 ด้วย และสำหรับรีเลชันที่มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 3 มักมีน้อยมากที่ไม่มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์

2. ขั้นตอนการจัดทำรีเลชันให้เป็นรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์

เพื่อแสดงให้เห็นถึงการจัดทำรีเลชันให้เป็นรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์ ในที่นี้ขอนำตัวอย่างรีเลชันมาประกอบดังนี้

1. รีเลชันที่ไม่มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์

รหัสนักศึกษา

เลขที่ใบลงทะเบียน

รหัสชุดวิชา

หมู่เรียน

41010703

205

729101

700

41010703

205

729111

711

41010703

205

999211

713

41010943

1368

729111

712

41010943

1368

999211

711

41010943

1368

729104

700

41012147

1684

729111

711

41012147

1684

999211

713

41012451

236

729111

712

41012451

236

999211

711

41013327

186

729103

700

41013780

123

999211

712

ภาพที่ 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

 

Go to top

 

Last Updated: 12/13/2001 11:22:25 AM
© โครงการเครือข่ายสารสนเทศเพื่อพัฒนาการศึกษา ทบวงมหาวิทยาลัย