Đề XuấT, 2024

Editor Choice

Sự khác biệt giữa 3NF và BCNF

Chuẩn hóa là một phương pháp loại bỏ sự dư thừa khỏi một mối quan hệ do đó giảm thiểu việc chèn, xóa và cập nhật các bất thường làm giảm hiệu suất của cơ sở dữ liệu. Trong bài viết này, chúng tôi sẽ phân biệt giữa hai hình thức bình thường cao hơn, ví dụ 3NF và BCNF. Sự khác biệt cơ bản giữa 3NF và BCNF là 3NF loại bỏ sự phụ thuộc quá độ khỏi một mối quan hệ và một bảng trong BCNF, phụ thuộc chức năng tầm thường X-> Y trong một mối quan hệ phải giữ, chỉ khi X là siêu khóa.

Hãy để chúng tôi thảo luận về sự khác biệt giữa 3NF và BCNF với sự trợ giúp của biểu đồ so sánh được hiển thị bên dưới.

Biểu đồ so sánh

Cơ sở để so sánh3NFBCNF
Khái niệmKhông có thuộc tính không chính nào phải phụ thuộc quá mức vào khóa Ứng viên.Đối với bất kỳ sự phụ thuộc tầm thường nào trong mối quan hệ R nói X-> Y, X phải là một siêu khóa của mối quan hệ R.
Phụ thuộc3NF có thể thu được mà không phải hy sinh tất cả các phụ thuộc.Phụ thuộc có thể không được bảo tồn trong BCNF.
Phân hủyPhân hủy không mất mát có thể đạt được trong 3NF.Sự phân hủy không mất mát khó đạt được trong BCNF.

Định nghĩa của 3NF

Một bảng hoặc một mối quan hệ được coi là ở Dạng thông thường thứ ba chỉ khi bảng đó đã ở trong 2NF và không có thuộc tính không chính nào phụ thuộc quá mức vào khóa ứng cử viên của một mối quan hệ.

Vì vậy, trước khi tôi giải quyết quá trình bình thường hóa bảng trong 3NF, hãy cho phép tôi thảo luận về khóa ứng viên. Khóa ứng viênsiêu khóa tối thiểu, tức là một siêu khóa với các thuộc tính tối thiểu có thể xác định tất cả các thuộc tính của mối quan hệ. Vì vậy, trong quá trình bình thường hóa bảng của bạn, trước tiên, bạn nhận ra khóa ứng viên của một mối quan hệ nhất định. Các thuộc tính là một phần của khóa ứng cử viên là các thuộc tính nguyên tố và các thuộc tính không phải là một phần của khóa ứng cử viên là các thuộc tính không chính .

Bây giờ nếu chúng ta có mối quan hệ R (A, B, C, D, E, F) và chúng ta có các phụ thuộc hàm sau cho mối quan hệ R.

Quan sát các phụ thuộc chức năng, chúng ta có thể kết luận rằng AB là khóa ứng cử viên cho mối quan hệ R vì sử dụng khóa AB, chúng ta có thể tìm kiếm giá trị cho tất cả các thuộc tính trong mối quan hệ R. Vì vậy, A, B trở thành thuộc tính chính khi chúng cùng nhau tạo khóa ứng viên. Các thuộc tính C, D, E, F trở thành các thuộc tính không phải là số nguyên tố vì không có thuộc tính nào là một phần của khóa ứng viên.

Bảng nằm trong 2NF vì không có thuộc tính không chính nào phụ thuộc một phần vào khóa ứng cử viên

Nhưng, một phụ thuộc bắc cầu được quan sát giữa các phụ thuộc chức năng được cung cấp, vì thuộc tính F không phụ thuộc trực tiếp vào khóa ứng cử viên AB . Thay vào đó, thuộc tính F phụ thuộc quá mức vào khóa ứng viên AB thông qua thuộc tính D. Cho đến thuộc tính D có một số giá trị chúng ta có thể đạt tới giá trị thuộc tính của F, từ khóa ứng viên AB. Trong trường hợp giá trị của thuộc tính D là NULL, chúng ta không bao giờ có thể tìm / tìm giá trị của F với sự trợ giúp của khóa ứng viên AB. Đây là lý do tại sao 3NF yêu cầu loại bỏ sự phụ thuộc quá độ khỏi các mối quan hệ.

