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