1NF เป็นรูปแบบพื้นฐานที่สุดของแบบฟอร์มปกติ - แต่ละเซลล์ในตารางจะต้องมีข้อมูลเพียงชิ้นเดียวเท่านั้นและจะต้องไม่มีแถวที่ซ้ำกัน
2NF และ 3NF ล้วนเกี่ยวกับการพึ่งพาคีย์หลัก จำได้ว่าคีย์หลักอาจประกอบด้วยหลายคอลัมน์ อย่างที่ Chris พูดไว้ในคำตอบของเขา:
ข้อมูลขึ้นอยู่กับคีย์ [1NF] ทั้งคีย์ [2NF] และไม่มีอะไรนอกจากกุญแจ [3NF] (ดังนั้นช่วยฉันCodd )
2NF
สมมติว่าคุณมีตารางที่มีหลักสูตรที่ใช้ในภาคการศึกษาหนึ่งและคุณมีข้อมูลต่อไปนี้:
|-----Primary Key----| uh oh |
V
CourseID | SemesterID | #Places | Course Name |
------------------------------------------------|
IT101 | 2009-1 | 100 | Programming |
IT101 | 2009-2 | 100 | Programming |
IT102 | 2009-1 | 200 | Databases |
IT102 | 2010-1 | 150 | Databases |
IT103 | 2009-2 | 120 | Web Design |
นี่ไม่ใช่ใน 2NFเนื่องจากคอลัมน์ที่สี่ไม่ได้ขึ้นอยู่กับคีย์ทั้งหมด - แต่เป็นเพียงส่วนหนึ่งเท่านั้น ชื่อหลักสูตรขึ้นอยู่กับ ID ของหลักสูตร แต่ไม่มีส่วนเกี่ยวข้องกับภาคการศึกษาใด ๆ ดังนั้นอย่างที่คุณเห็นเรามีข้อมูลที่ซ้ำกันหลายแถวบอกเราว่า IT101 เป็นโปรแกรมและ IT102 เป็นฐานข้อมูล ดังนั้นเราจึงแก้ไขได้โดยการย้ายชื่อหลักสูตรไปยังตารางอื่นโดยที่ CourseID เป็นคีย์ทั้งหมด
Primary Key |
CourseID | Course Name |
---------------------------|
IT101 | Programming |
IT102 | Databases |
IT103 | Web Design |
ไม่มีความซ้ำซ้อน!
3NF
เอาล่ะสมมติว่าเราเพิ่มชื่อครูของหลักสูตรและรายละเอียดบางอย่างเกี่ยวกับพวกเขาลงใน RDBMS:
|-----Primary Key----| uh oh |
V
Course | Semester | #Places | TeacherID | TeacherName |
---------------------------------------------------------------|
IT101 | 2009-1 | 100 | 332 | Mr Jones |
IT101 | 2009-2 | 100 | 332 | Mr Jones |
IT102 | 2009-1 | 200 | 495 | Mr Bentley |
IT102 | 2010-1 | 150 | 332 | Mr Jones |
IT103 | 2009-2 | 120 | 242 | Mrs Smith |
ตอนนี้หวังว่ามันควรจะเป็นที่ชัดเจนว่า TeacherName จะขึ้นอยู่กับ TeacherID - ดังนั้นนี่คือไม่ได้อยู่ใน 3NF ในการแก้ไขปัญหานี้เราทำเช่นเดียวกับที่เราทำใน 2NF - นำฟิลด์ TeacherName ออกจากตารางนี้และวางไว้ในของมันเองซึ่งมี TeacherID เป็นกุญแจสำคัญ
Primary Key |
TeacherID | TeacherName |
---------------------------|
332 | Mr Jones |
495 | Mr Bentley |
242 | Mrs Smith |
ไม่มีความซ้ำซ้อน !!
สิ่งสำคัญที่ต้องจำคือถ้าสิ่งที่ไม่ได้อยู่ใน 1NF ก็ไม่ได้อยู่ใน 2NF หรือ 3NF ดังนั้นแต่ละรูปแบบปกติเพิ่มเติมต้องมีทุกอย่างที่ในรูปแบบปกติที่ลดลงมีบวกบางเงื่อนไขพิเศษซึ่งจะต้องทั้งหมดจะสำเร็จ