Thuật toán kiểm tra dạng chuẩn 3NF

Một phần của tài liệu Bài giảng Cơ sở dữ liệu: Chương 4 - Hoàng Thị Hà (Trang 84 - 91)

I. Định nghĩa các dạng chuẩn

Thuật toán kiểm tra dạng chuẩn 3NF

 Vào: Một lược đồ quan hệ R(U,F)

 Ra: Lược đồ quan hệ trên có ở dạng chuẩn 3NF hay không ở dạng 3NF .

Phương pháp:

 Bước 1: Tìm tất cả các khóa của R

 Bước 2: Từ F tạo một tập phụ thuộc hàm tương đương F’

có vế phải một thuộc tính

 Bước 3: Nếu mọi phụ thuộc hàm X→ A  F’ với A X đều

có X là siêu khóa hoặc A là thuộc tính khóa thì R đạt dạng chuẩn 3NF, ngược lại R không ở dạng chuẩn 3NF.

Ví dụ

Project có nhiều hơn một thuộc tính không khóa là

address và manager.

Theo quan hệ trên ta nhận thấy address phụ thuộc vào giá

trị trong cột manager . Vì vậy, manager  address

project_no manager address

p1 Black, B 32 High Street p2 Smith, J 11 New street p3 Black, B 32 High Street p4 Black, B 32 High Street p5 Thomas, J 69 Back Street

Hoang Thi Ha

Ví dụ 1

Trong sơ đồ trên xuất hiện sự dư thừa của dữ liệu. Ta thấy địa chỉ của manager vị lặp lại nếu như một

manager tham gia nhiều hơn một project.

 Để loại bỏ sự dư thừa này ta phải tách quan hệ trên thành 2 quan hệ:

 Một quan hệ bao gồm các thuộc tính mà có PTH trực tiếp vào khóa chính.

 Một quan hệ bao gồm các thuộc tính còn lại

Vậy, chia quan hệ Project thành Project Manager.

Quan hệ Manager có khóa chính là manager .

Khóa chính ban đầu trở thành thuộc tính khóa trong quan hệ Projects mới.

Example - 3

Project Manager

Bây giờ, ta chỉ cần lưu trữ địa chỉ một lần

project_no manager manager address p1 Black, B Black, B 32 High Street p2 Smith, J Smith, J 11 New street p3 Black, B Thomas, J 69 Back Street p4 Black, B

Hoang Thi Ha

Tóm tắt_1

 1NF

Một quan hệ ở 1NF nếu và chỉ nếu toàn bộ các miền giá trị của các thuộc tính trong quan hệ đều chỉ chứa các giá trị nguyên tố(các giá trị không thể phân chia được).

 Để chuyển từ quan hệ không chuẩn thành 1NF:

Làm phẳng bảng và thay đổi khóa chính.

Chia quan hệ thành những quan hệ nhỏ hơn, một quan hệ chứa các giá trị lặp và một quan hệ không chúa các giá trị lặp. Chú ý, đặt khóa chính vào cả hai quan hệ mới.

Tóm tắt- 2

 2NF

Một quan hệ ở 2NF nếu nó ở 1NF và mọi thuộc tính không khóa của nó đều PTH đầy đủ vào khóa chính.

 Chú ý: Nếu một quan hệ chỉ có một thuộc tính thì ở 2NF.

 Để chuyển một quan hệ chưa ở 2NF thành 2NF thì ta tạo một tập quan hệ mới:

Một quan hệ với các thuộc tính là những PTH đầy đủ vào khóa chính, và những quan hệ còn lại cho các PTH bị vi phạm 2NF.

Hoang Thi Ha

Tóm tắt- 3

 3NF

Một quan hệ ở 3NF nếu nó ở 2NF và các thuộc tính không khóa đều PTH trực tiếp vào khóa chính

Để chuyển một quan hệ vi phạm 3NF thành 3NF ta loại bỏ các thuộc tính liên quan đến những PTH bị vi phạm và đặt chúng trong một quan hệ mới

 Rule: Một quan hệ ở 2NF nếu không có hoặc chỉ có 1

thuộc tính không khóa đều ở 3NF.

Các quan hệ ở dạng chuẩn 3NF rất tốt cho hầu hết các bài toán thiết kế CSDL thực tế. Mặc dù vậy, 3NF không dảm bảo rằng tất cả các dị thường đều bị xóa hết.

Một phần của tài liệu Bài giảng Cơ sở dữ liệu: Chương 4 - Hoàng Thị Hà (Trang 84 - 91)