นอร์มัลฟอร์ม


Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

นอร์มัลฟอร์ม

 

นอร์มัลไลเซชันคือการออกแบบฐานข้อมูลให้อยู่ในสภาพ "นอร์มัลฟอร์ม" (normal form ย่อ NF) ระดับต่างๆ เช่น ระดับที่ 1 (1NF) ระดับที่ 2 (2NF) คำว่านอร์มัลฟอร์มเป็นคำที่ถูกบัญญัติโดยคอดด์ นอกจากจะบัญญัติคำว่านอร์มัลฟอร์มแล้ว คอดด์ยังเป็นผู้นิยามนอร์มัลไลเซชันสามระดับแรกด้วย (คือ 1NF, 2NF และ 3NF) การออกแบบฐานข้อมูลไม่จำเป็นต้องทำ NF ให้ครบทุกระดับเสมอไปเพราะการทำ NF หลายๆ ระดับกับฐานข้อมูล OLAP อาจทำให้ประสิทธิภาพโดยรวมลดลง

นิยาม อะนอมาลิ

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

อะนอมาลิทำให้เกิดความผิดพลาดเมื่อเพิ่มลบหรือเปลี่ยนแปลงข้อมูลในลักษณะต่างๆ ดังนี้

  • อะนอมาลิของการแทรกข้อมูล: ความผิดปรกติเช่นนี้เกิดเมื่อแทรกข้อมูลใน CT โดยไม่ได้แทรกข้อมูลใน PT ก่อน ยกตัวอย่างเช่นในภาพ 6-1 จะเห็นว่า Author เป็น PT ทำหน้าที่เก็บรายชื่อนักเขียน Book คือ CT ทำหน้าที่เก็บรายละเอียดของหนังสือ การแทรกข้อมูลใหม่ตามปรกติต้องแทรกข้อมูลนักเขียนเข้าไปใน PT ก่อน แล้วค่อยแทรกข้อมูลหนังสือ (ที่นักเขียนผู้นั้นเขียน) เข้าสู่ CT หากผู้เขียนแทรกข้อมูลหนังสือก่อนที่จะแทรกข้อมูลนักเขียนจะถือเป็นอะนอมาลิของการแทรกข้อมูล

อะนอมาลิของการแทรกข้อมูล

  • อะนอมาลิของการลบข้อมูล: ความผิดปรกติเช่นนี้เกิดเมื่อผู้เขียนลบข้อมูลใน PT โดยไม่ได้ลบข้อมูลทั้งหมด (ที่สัมพันธ์กัน) ใน CT เสียด้วย ยกตัวอย่างเช่นในภาพ 6-2 จะเห็นว่า Author เป็น PT ทำหน้าที่เก็บรายชื่อนักเขียน Book เป็น CT ทำหน้าที่เก็บรายละเอียดของหนังสือ การลบข้อมูลนักเขียนหนึ่งคนตามปรกติต้องลบข้อมูลหนังสือของนักเขียนผู้นั้นทั้งหมดออกจาก CT ก่อน แล้วค่อยลบข้อมูลนักเขียนจาก PT หากผู้เขียนลบข้อมูลนักเขียนใน PT ก่อน ผู้เขียนจะขาดตัวเชื่อมโยงเพื่อลบข้อมูลหนังสือออกจาก CT (คือแถวข้อมูลใน CTกลายเป็นกำพร้า) ซึ่งถือว่าเป็นอะนอมาลิของการลบข้อมูล

 

อะนอมาลิของการลบข้อมูล

  • อะนอมาลิของการอัพเดตข้อมูล: เป็นความผิดปรกติลักษณะเดียวกับความผิดปรกติของการลบข้อมูล เมื่อมีการอัพเดตข้อมูล ข้อมูลต้องถูกอัพเดตทั้งที่ PT และ CT เพื่อป้องกันไม่ให้เกิดแถวข้อมูลกำพร้าใน CT
 
นิยามคำสำคัญในการทำนอร์มัลไลซ์

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

การพาดพิง

การพาดพิง (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

โฆษณา

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  เปลี่ยนแปลง )

Google photo

You are commenting using your Google account. Log Out /  เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out /  เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out /  เปลี่ยนแปลง )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: