นอร์มัลฟอร์ม
มิถุนายน 13, 2009 ใส่ความเห็น
นอร์มัลฟอร์ม
นอร์มัลไลเซชันคือการออกแบบฐานข้อมูลให้อยู่ในสภาพ "นอร์มัลฟอร์ม" (normal form ย่อ NF) ระดับต่างๆ เช่น ระดับที่ 1 (1NF) ระดับที่ 2 (2NF) คำว่านอร์มัลฟอร์มเป็นคำที่ถูกบัญญัติโดยคอดด์ นอกจากจะบัญญัติคำว่านอร์มัลฟอร์มแล้ว คอดด์ยังเป็นผู้นิยามนอร์มัลไลเซชันสามระดับแรกด้วย (คือ 1NF, 2NF และ 3NF) การออกแบบฐานข้อมูลไม่จำเป็นต้องทำ NF ให้ครบทุกระดับเสมอไปเพราะการทำ NF หลายๆ ระดับกับฐานข้อมูล OLAP อาจทำให้ประสิทธิภาพโดยรวมลดลง นิยาม อะนอมาลิอะนอมาลิ (Anomaly ความวิปริต)เป็นสิ่งที่ไม่มีใครชอบและท่าน (ในฐานะที่เป็นนักออกแบบฐานข้อมูล) จะต้องหาทางขจัดมันออกไป ในการออกแบบฐานข้อมูล NF คือรูปแบบที่พึงประสงค์ส่วนอะนอมาลิคือรูปแบบที่ไม่พึงประสงค์ จุดมุ่งหมายของการออกแบบฐานข้อมูลคือการกำจัดอะนอมาลิ อะนอมาลิเป็นสิ่งไม่ดีเพราะมันคือตัวการที่ทำให้ข้อมูลขัดแย้งกันในทางตรรกะ อะนอมาลิทำให้เกิดความผิดพลาดเมื่อเพิ่มลบหรือเปลี่ยนแปลงข้อมูลในลักษณะต่างๆ ดังนี้
อะนอมาลิของการแทรกข้อมูล
อะนอมาลิของการลบข้อมูล
นิยามคำสำคัญในการทำนอร์มัลไลซ์ต่อไปนี้เป็นนิยามของคำสำคัญต่างๆ ซึ่งเป็นคำจาร์กอนในวิชาออกแบบฐานข้อมูล ท่านจำเป็นต้องเข้าใจความหมายของคำเหล่านี้จึงจะเรียนเรื่องการออกแบบฐานข้อมูลและนอร์มัลไลเซชันในหัวข้อต่อๆ ไปได้เข้าใจ คำเหล่านี้ไม่ใช่คำแปลกใหม่ แต่เป็นคำที่ท่านเคยเรียนมาแล้วในวิชาคณิตศาสตร์ระดับมัธยม (เรื่องพีชคณิตและแคลคูลัส) ทั้งนั้น การพาดพิงการพาดพิง (Functional Dependency ย่อ FD) Y เป็น FD ของ X เมื่อค่าของ Y ขึ้นกับค่าของ X ยกตัวอย่างเช่น หาก Y = X + 1 ค่าของ X ย่อมส่งผลต่อค่าของ Y ดังนั้น Y จึงเป็น FD ของ X ยกตัวอย่างเช่นตารางในภาพ 6-3 เป็นตารางเก็บข้อมูลสกุลเงิน คอลัมน์ FXCODE เก็บรหัสย่อของสกุลเงิน คอลัมน์ CURRENCY เก็บชื่อสกุลเงิน คอลัมน์ RATE เก็บอัตราแลกเปลี่ยน และคอลัมน์ COUNTRY เก็บชื่อประเทศ ในตารางนี้ข้อมูลในคอลัมน์ CURRENCY เป็น FD ของข้อมูลในคอลัมน์ FXCODE ตัวกำหนดตัวกำหนด (Determinant) X เป็นตัวกำหนดของ Y เมื่อค่าของ Y ขึ้นกับค่าของ X ยกตัวอย่างเช่นตารางในภาพ 6-3 ข้อมูลในคอลัมน์ FXCODE เป็นตัวกำหนดของข้อมูลในคอลัมน์ CURRENCY การพาดพิงทางอ้อมการพาดพิงทางอ้อม (Transitive Dependence ย่อ TD) Z เป็น TD ของ X เมื่อค่าของ X กำหนดค่าของ Y และค่าของ Y กำหนดค่าของ Z ดังนั้นค่าของ Z จึงขึ้นกับค่าของ X โดยอ้อมผ่านความสัมพันธ์ของ Y ยกตัวอย่างเช่นตารางในภาพ 6-3 จะเห็นว่า ค่าของคอลัมน์ RATE ขึ้นกับค่าของคอลัมน์ CURRENCY ซึ่งค่าของคอลัมน์ CURRENCYขึ้นกับค่าของคอลัมน์ COUNTRY อีกต่อหนึ่ง ดังนั้นคอลัมน์ RATE จึงเป็น TD ของคอลัมน์ COUNTRY
การพาดพิง ตัวกำหนด และการพาดพิงทางอ้อม
กุญแจเสนอ กุญแจเสนอ (Candidate Key ย่อ CK) คือคอลัมน์ที่อาจนำมาใช้ทำ PK ได้ ในภาพ 6-4 ทางซ้ายสุดคือตารางชื่อ Customer กรอบห้ากรอบทางขวาแสดงคอลัมน์ต่างๆ ที่มีภาวะเป็น CK คือเป็นคอลัมน์ที่อาจนำมาใช้เป็น PK ได้ โปรดสังเกตว่ามีสองตารางที่มี CK มากกว่าหนึ่งคอลัมน์ร่วมกันเป็น PK แม้ CK บางแบบในภาพนี้อาจสุดโต่งไปสักหน่อยแต่ก็ใช้อธิบายแนวคิดของ CK ได้ดี ตารางและกุญแจเสนอที่อาจนำมาใช้ได้ห้าแบบ
การพาดพิงสมบูรณ์การพาดพิงสมบูรณ์ (Full Functional Dependence ย่อ FFD) X เป็น FFD ของ Y เมื่อค่าของ X กำหนดค่าของ Y แต่ค่าของ X เมื่อร่วมกับค่าของ Z ไม่ได้กำหนดค่าของ Y กล่าวอีกอย่างคือค่าของ Y ขึ้นกับค่าของ X เท่านั้น ยกตัวอย่างเช่นตารางในภาพ 6-5 ซึ่งเหมือนตารางในภาพ 6-4 แต่เพิ่มคอลัมน์ Population ขึ้นอีกหนึ่งคอลัมน์ โปรแกรมสังเกตว่า Population ขึ้นกับค่าของ COUNTRY แต่ไม่ขึ้นกับ COUNTRY + RATE ดังนั้น Population เป็น FFD กับ COUNTRY แต่ไม่เกี่ยวข้องกับ RATE ดังนั้นในตัวกำหนด (ในตัวอย่างนี้คือ X หรือ Population) จะเป็นกุญแจผสมไม่ได้ การพาดพิงสมบูรณ์
การพาดพิงหลายค่าการพาดพิงหลายค่า (Multiple valued dependency ย่อ MVD) MVD คือกรณีที่ตารางมีสองคอลัมน์ และคอลัมน์หนึ่งเป็น PK และอีกคอลัมน์หนึ่งมีข้อมูลแบบคอลเลคชัน (Collection ข้อมูลเป็นกลุ่ม) เช่นอาร์เรย์หรือข้อความที่ขั้นด้วยลูกน้ำ ยกตัวอย่างเช่นตารางในภาพ 6-6 ตารางล่างมีคอลัมน์ SKILLS เป็น MVD ของคอลัมน์ NAME ส่วนตารางคอลัมน์ SKILLS ไม่เป็น MVD ของคอลัมน์ NAME เพราะภายในตารางมีคอลัมน์มากกว่าสองคอลัมน์
การพาดพิงหลายค่า
การพาดพิงเป็นวงรอบการพาดพิงเป็นวงรอบ (Cyclic Dependency ย่อ CD) ค่าของ X ขึ้นกับค่าของ Y และในขณะเดียวกันค่าของ Y ก็ขึ้นกับค่าของ X ด้วย (ไม่ว่าจะในทางตรงหรือในทางอ้อม) CD มักเกิดขึ้นเมื่อตารางมี PK เป็น CK จากคอลัมน์สามคอลัมน์หรือมากกว่า ยกตัวอย่างเช่น X สัมพันธ์กับ Y, Y สัมพันธ์กับ Z และ X สัมพันธ์กับ Z นั่นคือ Z ย้อนกลับไปพาดพิงกับ X วนไปเช่นนี้ การพาดพิงบางส่วนการพาดพิงบางส่วน (Partial Dependency ย่อ PD) เกิดขึ้นเมื่อคอลัมน์ใดคอลัมน์หนึ่งมีภาวะ FFD กับคอลัมน์ที่เป็น PK ซึ่งเป็น CK
|