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 và 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.