การทำให้เป็นมาตรฐานของ DBMS: ตัวอย่างฐานข้อมูล 1NF, 2NF, 3NF
การทำให้ฐานข้อมูลเป็นมาตรฐานคืออะไร?
normalization เป็นเทคนิคการออกแบบฐานข้อมูลที่ช่วยลดความซ้ำซ้อนของข้อมูลและกำจัดลักษณะที่ไม่พึงประสงค์ เช่น การแทรก การอัปเดต และการลบความผิดปกติ กฎการทำให้เป็นมาตรฐานจะแบ่งตารางขนาดใหญ่ออกเป็นตารางเล็กๆ และเชื่อมโยงตารางเหล่านั้นโดยใช้ความสัมพันธ์ วัตถุประสงค์ของการทำให้เป็นมาตรฐานใน SQL คือการกำจัดข้อมูลที่ซ้ำซ้อน (ซ้ำซ้อน) และให้แน่ใจว่าข้อมูลถูกจัดเก็บอย่างมีเหตุผล
ผู้ประดิษฐ์ โมเดลเชิงสัมพันธ์ เอ็ดการ์ คอดด์ เสนอทฤษฎีการทำให้ข้อมูลเป็นมาตรฐานด้วยการใช้รูปแบบปกติที่หนึ่ง และเขายังคงขยายทฤษฎีด้วยรูปแบบปกติที่สองและสาม Later เขาเข้าร่วมกับ Raymond F. Boyce เพื่อพัฒนาทฤษฎี Boyce-Codd Normal Form
ประเภทของแบบฟอร์มปกติใน DBMS
นี่คือรายการแบบฟอร์มปกติใน SQL:
- 1NF (แบบฟอร์มปกติครั้งแรก): ช่วยให้แน่ใจว่าตารางฐานข้อมูลได้รับการจัดระเบียบเพื่อให้แต่ละคอลัมน์มีค่าอะตอม (แยกไม่ได้) และแต่ละระเบียนไม่ซ้ำกัน วิธีนี้จะช่วยขจัดกลุ่มที่ซ้ำกัน จึงทำให้ข้อมูลถูกจัดโครงสร้างเป็นตารางและคอลัมน์
- 2NF (แบบฟอร์มปกติที่สอง): สร้างบน 1NF โดยเราจำเป็นต้องลบข้อมูลที่ซ้ำซ้อนออกจากตารางที่ถูกนำไปใช้กับหลายแถว และนำไปวางแยกโต๊ะ กำหนดให้แอตทริบิวต์ที่ไม่ใช่คีย์ทั้งหมดต้องทำงานได้อย่างสมบูรณ์บนคีย์หลัก
- 3NF (แบบฟอร์มปกติที่สาม): ขยาย 2NF โดยทำให้แน่ใจว่าคุณลักษณะที่ไม่ใช่คีย์ทั้งหมดไม่เพียงแต่ทำงานได้อย่างสมบูรณ์บนคีย์หลักเท่านั้น แต่ยังแยกจากกันอีกด้วย สิ่งนี้จะช่วยลดการพึ่งพาสกรรมกริยา
- BCNF (บอยซ์-ค็อด ฟอร์มปกติ): การปรับปรุง 3NF ที่จัดการกับความผิดปกติที่ 3NF ไม่ได้จัดการ กำหนดให้ปัจจัยกำหนดทุกตัวเป็นคีย์ตัวเลือก เพื่อให้มั่นใจว่ามีการปฏิบัติตามกฎการปรับมาตรฐานที่เข้มงวดยิ่งขึ้น
- 4NF (แบบฟอร์มปกติที่สี่): จัดการกับการพึ่งพาหลายค่า ช่วยให้มั่นใจได้ว่าไม่มีข้อเท็จจริงหลายค่าที่เป็นอิสระหลายรายการเกี่ยวกับเอนทิตีในบันทึก
- 5NF (แบบฟอร์มปกติที่ห้า): มีชื่อเรียกอีกอย่างว่า "Projection-Join Normal Form" (PJNF) ซึ่งเกี่ยวข้องกับการสร้างข้อมูลจากชิ้นข้อมูลที่เล็กกว่าและจัดเรียงต่างกัน
- 6NF (แบบฟอร์มปกติที่หก): ในทางทฤษฎีและยังไม่มีการนำไปใช้อย่างแพร่หลาย โดยจะจัดการกับข้อมูลชั่วคราว (การจัดการการเปลี่ยนแปลงเมื่อเวลาผ่านไป) โดยการแยกย่อยตารางเพิ่มเติมเพื่อกำจัดความซ้ำซ้อนที่ไม่ใช่ชั่วคราวทั้งหมด
ทฤษฎีการทำให้ข้อมูลเป็นมาตรฐานใน MySQL เซิร์ฟเวอร์ยังอยู่ระหว่างการพัฒนาเพิ่มเติม ตัวอย่างเช่นมีการสนทนาแม้กระทั่งในวันที่ 6th แบบฟอร์มปกติ อย่างไรก็ตาม ในการใช้งานจริงส่วนใหญ่ การทำให้เป็นมาตรฐานจะบรรลุผลดีที่สุดใน 3rd แบบฟอร์มปกติ- วิวัฒนาการของการทำให้เป็นมาตรฐานในทฤษฎี SQL แสดงไว้ด้านล่าง
.png)
การทำให้ฐานข้อมูลเป็นมาตรฐานด้วยตัวอย่าง
ฐานข้อมูล ตัวอย่างการทำให้เป็นมาตรฐาน สามารถเข้าใจได้ง่ายด้วยความช่วยเหลือของกรณีศึกษา สมมติว่าไลบรารีวิดีโอจะรักษาฐานข้อมูลภาพยนตร์ที่เช่า หากไม่มีการปรับมาตรฐานในฐานข้อมูล ข้อมูลทั้งหมดจะถูกจัดเก็บไว้ในตารางเดียวดังที่แสดงด้านล่าง มาทำความเข้าใจฐานข้อมูลการทำให้เป็นมาตรฐานด้วยตัวอย่างการทำให้เป็นมาตรฐานพร้อมโซลูชัน:
ที่นี่คุณเห็น คอลัมน์ภาพยนตร์ที่เช่ามีหลายค่า ตอนนี้เรามาดูแบบฟอร์มปกติที่ 1 กัน:
รูปแบบปกติแรก (1NF)
- แต่ละเซลล์ของตารางควรมีค่าเดียว
- แต่ละระเบียนจะต้องไม่ซ้ำกัน
ตารางด้านบนใน 1NF-
ตัวอย่าง 1NF

