แนะนำ, 2024

ตัวเลือกของบรรณาธิการ

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

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

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

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

พื้นฐานสำหรับการเปรียบเทียบ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 แล้ว A ต้องเป็น superkey ของความสัมพันธ์ R ดังที่เราทราบ Super key คือกุญแจที่มีคุณลักษณะหรือชุดของคุณลักษณะที่กำหนดทั้งหมด คุณลักษณะของความสัมพันธ์

ตอนนี้ให้เราไปยังตัวอย่างที่จะเข้าใจ BCNF ในวิธีที่ดีกว่า ให้เราสมมติว่าเรามีความสัมพันธ์ R (A, B, C, D, F) ซึ่งมีการติดตามการทำงาน

โดยการสังเกตุความสัมพันธ์ R เราสามารถพูดได้ว่า A และ BF เป็น กุญแจ ของ ผู้สมัครที่ มีความสัมพันธ์ R เพราะพวกเขาสามารถค้นหาคุณค่าของคุณลักษณะทั้งหมดในความสัมพันธ์อาร์ดังนั้น A, B, F เป็นคุณลักษณะที่ สำคัญ ในขณะที่ C และ D เป็นคุณลักษณะที่ ไม่สำคัญ ไม่พบการพึ่งพาสกรรมกริยาในฟังก์ชันการพึ่งพาที่มีอยู่ข้างต้น ดังนั้นตาราง R อยู่ใน 3NF

แต่การพึ่งพาการทำงานหนึ่งอย่างเช่น D -> F นั้นเป็นการละเมิดคำจำกัดความของ BCNF ตามที่ถ้า D -> F มีอยู่แล้ว D ควรเป็น ซุปเปอร์คีย์ ซึ่งไม่ใช่กรณีที่นี่ ดังนั้นเราจะแบ่งความสัมพันธ์อาร์

ตอนนี้ตาราง R1 nd R2 อยู่ใน BCNF ความสัมพันธ์ R1 มี ปุ่ม ผู้สมัคร สอง A และ B การพึ่งพาการทำงานเล็กน้อยของ R1 เช่น A-> BCD และ B -> ACD ถือสำหรับ BCNF เป็น A และ B เป็นกุญแจสำคัญสำหรับความสัมพันธ์ Relation R2 มี D เป็น คีย์ตัวเลือก และการพึ่งพาฟังก์ชัน D -> F ยังคงไว้ซึ่ง BCNF เนื่องจาก D เป็นซุปเปอร์คีย์

ความแตกต่างที่สำคัญระหว่าง 3NF และ BCNF

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

สรุป:

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

Top