ความแตกต่างระหว่าง 3NF และ BCNF

ผู้เขียน: Laura McKinney
วันที่สร้าง: 1 เมษายน 2021
วันที่อัปเดต: 17 พฤษภาคม 2024
Anonim
การทำ Normalization 1NF, 2NF, 3NF, BCNF, 4NF และ 5NF
วิดีโอ: การทำ Normalization 1NF, 2NF, 3NF, BCNF, 4NF และ 5NF

เนื้อหา


normalization เป็นวิธีการที่เอาออก ความฟุ่มเฟือย จากความสัมพันธ์ซึ่งจะช่วยลดการแทรกการลบและอัปเดตความผิดปกติที่ทำให้ประสิทธิภาพการทำงานของฐานข้อมูลลดลง ในบทความนี้เราจะแยกความแตกต่างระหว่างแบบฟอร์มปกติที่สูงกว่าสองแบบ ได้แก่ 3NF และ BCNF ความแตกต่างพื้นฐานระหว่าง 3NF และ BCNF คือ 3NF กำจัดการพึ่งพาสกรรมกริยาจากความสัมพันธ์และตารางที่จะอยู่ใน BCNF, การพึ่งพาการทำงานเล็กน้อย X-> Y ในความสัมพันธ์ต้องถือเฉพาะถ้า X เป็นกุญแจสำคัญสุด

ให้เราคุยความแตกต่างระหว่าง 3NF และ BCNF ด้วยความช่วยเหลือของกราฟเปรียบเทียบที่แสดงด้านล่าง

  1. แผนภูมิเปรียบเทียบ
  2. คำนิยาม
  3. ความแตกต่างที่สำคัญ
  4. ข้อสรุป

แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบ3NFBCNF
แนวคิดไม่มีแอตทริบิวต์ที่ไม่สำคัญต้องขึ้นอยู่กับการส่งต่อที่สำคัญของผู้สมัครสำหรับการพึ่งพาใด ๆ เล็กน้อยในความสัมพันธ์ 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

  1. 3NF ระบุว่าไม่มีแอตทริบิวต์ที่ไม่ใช่นายกรัฐมนตรีต้องขึ้นอยู่กับคีย์การสมัครของความสัมพันธ์ ในอีกทางหนึ่ง BCNF ระบุว่าหากการพึ่งพาการทำงานเล็กน้อย X -> Y มีอยู่สำหรับความสัมพันธ์; ดังนั้น X จะต้องเป็นกุญแจสำคัญ
  2. 3NF สามารถรับได้โดยไม่ต้องเสียสละการพึ่งพาความสัมพันธ์ อย่างไรก็ตามการพึ่งพาอาจไม่ถูกรักษาไว้ในขณะที่รับ BCNF
  3. 3NF สามารถทำได้โดยไม่ต้องสูญเสียข้อมูลใด ๆ จากตารางเก่าในขณะที่ในขณะที่รับ BCNF เราอาจสูญเสียข้อมูลบางส่วนจากตารางเก่า

สรุป:

BCNF มีข้อ จำกัด มากกว่า 3NF ซึ่งช่วยในการทำให้มาตรฐานของตารางเป็นปกติมากขึ้น ความสัมพันธ์ใน 3NF มีการเหลือซ้ำขั้นต่ำซึ่งจะถูกลบออกโดย BCNF เพิ่มเติม