Skip to main content

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

Anonim

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

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

  • ลบส่วนย่อยของข้อมูลที่ใช้กับหลายแถวของตารางและวางไว้ในตารางที่แยกต่างหาก
  • สร้างความสัมพันธ์ระหว่างตารางใหม่เหล่านี้กับรุ่นก่อนโดยใช้คีย์ต่างประเทศ

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

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

  • CustNum
  • ชื่อจริง
  • นามสกุล
  • ที่อยู่
  • เมือง
  • สถานะ
  • ไปรษณีย์

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

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

  • ไปรษณีย์
  • เมือง
  • สถานะ

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

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

  • CustNum
  • ชื่อจริง
  • นามสกุล
  • ที่อยู่
  • ไปรษณีย์

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