ปรับฐานข้อมูลของคุณให้เป็นปกติ: การเปลี่ยนไปใช้แบบฟอร์มปกติที่สอง (2NF)

การใส่ฐานข้อมูลในฟอร์มปกติที่สอง

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

จำข้อกำหนดทั่วไปของ 2NF:

กฎเหล่านี้สามารถสรุปได้ในคำแถลงง่ายๆ 2NF พยายามที่จะลดปริมาณข้อมูลซ้ำซ้อนในตารางด้วยการแยกออกวางลงในตารางใหม่และ สร้างความสัมพันธ์ ระหว่างตารางเหล่านี้

ลองดูตัวอย่าง ลองจินตนาการถึงร้านค้าออนไลน์ที่เก็บข้อมูลลูกค้าไว้ในฐานข้อมูล พวกเขาอาจมีตารางเดียวที่เรียกว่าลูกค้าที่มีองค์ประกอบต่อไปนี้:

ดูสั้น ๆ ที่ตารางนี้แสดงข้อมูลซ้ำซ้อนเล็กน้อย เราจัดเก็บรายการ "Sea Cliff, NY 11579" และ "Miami 33157" สองครั้ง ตอนนี้อาจดูเหมือนไม่ได้เป็นที่เก็บข้อมูลที่เพิ่มมากเกินไปในตัวอย่างง่ายๆ แต่ลองนึกภาพพื้นที่ที่เสียไปถ้าเรามีแถวหลายพันแถวในตารางของเรา นอกจากนี้หากมีการเปลี่ยนแปลงรหัสไปรษณีย์สำหรับ Sea Cliff เราจำเป็นต้องทำการเปลี่ยนแปลงในหลาย ๆ ที่ทั่วทั้งฐานข้อมูล

ในโครงสร้างฐานข้อมูลที่สอดคล้องกับ 2NF ข้อมูลที่ซ้ำซ้อนนี้จะถูกแยกและเก็บไว้ในตารางที่แยกต่างหาก ตารางใหม่ของเรา (เรียกว่า ZIP) อาจมีฟิลด์ต่อไปนี้:

ถ้าเราต้องการที่จะมีประสิทธิภาพมากเราสามารถกรอกข้อมูลในตารางนี้ได้ล่วงหน้า - ที่ทำการไปรษณีย์จะมีไดเรกทอรีรหัสไปรษณีย์ที่ถูกต้องทั้งหมดและความสัมพันธ์ระหว่างเมือง / รัฐ แน่นอนคุณได้พบกับสถานการณ์ที่ใช้ฐานข้อมูลประเภทนี้ คนที่รับคำสั่งซื้ออาจถามรหัสไปรษณีย์ก่อนจากนั้นจึงรู้ว่าเมืองและรัฐที่คุณโทรมา การจัดเรียงประเภทนี้จะช่วยลดข้อผิดพลาดของผู้ปฏิบัติงานและเพิ่มประสิทธิภาพ

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

ตอนนี้เราได้ลดจำนวนข้อมูลที่ซ้ำซ้อนที่จัดเก็บไว้ในฐานข้อมูลและโครงสร้างของเราอยู่ในรูปแบบปกติที่สอง!

หากคุณต้องการตรวจสอบให้แน่ใจว่าฐานข้อมูลของคุณเป็นแบบปกติให้สำรวจบทความอื่น ๆ ของเราในชุดข้อมูลต่อไปนี้: