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

 

รูปแบบที่เป็นบรรทัดฐานขั้นที่ 5

ในกระบวนการทำให้เป็นรูปแบบที่เป็นบรรทัดฐานตั้งแต่ขั้นที่ 1 มาจนถึงขั้นที่ 4 จะพบว่า เพื่อแก้ไขปัญหาความซ้ำซ้อนของข้อมูลที่ปรากฏในรีเลชัน มักจะทำการจำแนกรีเลชันออกเป็นรีเลชันย่อย (projection) ซึ่งจะทำให้ได้รีเลชันใหม่อย่างน้อย 2 รีเลชันย่อย และในทุกครั้งของการจำแนกรีเลชันออกเป็นรีเลชันย่อย สิ่งสำคัญที่ควรคำนึงถึงเสมอ คือ เมื่อทำการจำแนกรีเลชันออกเป็นรีเลชันย่อยแล้ว หากนำรีเลชันย่อยที่ถูกจำแนกมารวมกันจะต้องได้รีเลชันกลับไปเหมือนเช่นเดิมเสมอ นั่นคือ จะต้องไม่มีข้อมูลทูเพิลใดเกินมาจาก รีเลชันเดิม (no spurious tuple) หรือไม่มีข้อมูลทูเพิลใดสูญหายไปจากรีเลชันเดิม

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

ดังนั้น รูปแบบที่เป็นบรรทัดฐานขั้นที่ 5 (Fifth Normal Form : 5NF) จึงเป็นขั้นตอนสุดท้ายในกระบวนการทำให้เป็นรูปแบบที่เป็นบรรทัดฐาน ซึ่งเป็นการแก้ไขปัญหาความซ้ำซ้อนของข้อมูลที่ ปรากฏในรีเลชัน หากรีเลชันใดมีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 5 แล้วก็แทบจะรับรองได้ว่า ข้อมูลในรีเลชันนั้นมีความถูกต้องและสมบูรณ์ จนแทบจะไม่มีปัญหาความซ้ำซ้อนของข้อมูลหลงเหลืออยู่

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

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

รีเลชันใด ๆ จะมีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 5 หรือ Projection-Join Normal Form (PJ/NF) ก็ต่อเมื่อ

1. รีเลชันนั้น ๆ มีความสัมพันธ์ระหว่างแอททริบิวต์แบบ Join และรีเลชันย่อย ๆ ที่จำแนกออกมาต้องมีคีย์คู่แข่งของรีเลชันเดิมอยู่ด้วยเสมอ หรือ

2. รีเลชันนั้น ๆ ไม่มีความสัมพันธ์ระหว่างแอททริบิวต์แบบ Join

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

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

- รีเลชันนักศึกษาประกอบด้วย แอททริบิวต์ชื่อนักศึกษา ชื่ออาจารย์ที่ปรึกษา และวิชาเอก โดยมีแอททริบิวต์ชื่อนักศึกษา ชื่ออาจารย์ที่ปรึกษา และวิชาเอก ประกอบกันเป็นคีย์หลัก

ชื่อนักศึกษา

ชื่ออาจารย์ที่ปรึกษา

วิชาเอก

สมชาย พลจันทร์

สัมพันธ์ เย็นสำราญ

สถิติ

สุทิศา พินิจไพฑูรย์

ศิริภัทรา เหมือนมาลัย

คณิตศาสตร์

ณัฐพร ประคองเก็บ

เมธี ปิยะคุณ

สถิติ

นพดล ทับทิมทอง

ศิริชัย ศรีพรหม

คณิตศาสตร์

มัทนา พินิจไพฑูรย์

สัมพันธ์ เย็นสำราญ

สถิติ

สมชาย พลจันทร์

ศิริภัทรา เหมือนมาลัย

คณิตศาสตร์

ภาพที่ 4.21 รีเลชันนักศึกษา

จากภาพจะพบว่า เกิดปัญหาความซ้ำซ้อนของข้อมูลในรีเลชันดังนี้คือ การปรับปรุงข้อมูลใด ๆ จะต้องทำซ้ำหลายแห่ง ทำให้สิ้นเปลืองเวลา รวมทั้งอาจทำการแก้ไขข้อมูลได้ไม่ครบถ้วนและถูกต้องทุกรายการก็ได้ ตัวอย่างเช่น การแก้ไขข้อมูลชื่ออาจารย์ที่ปรึกษาจาก สัมพันธ์ เย็นสำราญ เป็น จันทนา พรหมศิริ นอกจากนี้ การลบข้อมูลออกจากรีเลชันอาจทำให้ข้อมูลบางส่วนสูญหายไปจากฐานข้อมูล ตัวอย่างเช่น หากนักศึกษาชื่อ นภดล ทับทิมทอง ลาออก ข้อมูลที่เกี่ยวข้องจะถูกลบไปทั้งทูเพิล ดังนั้น ข้อมูลชื่ออาจารย์ ที่ปรึกษา ศิริชัย ศรีพรหม ซึ่งมีเพียงแห่งเดียวในฐานข้อมูลก็จะสูญหายไปด้วย

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

จากการตรวจสอบพบว่า รีเลชันนักศึกษามีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 4 แล้ว เนื่องจาก

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

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

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

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

5.รีเลชันนักศึกษามีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 4 แล้ว เนื่องจากรีเลชัน นักศึกษาเป็นรีเลชันที่มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานของบอยส์และคอดด์แล้ว และไม่มีความสัมพันธ์ระหว่างแอททริบิวต์แบบหลายค่า

ลำดับถัดมา คือ การตรวจสอบว่า รีเลชันนักศึกษามีความสัมพันธ์ระหว่างแอททริบิวต์แบบ Join โดยรีเลชันย่อย ๆ ที่จำแนกออกมามีคีย์คู่แข่งของรีเลชันเดิมอยู่ด้วยเสมอ หรือไม่

จากการตรวจสอบพบว่า รีเลชันนักศึกษาสามารถจำแนกได้ 3 รีเลชันย่อย คือ รีเลชันที่ 1 รีเลชันที่ 2 และรีเลชันที่ 3

- รีเลชันที่ 1 ประกอบด้วยแอททริบิวต์ชื่อนักศึกษา และชื่ออาจารย์ที่ปรึกษา โดยมีแอททริบิวต์ชื่อนักศึกษา และชื่ออาจารย์ที่ปรึกษา ประกอบกันเป็นคีย์หลัก

- รีเลชันที่ 2 ประกอบด้วยแอททริบิวต์ชื่ออาจารย์ที่ปรึกษา และวิชาเอก โดยมีแอททริบิวต์ชื่ออาจารย์ที่ปรึกษา และวิชาเอก ประกอบกันเป็นคีย์หลัก

- รีเลชันที่ 3 ประกอบด้วยแอททริบิวต์ชื่อนักศึกษา และวิชาเอก โดยมีแอททริบิวต์ชื่อนักศึกษา และวิชาเอก ประกอบกันเป็นคีย์หลัก

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

ภาพที่ 4.22 ความสัมพันธ์ระหว่างแอททริบิวต์แบบ Join ของรีเลชันนักศึกษา

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

- รีเลชันการสอนประกอบด้วย แอททริบิวต์รหัสชุดวิชา หมู่เรียน และชื่ออาจารย์ผู้สอน โดยมี แอททริบิวต์รหัสชุดวิชา หมู่เรียน และชื่ออาจารย์ผู้สอน ประกอบกันเป็นคีย์หลัก

รหัสชุดวิชา

หมู่เรียน

ชื่ออาจารย์ผู้สอน

729101

700

ศิริชัย ศรีพรหม

729111

711

จันทนา พรหมศิริ

729111

712

ศิริชัย ศรีพรหม

729211

700

ศิริภัทรา เหมือนมาลัย

729211

700

ศิริชัย ศรีพรหม

ภาพที่ 4.23 รีเลชันการสอน

จากภาพจะพบว่า เกิดปัญหาความซ้ำซ้อนของข้อมูลในรีเลชันดังนี้คือ การลบข้อมูลออกจากรีเลชันอาจทำให้ข้อมูลบางส่วนสูญหายไปจากฐานข้อมูล ตัวอย่างเช่น หากปิดการสอนรหัสชุดวิชา 729101 หมู่ 700 ข้อมูลที่เกี่ยวข้องจะถูกลบไปทั้งทูเพิล ดังนั้น ข้อมูลชื่ออาจารย์ผู้สอน ศิริชัย ศรีพรหม ซึ่งมีเพียงแห่งเดียวในฐานข้อมูลก็จะสูญหายไปด้วย

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

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

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

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

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

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

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

ลำดับถัดมา คือ การตรวจสอบว่า รีเลชันการสอนมีความสัมพันธ์ระหว่างแอททริบิวต์แบบ Join โดยรีเลชันย่อย ๆ ที่จำแนกออกมามีคีย์คู่แข่งของรีเลชันเดิมอยู่ด้วยเสมอ หรือไม่

จากการตรวจสอบพบว่า รีเลชันการสอนสามารถจำแนกได้ 3 รีเลชันย่อย คือ รีเลชันที่ 1 รีเลชันที่ 2 และรีเลชันที่ 3

- รีเลชันที่ 1 ประกอบด้วยแอททริบิวต์รหัสชุดวิชา และหมู่เรียน โดยมีแอททริบิวต์รหัสชุดวิชา และหมู่เรียน ประกอบกันเป็นคีย์หลัก

- รีเลชันที่ 2 ประกอบด้วยแอททริบิวต์หมู่เรียน และชื่ออาจารย์ผู้สอน โดยมีแอททริบิวต์หมู่เรียน และชื่ออาจารย์ผู้สอน ประกอบกันเป็นคีย์หลัก

- รีเลชันที่ 3 ประกอบด้วยแอททริบิวต์รหัสชุดวิชา และชื่ออาจารย์ผู้สอน โดยมีแอททริบิวต์รหัสชุดวิชา และชื่ออาจารย์ผู้สอน ประกอบกันเป็นคีย์หลัก

ภาพที่ 4.24 ความสัมพันธ์ระหว่างแอททริบิวต์แบบ Join ของรีเลชันการสอน

เมื่อนำรีเลชันย่อยทั้งสามมาเชื่อมโยงกันจะพบว่า มีทูเพิลที่เกินมาจากรีเลชันเดิมหนึ่งทูเพิล เรียกว่า Spurious Tuple

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

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

 

Go to top

 

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