ก่อนที่เราจะดำเนินการต่อ มาทำความเข้าใจบางสิ่งกันก่อน —
คีย์ใน SQL คืออะไร
A คีย์ใน SQL เป็นค่าที่ใช้ระบุระเบียนในตารางโดยไม่ซ้ำกัน SQL KEY คือคอลัมน์เดียวหรือหลายคอลัมน์รวมกันซึ่งใช้ในการระบุแถวหรือสิ่งอันดับในตารางโดยไม่ซ้ำกัน SQL Key ใช้เพื่อระบุข้อมูลที่ซ้ำกัน และยังช่วยสร้างความสัมพันธ์ระหว่างหลายตารางในฐานข้อมูล
หมายเหตุ: คอลัมน์ในตารางที่ไม่ได้ใช้ระบุระเบียนโดยไม่ซ้ำกันเรียกว่าคอลัมน์ที่ไม่ใช่คีย์
คีย์หลักคืออะไร?

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

ดังนั้นเราจึงต้องการทั้งชื่อเต็มและที่อยู่เพื่อระบุบันทึกโดยไม่ซ้ำกัน นั่นคือคีย์ผสม
เรามาเข้าสู่รูปแบบปกติที่สอง 2NF กัน
รูปแบบปกติที่สอง (2NF)
- กฎข้อที่ 1- อยู่ใน 1NF
- กฎข้อที่ 2 - คีย์หลักแบบคอลัมน์เดี่ยวที่ไม่ขึ้นอยู่กับเซ็ตย่อยของความสัมพันธ์ของคีย์ผู้สมัครใดๆ
เป็นที่ชัดเจนว่าเราไม่สามารถก้าวไปข้างหน้าเพื่อสร้างฐานข้อมูลอย่างง่ายของเราใน 2 ได้nd แบบฟอร์มการทำให้เป็นมาตรฐานเว้นแต่เราจะแบ่งพาร์ติชันตารางด้านบน
เราแบ่งตาราง 1NF ออกเป็น 1 ตาราง ได้แก่ ตาราง 2 และตาราง 1 ตาราง 2 ประกอบด้วยข้อมูลสมาชิก ตาราง XNUMX ประกอบด้วยข้อมูลภาพยนตร์ที่เช่า
เราได้แนะนำคอลัมน์ใหม่ที่เรียกว่า Membership_id ซึ่งเป็นคีย์หลักสำหรับตารางที่ 1 บันทึกสามารถระบุได้โดยไม่ซ้ำกันในตารางที่ 1 โดยใช้รหัสสมาชิก
ฐานข้อมูล – รหัสต่างประเทศ
ในตารางที่ 2 Membership_ID คือ Foreign Key