Vì vậy, để loại bỏ sự phụ thuộc quá độ này, chúng ta cần chia mối quan hệ R. Trong khi phân chia một mối quan hệ luôn đặt khóa ứng viên và tất cả các thuộc tính phụ thuộc vào khóa ứng viên đó trong mối quan hệ đầu tiên. Trong mối quan hệ được chia tiếp theo, chúng ta sẽ đặt thuộc tính gây ra sự phụ thuộc quá độ và cả các thuộc tính phụ thuộc vào nó trong mối quan hệ thứ hai.

Bây giờ, các bảng R1 và R2 nằm trong 3NF vì nó không còn phụ thuộc một phần và bắc cầu. Quan hệ R1 (A, B, C, D, E) có khóa ứng viên AB trong khi đó, quan hệ R2 (D, E)D là khóa ứng cử viên.

Định nghĩa về BCNF

BCNF được coi là mạnh hơn 3NF. Mối quan hệ R ở trong BCNF phải ở 3NF . Và bất cứ nơi nào một phụ thuộc chức năng không tầm thường A -> B giữ trong mối quan hệ R, thì A phải là một siêu khóa của mối quan hệ R. Như chúng ta biết, Super key là một khóa có một thuộc tính hoặc tập hợp các thuộc tính xác định, toàn bộ các thuộc tính của một mối quan hệ.

Bây giờ, chúng ta hãy chuyển sang một ví dụ để hiểu BCNF theo cách tốt hơn. Chúng ta hãy giả sử rằng chúng ta có mối quan hệ R (A, B, C, D, F), có các phụ thuộc chức năng.

Bằng cách quan sát mối quan hệ R, chúng ta có thể nói rằng ABFcác khóa ứng cử viên của mối quan hệ R, bởi vì một mình họ có thể tìm kiếm giá trị cho tất cả các thuộc tính trong mối quan hệ R. Vì vậy, A, B, F là các thuộc tính chính trong khi CDcác thuộc tính không chính . Không có phụ thuộc bắc cầu được quan sát trong các phụ thuộc chức năng trình bày ở trên. Do đó, bảng R nằm trong 3NF.

Nhưng một phụ thuộc chức năng, tức là D -> F đang vi phạm định nghĩa của BCNF, theo đó, nếu D -> F tồn tại thì D phải là siêu khóa không phải là trường hợp ở đây. Vì vậy, chúng tôi sẽ phân chia mối quan hệ R.

Bây giờ, các bảng R1 nd R2 nằm trong BCNF. Mối quan hệ R1 có hai khóa ứng cử viên AB, sự phụ thuộc chức năng tầm thường của R1 tức là A-> BCD và B -> ACD, giữ cho BCNF vì A và B là các siêu khóa cho mối quan hệ. Mối quan hệ R2Dkhóa ứng cử viên và phụ thuộc chức năng D -> F cũng giữ cho BCNF vì D là Super Key.

Sự khác biệt chính giữa 3NF và BCNF

  1. 3NF tuyên bố rằng không có thuộc tính không chính nào phải phụ thuộc quá mức vào khóa ứng cử viên của mối quan hệ. Mặt khác, BCNF tuyên bố rằng nếu một phụ thuộc chức năng tầm thường X -> Y tồn tại cho một mối quan hệ; thì X phải là một siêu khóa.
  2. 3NF có thể thu được mà không phải hy sinh sự phụ thuộc của mối quan hệ. Tuy nhiên, sự phụ thuộc có thể không được bảo tồn trong khi thu được BCNF.
  3. 3NF có thể đạt được mà không mất bất kỳ thông tin nào từ bảng cũ trong khi lấy BCNF, chúng tôi có thể mất một số thông tin từ bảng cũ.

Phần kết luận:

BCNF hạn chế hơn nhiều so với 3NF, giúp bình thường hóa bảng nhiều hơn. Mối quan hệ trong 3NF có dư thừa tối thiểu còn lại được BCNF loại bỏ thêm.

Top