Tải bản đầy đủ (.ppt) (36 trang)

Bài 17. Phép Tách Lược Đồ Quan Hệ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1009.94 KB, 36 trang )

BÀI 17:
PHÉP TÁCH LUỢC ĐỒ QUAN HỆ
1/36
nội dung:
Tách lược đồ quan hệ
Phép tách bảo toàn phụ thuộc hàm
Thuật toán tách lược đồ thành 3NF
Tách không mất thông tin thành các
lược đồ ở dạng BCNF
Tổng kết
2/36
nội dung:
Tách lược đồ quan hệ
Phép tách bảo toàn phụ thuộc hàm
Thuật toán tách lược đồ thành 3NF
Tách không mất thông tin thành các
lược đồ ở dạng BCNF
Tổng kết
3/36
17.1. Tách lược đồ quan hệ
Định nghĩa:
Phép tách lược đồ quan hệ α =( U, F) là phép thay thế nó
bằng một tập các lược đồ con αi=(Ui, Fi), i=1, …, k với
điều kiện :
Ui≠φ i=1, …, k ∪Ui=U, Fi=F/Ui
Phép tách đó được ký hiệu là: δ ={ U1, U2, …, Uk } là một
phép tách khi đó R là một quan hệ trên U, kí hiệu:
mδ(R) =R[U1]*[U2]*…*[Uk]
4/36

17.1. Tách lược đồ quan hệ


Định nghĩa:
Phép tách kết nối không mất thông tin
( lossless-join decomposition)
Cho lược đồ quan hệ α =( U, F)
và phép tách δ ={ U1, U2, …, Uk } đối với lược đồ đó.
Phép tách δ được gọi nối không mất thông tin nếu mọi
quan hệ R trên U thì ta có mδ(R) =R,

Ngược lại nếu mδ(R) ≠R thì phép tách δ là phép tách mất
thông tin.
5/36
17.1. Tách lược đồ quan hệ
Bổ đề:
Cho lược đồ quan hệ α =( U, F)
và phép tách δ ={ U1, U2, …, Uk } đối với lược đồ đó,
R là một quan hệ trên U, gọi Ri=R[Ui] thì:

R⊆ mδ(R)

Nếu S= mδ(R) thì S[Ui]=Ri

mδ(mδ(R))= mδ(R)
6/36
17.1. Tách lược đồ quan hệ
Chứng minh:
a) Lấy t∈R, đặt ti=t.Ui, khi đó ti =t.Ui∈R[Ui]
=> ∈R[U1]*[U2]*…*[Uk]
Vậy t∈ mδ(R) vậy R⊆ mδ(R)
b) Ta có R⊆S =>R[Ui] ⊆ S[Ui] hay Ri⊆ S[Ui].
Cần chỉ ra rằng S[Ui] ⊆ Ri giả sử với một i mà ti∈S[Ui].

Khi đó t=<t1, t2, …, tk>∈ S sao cho t[Ui]=ti.
7/36
17.1. Tách lược đồ quan hệ
Chứng minh:
Cũng vì t∈S sao cho t[Ui]=vj
=>có vj∈ Ri sao cho t[Ui]=vj.
Trong trường hợp này t[Ui] ∈ Ri.
Nhưng vì t[Ui]=ti và do đó S[Ui] ⊆ Ri từ đó Ri= S[Ui].
c) Nếu S= mδ(R) thì theo b) có S[Ui] = Ri.
Do vậy: mδ(S)= Ri= mδ(R)
8/36
1
*
=
i
k
17.1. Tách lược đồ quan hệ
Bài toán:
Cho lược đồ quan hệ α =( U, F) và phép tách δ, hỏi rằng
phép tách đó có mất thông tin hay không, hay với phép
tách δ cần kiểm tra xem đẳng thức mδ(R)=R, với mọi
R(U)
9/36
17.1. Tách lược đồ quan hệ
Thuật toán kiểm tra phép tách kết nối có mất thong tin
hay không?
Input:

Tập thuộc tính U


Tập phụ thuộc hàm F

Phép tách δ ={ U1, U2, …, Uk }
Output:
Xác định liệu phép tách δ có mất thông tin hay không.
10/36
17.1. Tách lược đồ quan hệ
Thuật toán:
Bước 1: Giả sử U ={ A1, A2, …, An }.
Ta xây dựng một bảng gồm k+1 dòng, n+1 cột
(n=|U|, k=| δ|).
Cột thứ i (i=1..n) của bảng ứng với thuộc tính Ai .
Hàng thứ j (j=1..k) của bảng ứng với lược đồ con
αj=(Uj,Fj). Tại cột i (i=1..n) và hàng j (j=1..k) ta điền ký
hiệu aj ( ta gọi ký hiệu aj là tín hiệu chính) nếu thuộc tính
Aj∈Ui .
Ngược lại ta điền bji ( ta gọi bji là tín hiệu phụ).
11/36
17.1. Tách lược đồ quan hệ
Thuật toán:
Bước 2: Biến đổi bảng như theo quy tắc như sau:

Với mỗi phụ thuộc hàm X→Y∈ F, nếu trong bảng có
hai hàng giống nhau trên tập thuộc tính X thì ta cần làm
chúng giống nhau trên tập thuộc tính Y theo quy tắc sau:
- Nếu một trong hai giá trị là tín hiệu phụ thì ta sửa lại
tín hiệu phụ thành tín hiệu chính tức là bji thành aj.
- Nếu cả hai là tín hiệu phụ thì ta sửa lại nột trong hai
tín hiệu đó bằng một trong các ký hiệu bji, tức là chỉnh lại
chỉ số cho giống nhau.

12/36
17.1. Tách lược đồ quan hệ
Thuật toán:
Bước 2:

Tiếp tục áp dụng các phụ thuộc hàm trong bảng cho tới
khi không còn áp dụng được nữa.

Quan sát trong bảng cuối cùng:
- Nếu xuất hiên ít nhất một hàng gồm toàn tín hiệu
chính (hàng gồm toàn ký hiệu a) thì phép tách δ có kết nối
không mất thông tin.
- Ngược lại thì phép tách δ là phép tách có kết nối mất
thông tin.
13/36
17.1. Tách lược đồ quan hệ
Ví dụ:
Cho lược đồ quan hệ α =( U, F) với
U={A1, A2, A3, A4, A5}
F={A1→A2A3, A2A4→A5, A2→A3}
δ ={A1A2A4, A2A3, A1A4A5}
Hỏi rằng phép tách δ trên có kết nối không mất thông tin
không?
14/36

×