Thuật toán: Tách không bị mất mát thông tin
Đầu vào: R(A
1
, A
2
, …, A
n
), F, phép tách {R
1
, R
2
, …, R
k
}
Đầu ra: phép tách là mất mát thông tin hay không
Thuật toán
B1: Thiết lập một bảng k hàng, n cột . Nếu A
j
là thuộc tính của R
i
thì điền a
j
vào ô (i,j). Nếu không thì điền bij.
Bi: Xét f = X→Y
∈ F
Nếu ∃ 2 hàng t1, t2 thuộc bảng: t1[X] = t2[X] thì đồng nhất t1[Y] = t2[Y],
ưu tiên về giá trị a.
Lặp cho tới khi không thể thay đổi được giá trị nào trong bảng
Bn: Nếu bảng có 1 hàng gồm các ký hiệu a
1
, a
2
, … , a
n
thì phép tách là không
134
mất mát thông tin ngược lại, phép tách không bảo toàn thông tin
Bảng 4.8: Phép tách không làm mất mát thông tin.
4.4.
Chuẩn hóa lược đồ quan hệ
Sau khi đã nghiên cứu các phụ thuộc hàm và một số tính chất của chúng, bây giờ
chúng ta sẽ sử dụng chúng như thông tin về ngữ nghĩa của các lược đồ quan hệ.
Ta giả sử rằng mỗi một quan hệ được cho trước một tập các phụ thuộc hàm và mỗi
quan hệ có một khoá chính. Trong phần này chúng ta sẽ nghiên cứu các dạng chuẩn và
quá trình chuẩn hóa các lược đồ quan hệ.
4.4.1. Dạng chuẩn 1NF và chuẩn hóa về 1NF
Dạng chưa phải chuẩn 1 (Non-first normal form-N1NF)
Các quan hệ ở dạng chưa chuẩn 1 là những quan hệ chứa một hoặc nhiều thuộc
tính chưa phải nguyên tố. Nói một cách khác, trong một quan hệ và trong một bộ có
nhiều thuộc đa trị. Một số mở rộng quan trọng tới mô hình quan hệ trong đó các quan
hệ N1NF được sử dụng. Với hầu hết các phần còn lại trong phạm vi bài giảng chúng ta
sẽ không bàn luận đến chúng một cách chi tiết. Các cơ sở dữ liệu quan hệ về thời gian
và một số loại về không gian thường rơi vào loại N1NF này.
Dạng chuẩn 1 (First Normal Form-1NF)
Một quan hệ trong đó mỗi giá trị thuộc tính đều ở dạng nguyên tố thì quan hệ đó ở
dạng 1NF. Chúng ta sẽ chỉ quan tâm tới các quan hệ dạng 1NF cho hầu hết các phần
của môn học này. Lưu ý là các quan hệ chưa phải thuộc dạng chuẩn 1 nếu chúng chứa
các thuộc tính ghép, các thuộc tính đa trị và các thuộc tính dẫn xuất. Khi gặp những
thuộc tính đa trị ở mức khái niệm, nhắc lại rằng trong quá trình chuyển đổi sang mô
hình dữ liệu thì cần tạo một bảng riêng biệt cho thuộc tính đa trị đó.
Trước khi chuyển sang xem xét dạng chuẩn 2NF, ta tìm hiểu một số thuật ngữ mới.
Một khoá là một siêu khoá với các thuộc tính ràng buộc là nếu loại bỏ bất kể thuộc tính
nào từ khoá này thì sẽ biến khoá đó không còn là một siêu khoá nữa. Nói một cách khác,
khoá có số thuộc tính là nhỏ nhất.
Một khoá dự bị cho một quan hệ là một tập các khoá nhỏ nhất cho lược đồ quan hệ
đó. Khoá chính cho một quan hệ là một khoá dự bị được lựa chọn ra. Tất cả các khoá
dự bị còn lại trở thành khoá phụ (hay khoá thứ cấp). Một thuộc nh khoá (chính) là thuộc
tính của lược đồ quan hệ R mà là thành viên của một khoá dự bị nào đó của R. Thuộc
135
tính không khoá là bất kỳ thuộc tính nào của R mà không phải là thành viên của một
khoá dự bị nào cả.
Chia sẻ với bạn bè của bạn: |