หากคุณทำงานกับฐานข้อมูลมาระยะหนึ่งแล้ว คุณอาจเคยได้ยินคำว่านอร์มัลไลเซชัน บางทีอาจมีคนถามคุณว่า "ฐานข้อมูลนั้นเป็นมาตรฐานหรือไม่" หรือ "อยู่ใน BCNF หรือไม่" การทำให้เป็นมาตรฐานมักถูกมองว่าเป็นความฟุ่มเฟือยเฉพาะนักวิชาการเท่านั้นที่มีเวลา อย่างไรก็ตาม การรู้หลักการของการทำให้เป็นมาตรฐานและนำไปใช้กับงานออกแบบฐานข้อมูลประจำวันของคุณนั้นไม่ได้ซับซ้อนขนาดนั้น และสามารถปรับปรุงประสิทธิภาพของ DBMS ของคุณได้อย่างมาก
ในบทความนี้ เราจะแนะนำแนวคิดเรื่องนอร์มัลไลเซชันและดูคร่าวๆ เกี่ยวกับรูปแบบปกติที่พบบ่อยที่สุด
การทำให้เป็นมาตรฐานคืออะไร?
การทำให้เป็นมาตรฐานคือกระบวนการจัดระเบียบข้อมูลในฐานข้อมูลอย่างมีประสิทธิภาพ มีสองเป้าหมายของกระบวนการทำให้เป็นมาตรฐาน:การกำจัดข้อมูลที่ซ้ำซ้อน (เช่น การจัดเก็บข้อมูลเดียวกันในตารางมากกว่าหนึ่งตาราง) และการทำให้มั่นใจว่าการพึ่งพาข้อมูลนั้นสมเหตุสมผล (จัดเก็บข้อมูลที่เกี่ยวข้องในตารางเท่านั้น) ทั้งสองสิ่งนี้เป็นเป้าหมายที่คู่ควร เนื่องจากลดจำนวนพื้นที่ที่ฐานข้อมูลใช้ไป และทำให้แน่ใจว่าข้อมูลถูกจัดเก็บอย่างมีเหตุผล
รูปแบบปกติ
ชุมชนฐานข้อมูลได้พัฒนาชุดแนวทางปฏิบัติเพื่อให้แน่ใจว่าฐานข้อมูลนั้นเป็นมาตรฐาน สิ่งเหล่านี้เรียกว่ารูปแบบปกติและถูกนับจากหนึ่ง (รูปแบบต่ำสุดของการทำให้เป็นมาตรฐานเรียกว่ารูปแบบปกติที่หนึ่งหรือ 1NF) ถึงห้า (รูปแบบปกติที่ห้าหรือ 5NF) ในการใช้งานจริง คุณมักจะเห็น 1NF, 2NF และ 3NF พร้อมกับ 4NF เป็นครั้งคราว รูปแบบปกติที่ห้านั้นไม่ค่อยพบเห็นและจะไม่ถูกกล่าวถึงในบทความนี้
ก่อนที่เราจะเริ่มต้นการสนทนาเกี่ยวกับแบบฟอร์มปกติ สิ่งสำคัญคือต้องชี้ให้เห็นว่าแบบฟอร์มเหล่านี้เป็นแนวทางและหลักเกณฑ์เท่านั้น ในบางครั้ง จำเป็นต้องละทิ้งพวกเขาเพื่อให้เป็นไปตามข้อกำหนดทางธุรกิจที่นำไปใช้ได้จริง อย่างไรก็ตาม เมื่อรูปแบบต่างๆ เกิดขึ้น จำเป็นต้องประเมินการแตกสาขาที่เป็นไปได้ที่อาจมีในระบบของคุณและพิจารณาถึงความไม่สอดคล้องกันที่อาจเกิดขึ้น ที่กล่าวว่าเรามาสำรวจรูปแบบปกติกัน
First Normal Form (1NF)
รูปแบบปกติครั้งแรก (1NF) กำหนดกฎพื้นฐานสำหรับฐานข้อมูลที่มีการจัดระเบียบ:
- กำจัดคอลัมน์ที่ซ้ำกันออกจากตารางเดียวกัน
- สร้างตารางแยกกันสำหรับแต่ละกลุ่มของข้อมูลที่เกี่ยวข้องกัน และระบุแต่ละแถวด้วยคอลัมน์หรือชุดของคอลัมน์ที่ไม่ซ้ำ (คีย์หลัก)
Second Normal Form (2NF)
รูปแบบปกติที่สอง (2NF) กล่าวถึงแนวคิดของการลบข้อมูลที่ซ้ำกัน:
- ตรงตามข้อกำหนดทั้งหมดของแบบฟอร์มปกติครั้งแรก
- ลบชุดย่อยของข้อมูลที่นำไปใช้กับหลายแถวของตารางและวางไว้ในตารางแยกกัน
- สร้างความสัมพันธ์ระหว่างตารางใหม่เหล่านี้กับรุ่นก่อนผ่านการใช้คีย์นอก
แบบฟอร์มปกติที่สาม (3NF)
รูปแบบปกติที่สาม (3NF) ก้าวไปอีกขั้นที่สำคัญ:
- ตรงตามข้อกำหนดทั้งหมดของแบบฟอร์มปกติที่สอง
- ลบคอลัมน์ที่ไม่ขึ้นอยู่กับคีย์หลัก
Boyce-Codd Normal Form (BCNF หรือ 3.5NF)
แบบฟอร์มปกติของ Boyce-Codd หรือที่เรียกว่า "รูปแบบปกติที่สามและครึ่ง (3.5)" เพิ่มข้อกำหนดอีกหนึ่งข้อ:
- ตรงตามข้อกำหนดทั้งหมดของแบบฟอร์มปกติที่สาม
- ดีเทอร์มีแนนต์ทุกตัวต้องเป็นคีย์ตัวเลือก
ฟอร์มปกติที่สี่ (4NF)
สุดท้าย แบบฟอร์มปกติที่สี่ (4NF) มีข้อกำหนดเพิ่มเติมหนึ่งข้อ:
- ตรงตามข้อกำหนดทั้งหมดของแบบฟอร์มปกติที่สาม
- ความสัมพันธ์อยู่ใน 4NF หากไม่มีการอ้างอิงแบบหลายค่า
โปรดจำไว้ว่า แนวทางการปรับมาตรฐานเหล่านี้เป็นแบบสะสม สำหรับฐานข้อมูลที่จะอยู่ใน 2NF นั้นต้องเป็นไปตามเกณฑ์ทั้งหมดของฐานข้อมูล 1NF ก่อน
ฉันควรทำให้เป็นมาตรฐานหรือไม่
แม้ว่าการปรับฐานข้อมูลให้เป็นมาตรฐานมักจะเป็นความคิดที่ดี แต่ก็ไม่ใช่ข้อกำหนดที่แน่นอน มีบางกรณีที่จงใจละเมิดกฎของการทำให้เป็นมาตรฐานเป็นแนวปฏิบัติที่ดี
หากคุณต้องการให้แน่ใจว่าฐานข้อมูลของคุณถูกทำให้เป็นมาตรฐาน ให้เริ่มด้วยการเรียนรู้วิธีใส่ฐานข้อมูลของคุณลงใน First Normal Form