4.4.2. Dạng chuẩn 2NF và chuẩn hóa về 2NF
Đây là dạng chuẩn dựa trên khái niệm của một phụ thuộc hàm đầy đủ. Một phụ
thuộc hàm X → Y là một phụ thuộc hàm đầy đủ nếu loại bỏ bất kể thuộc tính A nào từ
A sẽ làm cho phụ thuộc hàm này không còn đúng nữa. với mọi thuộc tính A ∈ X, X-
{A} không xác định Y. Một phụ thuộc hàm X → Y là một phụ thuộc hàm một phần nếu
một thuộc tính A nào đó có thể bị loại khỏi X mà phụ thuộc hàm đó vẫn đúng. với một
thuộc tính A ∈ X, X-{A} → Y .
Định nghĩa chuẩn 2NF: một lược đồ quan hệ R ở dạng 2 NF với một tập phụ thuộc
hàm F nếu nó ở dạng 1NF và mọi thuộc tính không khoá đều phụ thuộc hàm đầy đủ vào
mọi khoá của R. Một cách khác để phát biểu định nghĩa trên là: không tồn tại một thuộc
tính không khoá nào mà phụ thuộc hàm một phần vào một khoá nào đó của R. Nói một
cách khác, không có thuộc tính không khoá chỉ phụ thuộc vào một phần của khoá của
R.
- Sales(sid, sname, city, item, price)
- F = {sid → (sname,city), (sid,item) → price}
- Khoá chính (sid,item), ta có sname, city không phụ thuộc hàm đầy đủ vào khóa
chính => Quan hệ Sales không thuộc 2NF
- S(sid, sname, city) và Sales (sid, item, price) là quan hệ thuộc 2NF
4.4.3. Dạng chuẩn 3NF và chuẩn hóa về 3NF
Định nghĩa phụ thuộc bắc cầu: cho một quan hệ R và một tập phụ thuộc hàm F
của R, một tập con X ⊆ R và một thuộc tính A của R. A được nói là phụ thuộc hàm
bắc cầu vào X nếu tồn tại Y ⊆ R mà X → Y, Y không → X và Y → A và A ∉ X∪Y.
Một cách định nghĩa khác cho một phụ thuộc hàm bắc cầu là: một phụ thuộc hàm
X → Y trong một lược đồ quan hệ R là phụ thuộc bắc cầu nếu có một tập thuộc tính Z
⊆ R mà Z không phải là tập con của bất kỳ khoá nào của R nhưng X → Z và Z → Y.
136
Định nghĩa chuẩn 3NF: Một lược đồ quan hệ R ở dạng 3NF với một tập phụ thuộc
hàm F nếu nó ở dạng 2NF và với bất kỳ phụ thuộc hàm X → A thì hoặc là (1) X là một
siêu khóa của R hoặc (2) A là một thuộc tính khóa.
Định nghĩa 3NF cách khác: Một lược đồ quan hệ R ở dạng 3NF với tập phụ thuộc
hàm F nếu nó ở dạng 2NF và không có thuộc tính không khoá nào phụ thuộc hàm bắc
cầu vào một khoá của R.
Ví dụ: Cho R = (A, B, C, D) với K = {AB}, F = {AB → CD, C → D, D → C} thì
R không ở dạng 3NF vì C → D và C không phải là siêu khoá của R. Một cách khác, R
không ở dạng 3NF vì AB → C và C → D và vì D là một thuộc tính không khoá nhưng
lại phụ thuộc bắc cầu vào khoá AB.
Chúng ta cùng phân tích xem tại sao lại cần dạng chuẩn 3NF thông qua việc xét cơ
sở dữ liệu ví dụ sau đây với thể hiện dữ liệu của lược đồ quan hệ ở bảng sau đó.
assign (flight, day, pilot-id, pilot-name)
K = {flight day}
F = {pilot-id → pilot-name, pilot-name → pilot-id}
flight
day
pilot-id
pilot-name
112
Feb.11
317
Mark
112
Feb. 12
246
Kristi
114
Feb. 13
317
Mark
Bảng 4.9: Dạng chuẩn 3NF.
Vì {flight day} là khoá nên rõ ràng là {flight day} → pilot-name. Nhưng trong F
ta có pilot-name → pilot-id, và ta có {flight day} → pilot-id. Bây giờ giả sử rằng ta
thêm một bảng ghi mới vào bảng trên như bảng sau thì pilot-name → pilot-id bị vi
phạm. Một phụ thuộc hàm bắc cầu tồn tại vì pilot-id → pilot-name và pilot-id không
phải là siêu khoá.
137
flight
day
pilot-id
pilot-name
112
Feb.11
317
Mark
112
Feb. 12
246
Kristi
114
Feb. 13
317
Mark
112
Feb. 11
319
Mark
Bảng 4.10: Chuẩn hóa về 3NF.
Chia sẻ với bạn bè của bạn: |