Trang 2 2 7 3 7 Khi đó t(r1) = 2 7 Ti = t(Ri) ∈ ΠRi(r) t= t1 ∞ t2 ∞...∞ tk ⊆ ΠR1(r) ∞ ΠR2(r)∞...∞ ΠRk(r) t ⊆ Mp(r) 2. nếu s = Mp(r) thì ΠRi(s)=ri từ (1) ta có r ⊆ Mp(r) ⇒ ΠRi(r)⊆ΠRi(Mp(r)) ⇒ ri⊆ΠRi(s)
Chứng minh ngược lại ΠRi(s) ⊆ ri Lấy ti ∈ ΠRi(s) (i=1..k)
Đặt t= t1∞ t2∞...∞ tk ∈Mp(Mp(r)) =Mp(s)
(vì ΠR1(s) ∞ ΠR2(s) ∞ ... ∞ΠRk(s) = Mp(s)= Mp(Mp(r)))
ti ∈ΠR1(r) ∞ ΠR2(r) ∞ ... ∞ΠRk(r) =ΠRi(ΠRi(r)) = ΠRi(r) = ri (dpcm) 3. Mp(r)=Mp(Mp(r))
từ (2) tacó ri= ΠRi(s) ⇒ r1 ∞ r2 ∞...∞rk= ΠR1(s) ∞ ΠR2(s) ∞ ... ∞ΠRk(s) = Mp(s)= Mp(Mp(r).
4.2 Thuật toán xác định phép tách có mất thông tin hay không Thuật toán:
Dữ liệu vào:
- Lược đồ quang hệ R - Tập phụ thuộc hàm F Phép tách P(R1,R2,...,Rk)
Ra: Xác định liệu phép tách P có mất thông tin hay không. Phương pháp:
R=(A1,A2,...An)
Ta xây dựng một bảng k dòng, n cột. Các dòng của bảng được đánh dấu bởi các thuộc tính R1, R2,...,Rk, các cột được đánh dâu bởi các thuộc tính A1,A2,...,An.
Trong bảng điền các ký hiệu như sau:
- Vị trí ứng với cột Ạ và dòng Ri thì ghi aj nếu Aj∈Ri hoặc ghi bij nếu Aj ∉Ri - Biến đổi các ký hiệu trong bảng theo quy tắt sau:
1. Ứng với mỗi phụ thuộc hàm X → Y ∈ F tìm các cặp dòng (2 dong một) mà giá trị của nó trùng nhau trên các vị trí tương ứng các cột trong X thì làm bằng các ký hiệu tương ứng với các vị trí trong Y, nguyên tắt làm bằng như sau:
- nếu một trong hai ký hiệu ứng với thuộc tính Aj là aj thì thay giá trị kia bằng aj. Nếu cả hai ký hiệu ứng với thuộc tính Aj là blj và bij thì thay chúng bằng blj hoặc bij để cho chúng giống nhau.
2. Lặp lại quá trình 1 cho đến khi không còn có sự thay đổi nào trên bảng.
3. Nếu trong bảng kết quả có ít nhất một dòng toàn ký hiệu a(a1,a2,...an) thì phép tách là không mất thông tin , ngược lại thì phpe tách mất thông tin.
Xử lý thông tin trong CSDL
Trang 3
Cho lược đồ quang hệ R=ABCDE Tách R thành các lược đồ sau:
R1 = AD, R2=AB, R3= BE, R4= CDE, R5= AE
tập phụ thuộc hàm F=(A→C,B→C,C→D,DE→C,CE→A) Xác định phép tách trên có mất thông tin hay không
lập bảng:
A B C D E
AD a1 b12 b13 a4 b15
AB a1 a2 b23(b13) b24(a4) b25
BE b31(a1) a2 b33(b13)(a3) b34(a4) a5
CDE b41 b42 a3 a4 a5
AE a1 b52 b53(b13)(a3) b54(a4) a5
Phép tách trên không mất thông tin vì có dòng BE toàn ký hiệu a Ví dụ 2:
Xét quan hệ người cung cấp như sau: S(PRO, PRICE, ADD, PRO, PRICE) Được tách thành 2 lược đồ quan hệ sau S1(SNAME, ADD)
S2(SNAME, PRO, PRICE) Với các phụ thuộc hàm như sau: SNAME → ADD
SNAME,PRO →PRICE
Ban đầu ta thiết lập bảng như sau:
SNAME ADD PRO PRICE
S1 a1 a2 b13 b14
Xử lý thông tin trong CSDL
Trang 4
Áp dụng phụ thuộc hàm SNAME→ADD cho hai hàng của bảng. Hai bảng bằng nhau trên cột SNAME ( đều bằng a1) nên ở cột ADD chúng được làm bằng và làm bằng a2 Bảng kết quả là
SNAME ADD PRO PRICE
S1 a1 a2 b13 b14
S2 a1 a2 a3 a4
Bảng kết quả có dòng thứ hai giá trị toàn là a , do đó kết quả nối là không mất thông tin
4.2 Chuẩn hóa lược đồ quang hệ
Do việc cập nhất dữ liệu (qua các phép tínha chèn, loại bỏ, sửa đổi) gây nên những dị thường cho nên các quan hệ cần thiết phải được biến đổi thành những dạng phù hợp. Quá trình đó được xem là quá trình chuẩn hóa. Quan hệ được chuẩn hóa là quan hệ trong đó mỗi miền của một thuộc tính chí chứa những giá trị nguyên tố tức là không phân nhỏ được nữa.
Quan hệ có chứa các miền trị không nguyên tố gọi là quan hệ không chuẩn hóa . Một quan hệ được chuẩn hóa có thể thành một hoặc nhiều quan hệ chuẩn hóa khác và không làm mất thông tin.
Ví dụ S# PRO S# P# QTY P# QTY 100 1 1 100 1 200 2 1 200 2 1 300 1 1 300 1 100 4 2 100 4 2 200 2 2 200 2 400 5 3 400 5 3 500 1
Không chuẩn hóa Chuẩn hóa
3 500 1
4.2.1Các dạng chuẩn
Trong lý thuyết ban đầu Codd đưa ra 3 dạng chuẩn của quan hệ sau:
Dạng ban đầu(Không chuẩn hóa)
Xử lý thông tin trong CSDL
Trang 5
Dạng chuẩn thứ 2 (2NF) Dạng chuẩn thứ 3 (3NF)