ให้เราคุยความแตกต่างระหว่าง 3NF และ BCNF ด้วยความช่วยเหลือของแผนภูมิเปรียบเทียบที่แสดงด้านล่าง
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | 3NF | BCNF |
---|---|---|
แนวคิด | ไม่มีแอตทริบิวต์ที่ไม่สำคัญต้องขึ้นอยู่กับการส่งผ่านขึ้นอยู่กับคีย์ผู้สมัคร | สำหรับการอ้างอิงเล็กน้อยในความสัมพันธ์ R พูด X-> Y, X ควรเป็นกุญแจสำคัญของความสัมพันธ์ R |
เมืองขึ้น | 3NF สามารถรับได้โดยไม่ต้องพึ่งพาการพึ่งพาทั้งหมด | การอ้างอิงอาจไม่ถูกสงวนไว้ใน BCNF |
การจำแนก | การสลายตัวแบบไม่สูญเสียสามารถทำได้ใน 3NF | การสลายตัวแบบไม่สูญเสียนั้นทำได้ยากใน BCNF |
คำจำกัดความของ 3NF
ตารางหรือความสัมพันธ์ถูกพิจารณาว่าอยู่ใน รูปแบบปกติที่สาม เฉพาะในกรณีที่ตารางนั้นมี 2NF อยู่แล้วและไม่มีแอตทริบิวต์ที่ ไม่ใช่นายกรัฐมนตรี ขึ้นอยู่กับ คีย์ที่ใช้ ของความสัมพันธ์
ดังนั้นก่อนที่ฉันจะพูดถึงกระบวนการทำให้เป็นมาตรฐานของตารางใน 3NF อนุญาตให้ฉันพูดคุยเกี่ยวกับรหัสผู้สมัคร คีย์ผู้สมัคร เป็น ซุปเปอร์คีย์น้อยที่สุด เช่นซุปเปอร์คีย์พร้อมคุณสมบัติขั้นต่ำที่สามารถกำหนดคุณลักษณะทั้งหมดของความสัมพันธ์ได้ ดังนั้นในขั้นตอนการทำให้ปกติของตารางเป็นอันดับแรกอันดับแรกคุณจะรู้จักรหัสผู้สมัครของความสัมพันธ์ที่กำหนด แอ็ตทริบิวต์ที่เป็นส่วนหนึ่งของคีย์ตัวเลือกคือ คุณสมบัติหลัก และแอตทริบิวต์ที่ไม่ได้เป็นส่วนหนึ่งของคีย์ตัวเลือกเป็นคุณสมบัติที่ ไม่ใช่แบบเฉพาะ
ตอนนี้ถ้าเรามีความสัมพันธ์ R (A, B, C, D, E, F) และเรามีการติดตามการทำงานของความสัมพันธ์อาร์
ตารางอยู่ใน 2NF เนื่องจากไม่มีแอ็ตทริบิวต์ที่ไม่ใช่ไพร์มนั้นขึ้นอยู่กับคีย์ตัวเลือกบางส่วน
แต่การพึ่งพาสกรรมกริยาจะถูกสังเกตในหมู่การพึ่งพาการทำงานที่มีให้เนื่องจากคุณลักษณะ F ไม่ได้ขึ้นอยู่กับผู้สมัครคีย์ AB โดยตรง แอตทริบิวต์ F ขึ้นอยู่กับการส่งผ่านคีย์ตัวเลือก AB ผ่านทางแอตทริบิวต์ D แทน จนถึงคุณสมบัติ D มีค่าบางอย่างที่เราสามารถเข้าถึงได้ถึงค่าคุณลักษณะของ F จากปุ่มผู้สมัคร AB ในกรณีที่ค่าของคุณลักษณะ D เป็นโมฆะเราไม่สามารถหา / ค้นหาค่าของ F ด้วยความช่วยเหลือของผู้สมัครกุญแจ AB นี่คือเหตุผลที่ 3NF ต้องการที่จะลบการพึ่งพาสกรรมกริยาจากความสัมพันธ์
ดังนั้นในการลบการพึ่งพาสกรรมกริยานี้เราจำเป็นต้องแบ่งความสัมพันธ์อาร์ในขณะที่การแบ่งความสัมพันธ์มักจะวางรหัสผู้สมัครและคุณสมบัติทั้งหมดที่ขึ้นอยู่กับคีย์ผู้สมัครในความสัมพันธ์ครั้งแรก ในความสัมพันธ์แบบแบ่งถัดไปเราจะวางคุณลักษณะที่ทำให้เกิดการพึ่งพาสกรรมกริยาและคุณลักษณะที่ขึ้นอยู่กับความสัมพันธ์ที่สอง
ความหมายของ BCNF
BCNF นั้นถือว่าแข็งแกร่งกว่า 3NF ความสัมพันธ์ R ที่จะเป็น BCNF จะต้องเป็น 3NF และไม่ว่าการ พึ่งพาฟังก์ชัน A -> B นั้น เกี่ยวข้องกับ R แล้ว A ต้องเป็น superkey ของความสัมพันธ์ R ดังที่เราทราบ Super key คือกุญแจที่มีคุณลักษณะหรือชุดของคุณลักษณะที่กำหนดทั้งหมด คุณลักษณะของความสัมพันธ์
ตอนนี้ให้เราไปยังตัวอย่างที่จะเข้าใจ BCNF ในวิธีที่ดีกว่า ให้เราสมมติว่าเรามีความสัมพันธ์ R (A, B, C, D, F) ซึ่งมีการติดตามการทำงาน
แต่การพึ่งพาการทำงานหนึ่งอย่างเช่น D -> F นั้นเป็นการละเมิดคำจำกัดความของ BCNF ตามที่ถ้า D -> F มีอยู่แล้ว D ควรเป็น ซุปเปอร์คีย์ ซึ่งไม่ใช่กรณีที่นี่ ดังนั้นเราจะแบ่งความสัมพันธ์อาร์
ความแตกต่างที่สำคัญระหว่าง 3NF และ BCNF
- 3NF ระบุว่าไม่มีแอตทริบิวต์ที่ไม่ใช่นายกต้องขึ้นอยู่กับคีย์การสมัครของความสัมพันธ์ ในอีกทางหนึ่ง BCNF ระบุว่าหากการพึ่งพาการทำงานเล็กน้อย X -> Y มีอยู่สำหรับความสัมพันธ์; ดังนั้น X จะต้องเป็นกุญแจสำคัญ
- 3NF สามารถรับได้โดยไม่ต้องเสียสละการพึ่งพาความสัมพันธ์ อย่างไรก็ตามการพึ่งพาอาจไม่ถูกรักษาไว้ในขณะที่รับ BCNF
- 3NF สามารถทำได้โดยไม่สูญเสียข้อมูลใด ๆ จากโต๊ะเก่าในขณะที่ได้รับ BCNF เราอาจจะหลวมข้อมูลบางส่วนจากโต๊ะเก่า
สรุป:
BCNF มีข้อ จำกัด มากกว่า 3NF ซึ่งช่วยในการทำให้มาตรฐานของตารางเป็นปกติมากขึ้น ความสัมพันธ์ใน 3NF มีความซ้ำซ้อนขั้นต่ำเหลืออยู่ซึ่ง BCNF จะถูกลบออกไปอีก