จริงๆ สิ่งเดียวที่ดีกว่าคือ ดูง่ายกว่า จะใช้กับฐานข้อมูลที่ไม่สับซ้อนมาก เพราะมันจะเป็นแค่หลักการณ์ง่ายๆ ซี่งถ้าคนมีประสบการณ์เรื่องการออกแบบฐานข้อมูลดีแล้ว ไม่จำเป็นต้องดูตารางแบบนี้เลยก็นึกภาพออกครับ แต่หลักการณ์จริงก็เป็นเรื่องของ Normalization จะดีสุด เพราะเราจะสามารถลดความซ้ำซ้อนของข้อมูลได้ตามมาตรฐานของการออกแบบฐานข้อมูล แต่สำหรับมือใหม่ถ้าลองให้ไปดูเรื่องการ Normalization คงงง เพราะมันจะมีเรื่องของการตีความข้อมูลด้วย มันไม่ใช่ตรรกะที่ว่า 1+1 = 2 เหมือนเลข แต่ต้องอาศัยประสบการณ์ความเข้าใจมากๆเลยทีเดียว ผมเคยขอคำแนะนำจากอาจารย์ที่สอนเรื่องนี้หลายท่านทำ Normalization ในโจทย์เดียวกันไม่เหมือนกัน และจากการศึกษาของผม ผมก็ว่ามันไม่ง่ายเลยครับ คือถ้าอธิบายหลักการณ์ Normalization เหมือนนกแก้วนกขุนทองท่องไปก็ดูเหมือนไม่ยาก แต่เวลานำไปใช้ออกแบบจริงๆ งง เพราะมันไม่มีภาพให้เห็นเหมือนการทำ Relational Schema นี่เป็นอย่างเดียวที่ทำให้ผมเลือกแบบนี้มาอธิบายครับ Normalization จะมีอยู่ด้วยกัน 5 ระดับ 1. First Normal Form (1NF) - ค่าของแอททริบิวต์ต่างๆ ในแต่ละทัพเพิล(เรคคอร์ด) มีค่าของข้อมูลเป็นค่าเดี่ยวๆ (atomicity) - ข้อมูลในตารางนั้นต้องไม่มีข้อมูลที่เป็นกลุ่มซ้ำ (no repeating group of data) 2. Second Normal Form (2NF) - ตารางข้อมูลนั้นต้องมีคุณสมบัติผ่าน First Normal Form มาแล้ว - แอททริบิวต์ที่ไม่ใช่คีย์หลัก ต้องขึ้นกับคีย์หลักอย่างแท้จริง กล่าวคือ แอททริบิวต์ที่ไม่ใช่คีย์หลักจะต้องไม่ขึ้นกับส่วนใดส่วนหนึ่งของคีย์หลัก (กำจัดการขึ้นต่อกันแบบบางส่วน) 3. Third Normal Form (3NF) - ตารางข้อมูลนั้นต้องมีคุณสมบัติผ่าน Second Normal Form มาแล้ว - แอททริบิวต์ที่ไม่ใช่คีย์หลัก จะต้องไม่สามารถระบุค่าของแอททริบิวต์อื่นที่ไม่ใช่คีย์หลักในตารางข้อมูลนั้น (กำจัดการขึ้นต่อกันแบบทรานซิทีฟ) 4. Boyce-Codd Normal Form (BCNF) - ตารางข้อมูลนั้นต้องมีคุณสมบัติผ่าน Third Normal Form มาแล้ว - Relation จะต้องไม่มีคีย์คู่แข่งหลายคีย์ (multiple candidate key) - คีย์คู่แข่งต้องไม่เป็นคีย์ผสม (composite key) 5. Fourth Normal Form (4NF) - ตารางข้อมูลนั้นต้องมีคุณสมบัติผ่าน Boyce-Codd Normal Form มาแล้ว - ต้องไม่มีการขึ้นต่อกันแบบเชิงกลุ่ม คือ ความสัมพันธ์แบบ 3 แอททริบิวต์ขึ้นไป เช่น รู้ A รู้ B ได้, รู้ A รู้ C ได้ ทั้งที่ B กับ C ไม่เกี่ยวข้องกัน 6. Fifth Normal Form (5NF) - ตารางข้อมูลนั้นต้องมีคุณสมบัติผ่าน Fourth Normal Form มาแล้ว - Relation นั้น ไม่มีคุณสมบัติของการขึ้นต่อกันแบบจอยน์ - หรือ หาก Relation นั้น มีคุณสมบัติของการขึ้นต่อกันแบบจอยน์ Relation ย่อยที่แตกออกมาจะต้องมีคีย์หลักของ Relation เดิมอยู่ด้วยเสมอ ลองศึกษาจากคลิปนี้ดูได้ครับ kzbin.info/www/bejne/mqTWh2evhNOtpa8