Dạng chuẩn 2 (2NF)

Một phần của tài liệu Một số vấn đề liên quan đến dạng chuẩn trong hệ cơ sở dữ liệu tính bao đóng của một tập các thuộc tính trên tập các phụ thuộc hàm đối với sơ đồ quan hệ (Trang 56 - 59)

Một quan hệ (bảng) có ở dạng chuẩn 2 hay không, trong thực tế người ta không tìm thấy tất cả các khóa tối tiểu của nó mà chỉ tìm ra một khóa tối tiểu gọi là khóa chính. Thường thì khóa này được tìm căn cứ vào ý nghĩa thực tế của các thuộc tính nhưng cũng có thể áp dụng thuật toán tìm khóa tối tiểu nếu người thiết kế không thật hiểu rõ ý nghĩa của các thuộc tính.

Một quan hệ được coi là ở dạng chuẩn 2 nếu: - Quan hệ đó đã ở dạng chuẩn 1

- Mọi thuộc tính không nằm trong khóa chính đều phụ thuộc hàm đầy đủ vào khoá chính.

Rõ ràng định nghĩa này không chặt chẽ bằng định nghĩa dạng chuẩn 2 đã nói đến ở chương 2 vì định nghĩa ở chương 2 đòi hỏi mọi thuộc tính không khoá phải phụ thuộc hàm đầy đủ vào khóa chính, nhưng rõ ràng

điều này là khó thực hiện và không thực sự cần thiết đối với các quan hệ trong thực tiễn .

Bây giờ chúng ta cần khảo xát xem file dữ liệu HÓA ĐƠN có phải ở dạng chuẩn 2NF hay không. Chúng ta sẽ thấy sơ đồ quan hệ như sau:

Hình vẽ trên được căn cứ vào nghĩa của các cột.

Dễ thấy rằng một ngày chỉ có duy nhất một tổng mà thôi, hay nói cách khác giá trị của ngày tháng xác định duy nhất giá trị của tổng. Tương tự như vậy đối với cột Ngày tháng xác định duy nhất cột Thanh toán.

Vậy theo định nghĩa của phụ thuộc hàm chúng ta có cột Tổng và cột Thanh toán phụ thuộc hàm vào cột Ngày tháng.

Như vậy file dữ liệu HÓA ĐƠN không phải là 2NF thực tiễn, chúng ta có thể thấy rằng Tên hàng và Đơn giá đều được xác định duy nhất do Mã hàng.

Do đó Tên hàng và Đơn giá phụ thuộc hàm vào Mã hàng (Chấp nhận rằng trong kỳ báo cáo ấy giá không đổi).

Dễ thấy rằng cột Số lượng được xác định duy nhất bởi hai cột Ngày tháng và Mã hàng. Vì trong một ngày một mặt hàng (mã hàng đại diện)

Số lượng Ngày tháng Mã hàng Tổng Thanh toán Tên hàng Đơn giá

chỉ có cột Số lượng mà thôi. Như vậy khi xét một file dữ liệu ở trong một dạng chuẩn nào đó chúng ta làm như sau:

- Chọn một khóa tối tiểu làm khóa chính

- Xét lần lượt từng cột nằm ngoài khóa chính đó theo định nghĩa của từng cột một, xem xem nó có phụ thuộc hàm vào các phần tử nằm trong khóa chính hay không.

- Vẽ sơ đồ biểu thị mỗi phụ thuộc hàm giữa các phần tử (thuộc tính) nằm ngoài khóa chính.

Trên cơ sở sơ đồ chúng ta sẽ nhanh chóng xác định rằng file dữ liệu này có phải là dạng chuẩn 2NF thực tiễn hay không, như ở ví dụ trên nó không phải là dạng chuẩn 2NF vì có những cột nằm bên ngoài khóa chính nhưng phụ thuộc vào những phần tử bên trong của khóa chính. Nếu nó không phải là dạng chuẩn 2NF thì chúng ta phải tách nó ra thành các file con ở dạng chuẩn 2NF.

Sau đây là phương pháp tách 1 file dữ liệu không phải là dạng chuẩn 2NF thành các file dữ liệu con 2NF.

- Dùng phép chiếu để tách từng nhóm bao gồm các thuộc tính bên ngoài khóa chính với bộ phận của khóa chính mà nó phụ thuộc hàm vào.

Ta sẽ tách file dữ liệu HÓA ĐƠN thành 3 file dữ liệu sau DOANH SỐ

Ngày tháng Tổng Thanh toán

23/5/98 6000 5000

24/5/98 300 300

25/5/98 16300 9300

KHỐILƯỢNG HÀNG HÓA Ngày tháng Mã hàng Số lượng 23/05/98 T1 2 23/05/98 T3 6 23/05/98 T6 2 24/05/98 T2 2 25/05/98 T1 3 25/05/98 T4 5 25/05/98 T9 7

Ta chọn khóa chính (nó là khóa tối tiểu)

cho thực thể KHỐI LƯỢNG là Ngày tháng và Mã hàng

Như vậy chúng ta sẽ có sơ đồ biểu diễn đối với file dữ liệu này như sau:

TỔNG DOANHSỐ

HÀNG HÓA (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Một số vấn đề liên quan đến dạng chuẩn trong hệ cơ sở dữ liệu tính bao đóng của một tập các thuộc tính trên tập các phụ thuộc hàm đối với sơ đồ quan hệ (Trang 56 - 59)