1 / 81

บทที่ 5

บทที่ 5. กระบวนการปรับบรรทัดฐาน (Normalization Process). เกริ่นนำ. การออกแบบโมเดลฐานข้อมูลเชิงสัมพันธ์ สามารถออกแบบได้ 2 ทางคือ ผ่านขั้นตอนการออกแบบโมเดลข้อมูลแบบ E – R กล่าวคือ โมเดลฐานข้อมูลเชิงสัมพันธ์ จะได้จากการแปลงมาจาก โมเดลข้อมูลแบบ E – R

lazarus
Télécharger la présentation

บทที่ 5

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. บทที่ 5 กระบวนการปรับบรรทัดฐาน (Normalization Process)

  2. เกริ่นนำ การออกแบบโมเดลฐานข้อมูลเชิงสัมพันธ์ สามารถออกแบบได้ 2 ทางคือ • ผ่านขั้นตอนการออกแบบโมเดลข้อมูลแบบ E – R กล่าวคือ โมเดลฐานข้อมูลเชิงสัมพันธ์ จะได้จากการแปลงมาจาก โมเดลข้อมูลแบบ E – R • ไม่ผ่านขั้นตอนการออกแบบโมเดลข้อมูลแบบ E – R กล่าวคือ นักวิเคราะห์และออกแบบ ระบบที่มีประสบการณ์สูง สามารถออกแบบโมเดลฐานข้อมูลเชิงสัมพันธ์ได้โดยตรง โดยไม่ต้องผ่านการออกแบบโมเดลแบบ E – R มาก่อน โดยอาศัยเพียงข้อมูลปฐมภูมิ (Primary Data) เช่น รายงาน หรือแบบฟอร์มต่างๆ เป็นข้อมูลเบื้องต้นในการออกแบบโมเดลฐานข้อมูลเชิงสัมพันธ์

  3. เกริ่นนำ • กระบวนการปรับบรรทัดฐาน”(Normalization Process ) เป็นทฤษฎีหนึ่งที่ผู้ออกแบบฐานข้อมูลจะต้องนำมาใช้ในการแปลงข้อมูลที่อยู่ในรูปแบบที่ซับซ้อน ให้อยู่ในรูปแบบที่ง่ายต่อการนำไปใช้งานและก่อให้เกิดปัญหาน้อยที่สุด • การแสดงถึงกระบวนการปรับบรรทัดฐานสำหรับโมเดลฐานข้อมูลเชิงสัมพันธ์ที่ออกแบบได้จะให้กระบวนการ รูปแบบบรรทัดฐาน (Normal form)

  4. ความสำคัญของการปรับบรรทัดฐานความสำคัญของการปรับบรรทัดฐาน • ขั้นตอนการออกแบบโมเดลฐานข้อมูลเชิงสัมพันธ์โดยไม่ผ่านโมเดลแบบ E – R นั้น ขั้นตอนแรกผู้ออกแบบระบบจะต้องทำคือ การเก็บรวบรวมข้อมูลที่เกี่ยวกับการทำงานของระบบงานเดิม โดยข้อมูลที่เก็บได้นี้อาจอยู่ในรูปแบบของเอกสารรายงานต่างๆ ดังตัวอย่างที่แสดงในรูปที่ 5.1

  5. ความสำคัญของการปรับบรรทัดฐานความสำคัญของการปรับบรรทัดฐาน รูปที่ 5.1: แสดงตัวอย่างรายงานค่าแรงของคนงานประจำเดือน กุมภาพันธ์ ปี 2553

  6. ความสำคัญของการปรับบรรทัดฐานความสำคัญของการปรับบรรทัดฐาน • จากรูปที่ 5.1 จะมีรูปแบบที่ซับซ้อนเนื่องจากมีการเก็บรายละเอียดของข้อมูลทุกอย่างไว้ด้วยกันหมด แล้วสร้างเป็นรีเลชันเดียวและตั้งชื่อรีเลชันนี้ว่า รีเลชัน “รายงานการทำงาน” ดังรูปที่ 5.2

  7. ความสำคัญของการปรับบรรทัดฐานความสำคัญของการปรับบรรทัดฐาน รายงานการทำงาน รูปที่ 5.2 :แสดงตัวอย่างรีเลชัน “รายงานการทำงาน” ที่ยังไม่ผ่านการปรับบรรทัดฐาน

  8. ความสำคัญของการปรับบรรทัดฐานความสำคัญของการปรับบรรทัดฐาน • รูปที่ 5.2 เป็นรีเลชันที่มีรูปแบบผิดคุณสมบัติข้อที่ 1 คือ “ช่องแต่ละช่องของรีเลชันจะต้องบรรจุข้อมูลที่มีเพียงค่าเดียวเท่านั้น”แต่ช่องข้อมูลของคอลัมน์ที่เป็น รหัสสถานที่ก่อสร้าง ที่อยู่สถานที่ก่อสร้าง ประเภทสถานที่ก่อสร้าง วันที่เริ่มทำงาน และ จำนวน ช.ม. ทั้งหมดที่ทำ จะมีข้อมูลมากกว่าหนึ่งค่าเก็บอยู่ (Multivalued attributes) ซึ่งหมายความว่าคนงานแต่ละคนอาจถูกกำหนดให้ไปทำงานยังสถานที่ก่อสร้างได้มากกว่าหนึ่งแห่ง จึงเรียกลักษณะของข้อมูลที่อยู่ในคอลัมน์เหล่านี้ว่า กลุ่มข้อมูลซ้ำ (Repeating Groups) และจะเรียกรีเลชันที่มีกลุ่มข้อมูลซ้ำนี้ว่าเป็นรีเลชันที่ยังไม่ผ่านการปรับบรรทัดฐาน (Unnormalized relation)

  9. รายงานการทำงาน (รหัสคนงาน, ชื่อ, ประเภทความชำนาญ, อัตราโบนัส, จำนวน ช.ม. ขั้นต่ำ, รหัสผู้ควบคุม, อัตราค่าแรง / ช.ม. (รหัสสถานที่ก่อสร้าง, ที่อยู่สถานที่ก่อสร้าง, ประเภทสถานที่ก่อสร้าง, วันที่เริ่มทำ, จำนวนช.ม. ทั้งหมดที่ทำ) กลุ่มข้อมูลซ้ำ ความสำคัญของการปรับบรรทัดฐาน แอททริบิวท์ที่อยู่ในวงเล็บในสุด คือ รหัสสถานที่ก่อสร้าง ที่อยู่สถานที่ก่อสร้าง ประเภทสถานที่ก่อสร้าง วันที่เริ่มทำงาน และ จำนวนช.ม. ทั้งหมดที่ทำนั้น จะแทนแอททริบิวท์ที่มีข้อมูลที่เป็นกลุ่มข้อมูลซ้ำ

  10. ความสำคัญของการปรับบรรทัดฐานความสำคัญของการปรับบรรทัดฐาน • กระบวนการปรับบรรทัดฐาน (The Normalization Process) จึงมีความสำคัญต่อการออกแบบระบบฐานข้อมูลมาก ฐานข้อมูลที่ดีที่สามารถจัดการข้อมูลได้อย่างมีประสิทธิภาพนั้น จะต้องถูกออกแบบโดยผ่านกระบวนการปรับบรรทัดฐานมาก่อนเสมอ

  11. กระบวนการปรับบรรทัดฐานกระบวนการปรับบรรทัดฐาน • กระบวนการปรับบรรทัดฐาน เป็นกระบวนการที่ใช้ในการ กระจาย รีเลชันที่มีโครงสร้างที่ซับซ้อนออกเป็นรีเลชันย่อยๆ ที่มีโครงสร้างที่ง่าย ซึ่งจะช่วยทำให้ไม่มีข้อมูลที่ซ้ำซ้อน และอยู่ในรูปแบบบรรทัดฐาน (Normal Form) ที่สามารถนำไปใช้งาน และไม่ก่อให้เกิดปัญหาใดๆ ได้

  12. ประโยชน์ของการปรับบรรทัดฐานประโยชน์ของการปรับบรรทัดฐาน • การปรับบรรทัดฐานเป็นเครื่องมือที่ช่วยในการออกแบบโมเดลฐานข้อมูลแบบเชิงสัมพันธ์ให้อยู่ในรูปแบบที่เป็นบรรทัดฐาน • ทำให้ทราบว่ารีเลชันที่ถูกออกแบบมานั้น อยู่ในรูปแบบบรรทัดฐานหรือไม่ และจะก่อให้เกิดปัญหาอะไรบ้าง และมีวิธีแก้ไขปัญหานั้นอย่างไร • เมื่อทำการปรับบรรทัดฐานรีเลชันที่มีปัญหาแล้ว จะรับประกันได้ว่ารีเลชันนั้นจะไม่มีปัญหาอีก หรือถ้ามีก็จะมีน้อยลง

  13. รูปที่ 5.3 :แสดงกระบวนการปรับบรรทัดฐานของรีเลชันในระดับต่างๆ

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

  15. ฟังก์ชันการขึ้นต่อกัน (Functional Dependencies) นิยาม ฟังก์ชันการขึ้นต่อกัน  ถ้ารีเลชัน R ใดๆ ประกอบด้วยแอททริบิวท์ X และ Y เขียนแทนได้ด้วยสัญลักษณ์ R(X, Y) ซึ่ง X และ Y นี้อาจเป็นแอททริบิวท์เดียวหรือเป็นกลุ่มของแอททริบิวท์ก็ได้ “แอททริบิวท์ Y จะถูกเรียกว่ามีฟังก์ชันการขึ้นต่อกันกับแอททริบิวท์ X”หรือเขียนเป็นสัญลักษณ์ด้วย X  Y ถ้าข้อมูลแต่ละค่าที่ไม่ซ้ำกัน (Unique) ของแอททริบิวท์ X มีข้อมูลของ Y ที่เกี่ยวข้องกับ X เพียง 1 ค่าเท่านั้น หรือกล่าวอีกนัยหนึ่งคือข้อมูลแต่ละค่าใน X จะใช้ในการ เลือก (Determines) ข้อมูลเพียง 1 ค่า ที่อยู่ใน Y และจะเรียก X ได้อีกอย่างว่าเป็น ตัวเลือก (Determinant)

  16. ประเภทของฟังก์ชันการขึ้นต่อกันประเภทของฟังก์ชันการขึ้นต่อกัน แบ่งประเภทของฟังก์ชันการขึ้นต่อกันได้เป็น 3 ประเภทดังต่อไปนี้ 1. การขึ้นต่อกันอย่างสมบูรณ์ (Complete dependencies) เป็นรูปแบบการขึ้นต่อกัน ที่แอททริบิวท์ที่ไม่ใช่คีย์หลักของรีเลชัน มีการขึ้นต่อแอททริบิวท์หรือกลุ่มของแอททริบิวท์ที่ทำหน้าที่เป็นคีย์หลักของรีเลชัน

  17. ประเภทของฟังก์ชันการขึ้นต่อกันประเภทของฟังก์ชันการขึ้นต่อกัน การขึ้นต่อกันอย่างสมบูรณ์ (Complete dependencies) • ตัวอย่างที่ 1 คนงาน (รหัสคนงาน, ชื่อคนงาน, ประเภทความชำนาญ,รหัสผู้ควบคุม,อัตราค่าแรง/ช.ม.) รหัสคนงาน ใช้เป็นคีย์หลัก ดังนั้น ถ้าอ้างถึงรหัสคนงานเพียงหนึ่งรหัส ก็จะทำให้ทราบถึงข้อมูลที่อยู่ในแอททริบิวท์อื่นๆ จากรีเลชัน “คนงาน” หรือกล่าวอีกนัยหนึ่งคือ แอททริบิวท์ ชื่อคนงาน ประเภทความชำนาญ รหัสผู้ควบคุม และ อัตราค่าแรง / ช.ม. จะขึ้นกับแอททริบิวท์ รหัสคนงาน อย่างสมบูรณ์ นั่นเอง ซึ่งสามารถเขียนแทนด้วยสัญลักษณ์ได้ดังนี้ รหัสคนงาน ชื่อคนงาน, ประเภทความชำนาญ, รหัสผู้ควบคุม, อัตราค่าแรง / ช.ม.

  18. ประเภทของฟังก์ชันการขึ้นต่อกันประเภทของฟังก์ชันการขึ้นต่อกัน การขึ้นต่อกันอย่างสมบูรณ์ (Complete dependencies) • ตัวอย่างที่ 2 การทำงาน (รหัสคนงาน, รหัสสถานที่ก่อสร้าง, วันที่เริ่มทำงาน, จำนวนชั่วโมงทำงานทั้งหมด) รีเลชันนี้จะมี รหัสคนงาน และ รหัสสถานที่ก่อสร้าง ร่วมกันเป็นคีย์หลัก ดังนั้น การอ้างถึง รหัสคนงาน หนึ่งๆ และ รหัสสถานที่ก่อสร้าง ที่คนงานคนนั้นทำอยู่ จะทำให้ทราบถึง ข้อมูลในแอททริบิวท์ วันที่เริ่มทำงาน และ จำนวนชั่วโมงทำงานทั้งหมด ของคนงานรหัสนั้น หรือกล่าวอีกนัยหนึ่งคือ แอททริบิวท์ วันที่เริ่มทำงาน และ จำนวนชั่วโมงทำงานทั้งหมด จะขึ้นกับ แอททริบิวท์ รหัสคนงาน และ รหัสสถานที่ก่อสร้าง อย่างสมบูรณ์ ดังข้อความสัญลักษณ์ดังนี้ รหัสคนงาน, รหัสสถานที่ก่อสร้าง วันที่เริ่มทำงาน, จำนวนชั่วโมงทำงานทั้งหมด

  19. ประเภทของฟังก์ชันการขึ้นต่อกันประเภทของฟังก์ชันการขึ้นต่อกัน 2. การขึ้นต่อกันเพียงบางส่วน (Partial dependencies)เป็นรูปแบบการขึ้นต่อกันที่แอททริบิวท์ที่ไม่ใช่คีย์หลักของรีเลชันมีการขึ้นต่อแอททริบิวท์บางตัวที่ร่วมเป็นคีย์หลักของรีเลชัน

  20. ประเภทของฟังก์ชันการขึ้นต่อกันประเภทของฟังก์ชันการขึ้นต่อกัน การขึ้นต่อกันเพียงบางส่วน (Partial dependencies) • ตัวอย่าง การทำงาน (รหัสคนงาน, ชื่อคนงาน, รหัสสถานที่ก่อสร้าง, ประเภทสถานที่ก่อสร้าง, ที่ตั้งสถานที่ก่อสร้าง) - แอททริบิวท์ รหัสคนงาน และ รหัสสถานที่ก่อสร้าง เป็นคีย์หลักของรีเลชัน - แอททริบิวท์ ชื่อคนงาน เป็นแอททริบิวท์ที่ขึ้นกับแอททริบิวท์ รหัสคนงาน ซึ่งเป็นเพียงบางส่วนของคีย์หลัก - แอททริบิวท์ ประเภทสถานที่ก่อสร้าง และ ที่ตั้งสถานที่ก่อสร้าง ก็เป็นแอททริบิวท์ที่ขึ้นกับแอททริบิวท์ รหัสสถานที่ก่อสร้าง ซึ่งเป็นเพียงบางส่วนของคีย์หลัก รหัสคนงาน ชื่อคนงาน รหัสสถานที่ก่อสร้าง ประเภทสถานที่ก่อสร้าง, ที่ตั้งสถานที่ก่อสร้าง

  21. ประเภทของฟังก์ชันการขึ้นต่อกันประเภทของฟังก์ชันการขึ้นต่อกัน 3. การขึ้นต่อกันแบบทรานซิทีฟ (Transitive dependencies) เป็นรูปแบบการขึ้นต่อกันที่ แอททริบิวท์ที่ไม่ใช่คีย์หลักของรีเลชัน (nonkey attribute) มีการขึ้นกับแอททริบิวท์อื่นที่ไม่ได้เป็นคีย์หลักหรือส่วนของคีย์หลักของรีเลชัน

  22. ประเภทของฟังก์ชันการขึ้นต่อกันประเภทของฟังก์ชันการขึ้นต่อกัน การขึ้นต่อกันแบบทรานซิทีฟ (Transitive dependencies) • ตัวอย่าง คนงาน - ชำนาญ (รหัสคนงาน, ชื่อคนงาน, ประเภทความชำนาญ, อัตราโบนัส, จำนวน ช.ม. ที่ต้องทำขั้นต่ำ, รหัสผู้ควบคุม, อัตราค่าแรง / ช.ม.) - คีย์หลัก คือ รหัสคนงาน โดยมีแอททริบิวท์ ชื่อคนงาน ประเภทความชำนาญ จำนวน ช.ม. ที่ต้องทำขั้นต่ำ อัตราโบนัส รหัสผู้ควบคุม และอัตราค่าแรง / ช.ม. ขึ้นกับแอททริบิวท์ รหัสคนงาน นี้อย่างสมบูรณ์ - แต่จะมีแอททริบิวท์ อัตราโบนัส และ จำนวน ช.ม. ขั้นต่ำ ที่ขึ้นกับแอททริบิวท์ ประเภทความชำนาญ -แอททริบิวท์ อัตราโบนัส จำนวน ช.ม. ขั้นต่ำ และ ประเภทความชำนาญ ต่างก็ไม่ใช่คีย์หลักหรือส่วนหนึ่งของคีย์หลัก จึงเรียกการขึ้นต่อกันระหว่างแอททริบิวท์ที่ไม่ใช่คีย์นี้ว่า การขึ้นต่อกันแบบทรานซิทีฟ ซึ่งสามารถเขียนเป็นข้อความสัญลักษณ์ได้ดังนี้ ประเภทความชำนาญอัตราโบนัส, จำนวน ช.ม. ขั้นต่ำ

  23. รูปแบบบรรทัดฐานระดับที่ 1(First Normal Form:1 NF) • กระบวนการปรับบรรทัดฐานระดับแรกสุด จะเป็นกระบวนการในการปรับตารางข้อมูลของผู้ใช้งาน (เช่นรูปที่ 5.2) ให้อยู่ในรูปของรีเลชัน (แต่ละเซลล์ จะมีเพียงข้อมูลเดียว) เพื่อให้อยู่ในรูปแบบบรรทัดฐานระดับที่ 1 โดยมีนิยามดังนี้

  24. รูปแบบบรรทัดฐานระดับที่ 1(First Normal Form : 1 NF) • นิยาม 1NF รีเลชันใดจะอยู่ในรูปแบบบรรทัดฐานระดับที่ 1(1NF) ได้ รีเลชันนั้นจะต้องมีคุณสมบัติต่อไปนี้ • . เป็นรีเลชันที่มีคีย์หลักของรีเลชัน • . ไม่มีกลุ่มข้อมูลซ้ำ(repeating groups) อยู่ในรีเลชัน หรือกล่าวอีกนัยหนึ่งคือ แต่ละช่องหรือเซล (cell) ของรีเลชันจะต้องเก็บข้อมูลเพียงหนึ่งค่า (atomic value) เท่านั้น • . แอททริบิวท์ทุกแอททริบิวท์ที่ไม่ใช่คีย์ (Nonkey attributes) จะต้องขึ้นกับแอททริบิวท์ที่เป็นคีย์หลักอย่างสมบูรณ์

  25. การแปลงรีเลชันที่ไม่เป็นบรรทัดฐานให้เป็นรีเลชันที่มีรูปแบบบรรทัดฐานระดับที่ 1 (1NF) • การปรับรีเลชันนี้ให้อยู่ในรูปแบบบรรทัดฐานระดับที่ 1 นี้จะต้องกำจัดกลุ่มข้อมูลซ้ำออกไป ซึ่งมีวิธีการดังนี้ 1. แยกแอททริบิวท์ที่เป็นกลุ่มข้อมูลซ้ำออกไปสร้างเป็นรีเลชันใหม่หนึ่งรีเลชัน โดยนำคีย์ที่อยู่ในรีเลชันเดิมมาร่วมสร้างเป็นคีย์หลักของรีเลชันด้วย 2.แอททริบิวท์ที่ไม่มีกลุ่มข้อมูลซ้ำก็จะถูกแยกออกเป็นอีกรีเลชัน แล้วทำการหาคีย์หลักให้กับรีเลชันนั้น

  26. การแปลงรีเลชันที่ไม่เป็นบรรทัดฐานให้เป็นรีเลชันที่มีรูปแบบบรรทัดฐานระดับที่ 1 (1NF) รูปที่ 5.4 :การแปลงรีเลชัน “รายงานการทำงาน” ซึ่งเป็นรีเลชันที่ไม่เป็นบรรทัดฐานออกเป็นรีเลชันใหม่สองรีเลชัน คือ รีเลชัน “คนงาน – ชำนาญ” และ รีเลชัน “การทำงาน – ก่อสร้าง” ซึ่งอยู่ในรูปแบบบรรทัดฐานระดับ 1

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

  28. การแปลงรีเลชันที่ไม่เป็นบรรทัดฐานให้เป็นรีเลชันที่มีรูปแบบบรรทัดฐานระดับที่ 1 (1NF) ถึงแม้ว่ารีเลชันจะถูกออกแบบให้อยู่ในรูปแบบบรรทัดฐานแล้ว แต่จากลักษณะข้อมูลภายในรีเลชันบางรีเลชันที่เป็น 1NF ก็อาจก่อให้เกิดปัญหาขึ้นได้อีก ตัวอย่างเช่น ในรีเลชัน “การทำงาน – ก่อสร้าง” ข้างต้น แม้จะอยู่ในรูปแบบ 1NF แล้ว แต่จะเห็นว่าแถวข้อมูลหลายแถวมีข้อมูลที่ซ้ำซ้อนกัน เช่น ข้อมูลสถานที่ก่อสร้างที่มีรหัส “516” ที่มีข้อมูลรายละเอียด อันได้แก่ ที่อยู่สถานที่ก่อสร้าง และ ประเภทสถานที่ก่อสร้าง ถูกเก็บอยู่ในแถวที่ 1 และ 3 เป็นต้น

  29. การเก็บข้อมูลที่ซ้ำซ้อน • จะทำให้ต้องสิ้นเปลืองเนื้อที่ในการจัดเก็บข้อมูลแล้ว ยังก่อให้เกิดปัญหาตามมาอีกหลายข้อดังต่อไปนี้ • ความผิดปกติต่อการแก้ไขเปลี่ยนแปลงข้อมูล (Update Anomaly) • ความผิดปกติต่อการลบข้อมูล (Delete Anomaly) • ความผิดปกติต่อการเพิ่มข้อมูล (Insert Anomaly) ดังนั้น จึงเห็นได้ว่า แม้รีเลชันจะอยู่ในรูปแบบบรรทัดฐานระดับที่ 1 แล้ว แต่บางรีเลชันก็ยังมีความซ้ำซ้อนของข้อมูลและก่อให้เกิดปัญหาขึ้นได้อีก จึงต้องมีกระบวนการปรับบรรทัดฐานในระดับต่อไป ได้แก่ การทำรีเลชันให้อยู่ในรูปแบบบรรทัดฐานระดับ 2 หรือ 3 ต่อไปอีก

  30. รูปแบบบรรทัดฐานระดับที่ 2 (Second Normal Form : 2NF) รูปแบบบรรทัดฐานระดับที่ 2 และ 3 นี้จะยุ่งเกี่ยวกับเรื่องของความสัมพันธ์ระหว่างคีย์หลักและแอททริบิวท์อื่นๆ ที่ไม่ได้เป็นส่วนหนึ่งส่วนใดของคีย์หลักหรือ แอททริบิวท์ที่ไม่ใช่คีย์

  31. การแปลงรีเลชันรูปแบบบรรทัดฐานระดับที่ 1 (1NF) เป็นรีเลชันรูปแบบบรรทัดฐานระดับที่ 2 (2NF) รูปที่ 5.5 :แผนภาพแสดงการขึ้นต่อกันของแอททริบิวท์ของรีเลชันที่มีรูปแบบ บรรทัดฐานระดับ 1 (1NF)

  32. การแปลงรีเลชันรูปแบบบรรทัดฐานระดับที่ 1 (1NF) เป็นรีเลชันรูปแบบบรรทัดฐานระดับที่ 2 (2NF) รูปแบบบรรทัดฐานระดับ 2 (2NF) นั้น จะพบว่ารีเลชัน “การทำงาน – ก่อสร้าง” จะไม่อยู่ในรูปแบบของ 2NF เนื่องจากมีแอททริบิวท์ที่ไม่ใช่คีย์บางตัว (ได้แก่ ที่อยู่สถานที่ก่อสร้าง และ ประเภทสถานที่ก่อสร้าง) ขึ้นกับแอททริบิวท์ที่เป็นส่วนหนึ่งของคีย์หลัก (ได้แก่ รหัสสถานที่ก่อสร้าง) ในการแปลงรีเลชัน “การทำงาน – ก่อสร้าง” ให้อยู่ในรูปแบบของ 2NF จะต้องแยกกลุ่มของแอททริบิวท์ที่ขึ้นกับบางส่วนของคีย์หลักนั้นออกมาเป็นอีกรีเลชันหนึ่ง และแอททริบิวท์ที่เหลือที่ขึ้นกับคีย์หลักจริงๆ ก็ให้อยู่อีกรีเลชันหนึ่ง ดังรูปที่ 5.6

  33. การแปลงรีเลชันรูปแบบบรรทัดฐานระดับที่ 1 (1NF) เป็นรีเลชันรูปแบบบรรทัดฐานระดับที่ 2 (2NF) รูปที่ 5.6 แสดงการแยกรีเลชัน “การทำงาน – ก่อสร้าง” ออกเป็นรีเลชันใหม่สองรีเลชัน คือ รีเลชัน “สถานที่ก่อสร้าง” และรีเลชัน “การทำงาน” ที่มีรูปแบบเป็นทั้ง 1NF และ 2NF

  34. การแปลงรีเลชันรูปแบบบรรทัดฐานระดับที่ 1 (1NF) เป็นรีเลชันรูปแบบบรรทัดฐานระดับที่ 2 (2NF) • ดังนั้น รีเลชัน “การทำงาน – ก่อสร้าง” จะถูกแยกออกเป็นรีเลชันใหม่สองรีเลชัน ได้แก่ รีเลชัน “สถานที่ก่อสร้าง” และรีเลชัน “การทำงาน” โดยรีเลชัน “สถานที่ก่อสร้าง” • มีแอททริบิวท์ รหัสสถานที่ก่อสร้าง ทำหน้าที่เป็นคีย์หลัก สำหรับรีเลชัน “การทำงาน” จะมีแอททริบิวท์ รหัสคนงาน และ รหัสสถานที่ก่อสร้าง ร่วมกันทำหน้าที่เป็นคีย์หลัก • ทั้งสองรีเลชันนี้จะมีรูปแบบเป็นทั้ง 1NF และ 2NF เนื่องจากแอททริบิวท์ที่ไม่ใช่คีย์ของแต่ละรีเลชันจะมีการขึ้นกับคีย์หลักอย่างสมบูรณ์ • จะเห็นว่าไม่มีรีเลชันใดที่มีแอททริบิวท์ที่ไม่ใช่คีย์ขึ้นกับบางส่วนของคีย์หลัก จะสามารถเขียนแทนข้อความสัญลักษณ์แทนรีเลชันทั้งสองได้ดังต่อไปนี้

  35. การแปลงรีเลชันรูปแบบบรรทัดฐานระดับที่ 1 (1NF) เป็นรีเลชันรูปแบบบรรทัดฐานระดับที่ 2 (2NF) ดังนั้น จากขั้นตอนการปรับบรรทัดฐานของรีเลชัน “รายงานการทำงาน” เพื่อทำให้อยู่ในรูปแบบ 1NF และ 2NF จะทำให้ได้รีเลชันย่อยเกิดขึ้น ดังแสดงในรูปที่ 5.7

  36. การแปลงรีเลชันรูปแบบบรรทัดฐานระดับที่ 1 (1NF) เป็นรีเลชันรูปแบบบรรทัดฐานระดับที่ 2 (2NF)

  37. การแปลงรีเลชันรูปแบบบรรทัดฐานระดับที่ 1 (1NF) เป็นรีเลชันรูปแบบบรรทัดฐานระดับที่ 2 (2NF) รูปที่ 5.7 :แสดงตัวอย่างข้อมูลที่เก็บอยู่ในรีเลชันที่มีรูปแบบบรรทัดฐานระดับ 2 (2NF) จะพบว่าปัญหาที่เกี่ยวกับความซ้ำซ้อนของข้อมูลและความขัดแย้งของข้อมูลจะลดลง รวมทั้งความผิดปกติในการแก้ไข การลบและการเพิ่มข้อมลก็จะลดลงด้วย แม้บางครั้งอาจจะยังไม่หมดไปเสียทีเดียว

  38. ปัญหาที่อาจเกิดกับรีเลชันที่มีรูปแบบบรรทัดฐานระดับ 2 • ความผิดปกติต่อการแก้ไขเปลี่ยนแปลงข้อมูล (Update Anomaly) • ความผิดปกติต่อการลบข้อมูล (Delete Anomaly) • ความผิดปกติของการเพิ่มข้อมูล (Insert Anomaly)

  39. รูปแบบบรรทัดฐานระดับที่ 3 (Third Normal Form: 3NF) รีเลชันที่มีรูปแบบบรรทัดฐานระดับที่ 3 หรือ 3NF นี้ จะเป็นรีเลชันที่มีนิยามดังต่อไปนี้

  40. รูปแบบบรรทัดฐานระดับที่ 3 (Third Normal Form: 3NF) จากตัวอย่างรีเลชัน “คนงาน-ชำนาญ” ในรูปที่ 5.7 แม้จะอยู่ในรูปแบบ 2NF แล้ว แต่ก็ยังมีแอททริบิวท์ อัตราโบนัส และ จำนวนช.ม.ขั้นต่ำ ที่ขึ้นกับแอททริบิวท์ ประเภทความชำนาญ แบบทรานซิทีฟ เนื่องจากทั้งสามแอททริบิวท์ต่างก็เป็นแอททริบิวท์ที่ไม่ใช่คีย์ทั้งหมด ดังแสดงในรูปที่ 5.8 รูปที่ 5.8 แสดงการขึ้นต่อกันแบบทรานซิทีฟของแอททริบิวท์ภายในรีเลชัน “คนงาน-ชำนาญ” (ลูกศรสีเข้ม)

  41. การแปลงรีเลชันรูปแบบบรรทัดฐานระดับที่ 2 (2NF) เป็นรีเลชันรูปแบบบรรทัดฐานระดับที่ 3 (3NF) ในการแปลงรีเลชัน “คนงาน-ชำนาญ” ที่อยู่ในรูปแบบ 2NF ให้อยู่ในรูป 3NF จะมีขั้นตอนคือ 1. ทำการแยกแอททริบิวท์ที่มีการขึ้นต่อกันแบบทรานซิทีฟ ออกมาสร้างเป็นรีเลชันใหม่อีกหนึ่งรีเลชันพร้อมทั้งกำหนดให้แอททริบิวท์ที่เป็นตัวเลือก (determinant) ทำหน้าที่เป็นคีย์หลักของรีเลชันใหม่นั้นด้วย 2. แอททริบิวท์ที่เป็นตัวเลือกนี้จะยังคงต้องถูกเก็บอยู่ในรีเลชันเดิม เพื่อทำหน้าที่เป็นคีย์นอกเชื่อมโยงไปยังคีย์หลักของรีเลชันใหม่อีกที ดังนั้น รีเลชัน “คนงาน-ชำนาญ” จะถูกแยกออกเป็น 2 รีเลชัน ได้แก่ รีเลชัน “คนงาน” และ รีเลชัน “ความชำนาญ” ที่สามารถขียนแทนด้วยโมเดลเชิงสัมพันธ์ของรีเลชันทั้งสองได้ดังรูปที่ 5.9 และตัวอย่างข้อมูลที่เก็บอยู่ในแต่ละรีเลชันจะแสดงอยู่ในรูปที่ 5.10

  42. การแปลงรีเลชันรูปแบบบรรทัดฐานระดับที่ 2 (2NF) เป็นรีเลชันรูปแบบบรรทัดฐานระดับที่ 3 (3NF) รูปที่ 5.9 แสดงโมเดลเชิงสัมพันธ์ของรีเลชัน “คนงาน” และความ “ชำนาญ” ที่แยกได้จากรีเลชัน “คนงาน-ชำนาญ” รีเลชัน “คนงาน” และ “ความชำนาญ” ที่แยกได้นี้ จะเป็นรีเลชันที่อยู่ในรูป 3NF แล้ว เนื่องจากแอททริบิวท์ที่ไม่ใช่คีย์ทุกตัวจะขึ้นกับคีย์หลักท่านั้น ซึ่งการปรับบรรทัดฐานรีเลชันให้อยู่ในรูปแบบของ 3NF นี้ จะทำให้เรามั่นใจได้ว่าปัญหาที่จะเกิดขึ้นจากฟังก์ชันการขึ้นต่อกันไม่ว่าจะเป็นปัญหาความผิดปกติของการแก้ไข การลบหรือการเพิ่มข้อมูลจะหมดไปเมื่อรีเลชันถูกแปลงให้อยู่ในรูปของ 3NF นี้

  43. การแปลงรีเลชันรูปแบบบรรทัดฐานระดับที่ 2 (2NF) เป็นรีเลชันรูปแบบบรรทัดฐานระดับที่ 3 (3NF) ดังนั้น จากรีเลชันแรกสุดคือ “รายงานการทำงาน” ที่อยู่ในรูปที่ 5.2 ซึ่งเป็นรีเลชันที่ยังไม่ได้ผ่านการปรับบรรทัดฐาน เมื่อนำมาผ่านกระบวนการปรับบรรทัดฐานโดยแปลงให้อยู่ในรูปแบบตั้งแต่ 1NF จนถึง 3NF จะทำให้เกิดรีเลชันใหม่ทั้งหมด 4 รีเลชัน ดังแสดงเป็นโมเดลเชิงสัมพันธ์ดังรูปที่ 5.11 จากนิยามที่กล่าวว่าทุกรีเลชันที่ไม่มีกลุ่มข้อมูลซ้ำจะมีรูปแบบเป็นแบบ 1NF และรีเลชันที่มีรูปแบบเป็น 2NF ก็จะเป็น 1NF ด้วย และรีเลชันที่มีรูปแบบเป็น 3NF ก็จะเป็น 2NF ด้วย ดังนั้น จึงกล่าวได้ว่ารีเลชันที่มีรูปแบบ 3NF จะมีรูปแบบเป็นทั้ง 2NF และ 1NF ด้วยนั่นเอง

  44. การแปลงรีเลชันรูปแบบบรรทัดฐานระดับที่ 2 (2NF) เป็นรีเลชันรูปแบบบรรทัดฐานระดับที่ 3 (3NF) รูปที่ 5.10: การแยกรีเลชัน “คนงาน-ชำนาญ” ออกเป็นรีเลชัน “คนงาน” และ “ความชำนาญ” ที่มีรูปแบบเป็นทั้ง 2NF และ 3NF

  45. การแปลงรีเลชันรูปแบบบรรทัดฐานระดับที่ 2 (2NF) เป็นรีเลชันรูปแบบบรรทัดฐานระดับที่ 3 (3NF) รูปที่5.11:โมเดลฐานข้อมูลเชิงสัมพันธ์ของระบบงานรับเหมาก่อสร้าง

  46. ปัญหาบางประการที่อาจเกิดกับรีเลชันที่มีอยู่ในรูปแบบบรรทัดฐานระดับ 3 แม้ว่ารีเลชันต่างๆ ในรูปที่ 5.11 จะอยู่ในรูปแบบของ 3NF และไม่ก่อให้เกิดปัญหาความผิดปกติใดๆ แล้วแต่ก็ยังมีสิ่งที่ควรพิจารณาเพิ่มเติมในบางเรื่องต่อไปนี้ 1. พิจารณารีเลชันความชำนาญ สามารถทำได้โดยการสร้างแอททริบิวท์ขึ้นมาใหม่ที่เก็บข้อมูลที่เป็นตัวเลข เพื่อทำหน้าที่เป็นคีย์หลักแทน เช่น การสร้างแอททริบิวท์ รหัสประเภทความชำนาญ ขึ้นมาทำหน้าที่เป็นคีย์หลักแทน ก็จะช่วยขจัดปัญหานี้ได้ 2. พิจารณารีเลชันการทำงาน การสร้างคีย์หลักขึ้นมาใหม่ให้กับรีเลชัน เช่น สร้างแอททริบิวท์ชื่อ รหัสการทำงาน ขึ้นมาซึ่งเก็บข้อมูลตัวเลขที่ไม่ซ้ำกัน ให้ทำหน้าที่เป็นคีย์หลักแทน แต่แอททริบิวท์ รหัสคนงาน และ รหัสสถานที่ก่อสร้าง แม้จะไม่ได้ทำหน้าที่เป็นคีย์หลักแล้ว แต่ก็จะต้องทำหน้าที่เป็นคีย์นอกเชื่อมความสัมพันธ์ระหว่างรีเลชัน “การทำงาน” “คนงาน” และ “สถานที่ก่อสร้าง” เข้าด้วยกัน

  47. ปัญหาบางประการที่อาจเกิดกับรีเลชันที่มีอยู่ในรูปแบบบรรทัดฐานระดับ 3 รูปที่ 5.12:โมเดลฐานข้อมูลเชิงสัมพันธ์ของระบบงานรับเหมาก่อสร้างที่ได้รับการปรับปรุงคีย์หลักของบางรีเลชัน

  48. ปัญหาบางประการที่อาจเกิดกับรีเลชันที่มีอยู่ในรูปแบบบรรทัดฐานระดับ 3 3. แม้การแตกรีเลชันย่อยที่อยู่ในรูปแบบ 3NF จะเป็นสิ่งที่ต้องการมากที่สุด แต่สิ่งที่เกิดขึ้นตามมาก็คือ ลักษณะการแตกรีเลชันแบบนี้จะทำให้การค้นหาข้อมูลมีความซับซ้อนมากขึ้น เช่น ถ้าต้องการค้นหาว่า คนงานรหัส “2521” ที่ทำงานอยู่ ณ สถานที่ก่อสร้างที่มีรหัสเป็น “516” คือสถานที่ก่อสร้างที่อยู่ที่ใด และเป็นสถานที่ก่อสร้างประเภทใด จะต้องทราบว่าจะทำอย่างไรจึงจะเชื่อมข้อมูลในสองรีเลชันนี้ได้ ซึ่งเรื่องนี้จะได้กล่าวอีกทีในเรื่องภาษาที่ใช้จัดการฐานข้อมูล ซึ่งอยู่ในบทที่ 8 ต่อไป

  49. รูปที่ 5.13: แสดงตัวอย่างรีเลชัน “คนงาน-ผู้ควบคุม” รูปแบบบรรทัดฐานบอยส์-คอดด์ (Boyce-Codd Normal : BCNF) จากรีเลชันรูปแบบบรรทัดฐานทั้ง 3 แบบที่กล่าวมาแล้ว รูปแบบ 3NF จะเป็นรูปแบบที่นักออกแบบต้องการมากที่สุด เนื่องจากสามารถขจัดปัญหาความผิดปกติในการจัดการฐานข้อมูลได้ รูปที่ 5.13: แสดงตัวอย่างรีเลชัน “คนงาน-ผู้ควบคุม”

  50. ข้อกำหนดหรือเงื่อนไขสำหรับรีเลชัน “คนงาน-ผู้ควบคุม” ถ้ามีข้อกำหนดสำหรับการเก็บข้อมูลในรีเลชัน “คนงาน-ผู้ควบคุม” ดังต่อไปนี้ 1. คนงานแต่ละคนจะมีความชำนาญได้มากกว่าหนึ่งด้าน เช่น คนงานรหัส “4500” มีความชำนาญทั้งทางด้าน “ประปา” และ “ไฟฟ้า” 2. คนงานแต่ละคนจะมีผู้ควบคุมได้มากกว่าหนึ่งคน เช่น คนงานรหัส “4500” จะมีผู้ควบคุม 2 คนคือ “สมหมาย” และ “สมัย” 3. ความชำนาญด้านหนึ่งๆ จะสามารถมีผู้ควบคุมได้มากกว่าหนึ่งคน เช่นคนงานรหัส “1121” ที่มีความชำนาญทางด้าน “ไฟฟ้า” จะมีผู้ควบคุมชื่อ “บรรเจิด” และคนงานรหัส “2543” ซึ่งก็มีความชำนาญทางด้าน “ไฟฟ้า” เช่นกันแต่มีผู้ควบคุมอีกคนชื่อ “สมัย” 4. ผู้ควบคุมแต่ละคนจะมีความชำนาญด้านใดด้านหนึ่งเท่านั้น(ไม่มีความชำนาญมากกว่าหนึ่งด้าน) 5. คนงานคนหนึ่ง ที่มีความชำนาญด้านใดด้านหนึ่ง จะมีผู้ควบคุมพียงคนเดียวเท่านั้น 6. คนงานคนหนึ่ง ที่มีผู้ควบคุมคนหนึ่ง จะมีความชำนาญเพียงด้านเดียวเท่านั้น

More Related