Foreign Key อ้างอิงคีย์หลักของตารางอื่น! ช่วยเชื่อมต่อตารางของคุณ
- คีย์ต่างประเทศสามารถมีชื่อที่แตกต่างจากคีย์หลักได้
- ช่วยให้มั่นใจได้ว่าแถวในตารางหนึ่งมีแถวที่สอดคล้องกันในอีกตารางหนึ่ง
- ต่างจากคีย์หลักตรงที่ไม่จำเป็นต้องไม่ซ้ำกัน ส่วนใหญ่มักจะไม่เป็นเช่นนั้น
- คีย์ต่างประเทศอาจเป็นค่าว่างได้แม้ว่าคีย์หลักจะไม่สามารถทำได้ก็ตาม
ทำไมคุณถึงต้องใช้คีย์ต่างประเทศ?
สมมติว่ามือใหม่แทรกบันทึกในตาราง B เช่น
คุณจะสามารถแทรกค่าลงในคีย์ต่างประเทศที่มีอยู่ในคีย์เฉพาะในตารางหลักเท่านั้น สิ่งนี้ช่วยในการอ้างอิงความสมบูรณ์
ปัญหาข้างต้นสามารถแก้ไขได้ด้วยการประกาศรหัสสมาชิกจากตารางที่ 2 เป็นคีย์ต่างประเทศของรหัสสมาชิกจากตารางที่ 1
ตอนนี้ ถ้าใครพยายามแทรกค่าลงในช่องรหัสสมาชิกที่ไม่มีอยู่ในตารางหลัก ข้อผิดพลาดจะปรากฏขึ้น!
การพึ่งพาฟังก์ชันสกรรมกริยาคืออะไร?
สกรรมกริยา การพึ่งพาการทำงาน คือเมื่อเปลี่ยนคอลัมน์ที่ไม่ใช่คีย์อาจทำให้คอลัมน์ที่ไม่ใช่คีย์อื่นๆ เปลี่ยนแปลงได้
พิจารณาตารางที่ 1 การเปลี่ยนชื่อเต็มของคอลัมน์ที่ไม่ใช่คีย์อาจทำให้คำทักทายเปลี่ยนไป
เข้าสู่ 3NF กันเถอะ
รูปแบบปกติที่สาม (3NF)
- กฎข้อที่ 1- อยู่ใน 2NF
- กฎข้อที่ 2- ไม่มีการพึ่งพาฟังก์ชันสกรรมกริยา
หากต้องการย้ายตาราง 2NF ของเราไปเป็น 3NF เราต้องแบ่งตารางของเราอีกครั้ง
ตัวอย่าง 3NF
ด้านล่างนี้เป็นตัวอย่าง 3NF ในฐานข้อมูล SQL:
เราได้แบ่งตารางของเราอีกครั้งและสร้างตารางใหม่ซึ่งเก็บคำทักทาย
ไม่มีการพึ่งพาฟังก์ชันสกรรมกริยา ดังนั้นตารางของเราจึงอยู่ใน 3NF
ในตารางที่ 3 รหัสคำทักทายเป็นคีย์หลัก และในตารางที่ 1 รหัสคำทักทายอยู่ต่างประเทศกับคีย์หลักในตารางที่ 3
ตัวอย่างเล็กๆ น้อยๆ ของเราอยู่ในระดับที่ไม่สามารถแยกย่อยเพิ่มเติมเพื่อให้ได้มาตรฐานในรูปแบบปกติที่สูงกว่าใน DBMS ได้ ในความเป็นจริงแล้ว ตัวอย่างนี้มีอยู่ในรูปแบบปกติที่สูงกว่าแล้ว โดยปกติแล้ว จำเป็นต้องใช้ความพยายามแยกต่างหากเพื่อย้ายไปยังระดับถัดไปของมาตรฐานข้อมูลในฐานข้อมูลที่ซับซ้อน อย่างไรก็ตาม เราจะหารือเกี่ยวกับมาตรฐานระดับถัดไปใน DBMS โดยย่อในส่วนต่อไปนี้
Boyce-Codd แบบฟอร์มปกติ (BCNF)
แม้ว่าฐานข้อมูลจะอยู่ใน 3rd แบบฟอร์มปกติ ยังคงมีความผิดปกติเกิดขึ้นหากมีมากกว่าหนึ่งรายการ ผู้สมัคร สำคัญ.
บางครั้ง BCNF ก็เรียกว่า 3.5 แบบฟอร์มปกติ
รูปแบบปกติที่สี่ (4NF)
หากไม่มีอินสแตนซ์ของตารางฐานข้อมูลที่มีข้อมูลอิสระและมีหลายค่าตั้งแต่สองค่าขึ้นไปซึ่งอธิบายเอนทิตีที่เกี่ยวข้อง รายการนั้นจะอยู่ใน 4th แบบฟอร์มปกติ
รูปแบบปกติที่ห้า (5NF)
ตารางอยู่ใน 5th รูปแบบปกติเฉพาะในกรณีที่อยู่ใน 4NF และไม่สามารถแยกย่อยเป็นตารางขนาดเล็กจำนวนเท่าใดก็ได้โดยไม่สูญเสียข้อมูล
เสนอแบบฟอร์มปกติที่หก (6NF)
6th Normal Form ไม่ได้เป็นมาตรฐาน อย่างไรก็ตาม ผู้เชี่ยวชาญด้านฐานข้อมูลกำลังหารือกันอยู่ระยะหนึ่ง หวังว่าเราจะมีคำจำกัดความที่ชัดเจนและเป็นมาตรฐานสำหรับ 6th ฟอร์มปกติในอนาคตอันใกล้นี้…
ข้อดีของแบบฟอร์มปกติ
- ปรับปรุงความสอดคล้องของข้อมูล: การทำให้เป็นมาตรฐานช่วยให้มั่นใจได้ว่าข้อมูลแต่ละชิ้นจะถูกจัดเก็บไว้ในที่เดียวเท่านั้น ซึ่งช่วยลดโอกาสที่ข้อมูลจะไม่สอดคล้องกัน เมื่อข้อมูลได้รับการอัปเดต จะต้องอัปเดตในที่เดียวเท่านั้นเพื่อให้มั่นใจถึงความสอดคล้องกัน
- ลดความซ้ำซ้อนของข้อมูล: การทำให้เป็นมาตรฐานจะช่วยกำจัดข้อมูลที่ซ้ำกันโดยแบ่งออกเป็นหลายตารางที่เกี่ยวข้องกัน สิ่งนี้สามารถประหยัดพื้นที่จัดเก็บและทำให้ฐานข้อมูลมีประสิทธิภาพมากขึ้น
- ปรับปรุงประสิทธิภาพการค้นหา: ฐานข้อมูลที่ทำให้เป็นมาตรฐานมักจะสืบค้นได้ง่ายกว่า เนื่องจากข้อมูลได้รับการจัดระเบียบตามตรรกะ จึงสามารถปรับการสืบค้นให้ทำงานเร็วขึ้นได้
- ทำให้ข้อมูลมีความหมายมากขึ้น: การทำให้เป็นมาตรฐานเกี่ยวข้องกับการจัดกลุ่มข้อมูลในลักษณะที่สมเหตุสมผลและใช้งานง่าย ซึ่งจะทำให้ฐานข้อมูลเข้าใจและใช้งานได้ง่ายขึ้น โดยเฉพาะสำหรับผู้ที่ไม่ได้ออกแบบฐานข้อมูล
- ลดโอกาสของความผิดปกติ: ความผิดปกติเป็นปัญหาที่อาจเกิดขึ้นได้เมื่อมีการเพิ่ม อัปเดต หรือลบข้อมูล การทำให้เป็นมาตรฐานสามารถลดโอกาสของความผิดปกติเหล่านี้ได้ด้วยการทำให้แน่ใจว่าข้อมูลได้รับการจัดระเบียบตามตรรกะ
ข้อเสียของการทำให้เป็นมาตรฐาน
- ความซับซ้อนที่เพิ่มขึ้น: การทำให้เป็นมาตรฐานอาจนำไปสู่ความสัมพันธ์ที่ซับซ้อน ตารางที่มีคีย์ภายนอกจำนวนมากอาจจัดการได้ยาก ส่งผลให้เกิดความสับสน
- ลดความยืดหยุ่น: เนื่องจากกฎการทำให้เป็นมาตรฐานที่เข้มงวด จึงอาจมีความยืดหยุ่นน้อยลงในการจัดเก็บข้อมูลที่ไม่เป็นไปตามกฎเหล่านี้
- ข้อกำหนดการจัดเก็บที่เพิ่มขึ้น: แม้ว่าการทำให้เป็นมาตรฐานจะช่วยลดความซ้ำซ้อน แต่ก็อาจจำเป็นต้องจัดสรรพื้นที่จัดเก็บข้อมูลเพิ่มเติมเพื่อรองรับตารางและดัชนีเพิ่มเติม
- ค่าใช้จ่ายด้านประสิทธิภาพ: การรวมหลายตารางอาจมีค่าใช้จ่ายสูงในแง่ของประสิทธิภาพ ยิ่งข้อมูลเป็นมาตรฐานมากขึ้นเท่าใด จำเป็นต้องมีการรวมมากขึ้นเท่านั้น ซึ่งอาจทำให้เวลาการดึงข้อมูลช้าลง
- การสูญเสียบริบทข้อมูล: การทำให้เป็นมาตรฐานจะแบ่งข้อมูลออกเป็นตารางแยกกัน ซึ่งอาจนำไปสู่การสูญเสียบริบททางธุรกิจ การตรวจสอบตารางที่เกี่ยวข้องเป็นสิ่งจำเป็นในการทำความเข้าใจบริบทของข้อมูล
- ต้องการความรู้จากผู้เชี่ยวชาญ: การใช้ฐานข้อมูลที่ทำให้เป็นมาตรฐานจำเป็นต้องมีความเข้าใจอย่างลึกซึ้งในข้อมูล ความสัมพันธ์ระหว่างข้อมูล และกฎการทำให้เป็นมาตรฐาน สิ่งนี้ต้องใช้ความรู้จากผู้เชี่ยวชาญและอาจใช้เวลานาน
นั่นคือทั้งหมดสำหรับ SQL Normalization!!!
สรุป
- การออกแบบฐานข้อมูล มีความสำคัญอย่างยิ่งต่อความสำเร็จในการใช้งานระบบการจัดการฐานข้อมูลที่ตรงตามข้อกำหนดข้อมูลของระบบองค์กร
- การทำให้เป็นมาตรฐานใน DBMS เป็นกระบวนการที่ช่วยสร้างระบบฐานข้อมูลที่คุ้มค่าและมีโมเดลความปลอดภัยที่ดีกว่า
- การพึ่งพาการทำงานเป็นองค์ประกอบที่สำคัญมากของกระบวนการข้อมูลที่ทำให้เป็นมาตรฐาน
- ระบบฐานข้อมูลส่วนใหญ่เป็นฐานข้อมูลมาตรฐานจนถึงรูปแบบปกติที่สามใน DBMS
- คีย์หลักที่ระบุโดยไม่ซ้ำกันจะถูกบันทึกไว้ในตารางและไม่สามารถเป็นค่าว่างได้
- คีย์ภายนอกช่วยเชื่อมต่อตารางและอ้างอิงคีย์หลัก