Tải bản đầy đủ (.pdf) (38 trang)

Bài tập thực hành môn Hệ quản trị cơ sơ dữ liệu

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 (423.32 KB, 38 trang )

HeCSDL
1
NN
NN
CHƯƠNG
CHƯƠNG
10
10
Phân rã lư
Phân rã lư


c đ
c đ


HeCSDL 2
NN
NN
N
N


i dung
i dung
 Phân rã lược đồ
 Phân rã không mất mát thông tin
 Phân rã bảo toàn phụ thuộc hàm
 Các giải thuật phân rã
HeCSDL 3
NN


NN
M
M


c đ
c đ
í
í
ch c
ch c


a phân rã lư
a phân rã lư


c đ
c đ


quan h
quan h


 Được xem như 1 công cụ bổ sung vào phương
pháp ER để loại trừ dư thừa dữ liệu
 Phụ thuộc hàm được xem như là sự khái quát
hóa các ràng buộc chính (key constraint). Các
FD được dùng để xác định các dạng chuẩn

(normal form). Việc phân rã lược đồ sẽ dựa theo
các dạng chuẩn này
Æ Lý thuyết phân rã còn được gọi là lý thuyết
chuẩn hóa.
3
HeCSDL 4
NN
NN


nh ch
nh ch


t c
t c


a phân r
a phân r
ã
ã
l
l
ượ
ượ
c đ
c đ



 Vì chuẩn BCNF gần như không dư thừa và
chuẩn 3NF tuy có dư thừa nhưng cũng
hạn chế, nên việc phân rã lược đồ sẽ chỉ
hướng đến hai dạng này.
4
HeCSDL 5
NN
NN
Phân rã l
Phân rã l
ượ
ượ
c đ
c đ





Decomposition
Decomposition


 Phân rã 1 lược đồ R = (U,F) với U là tập
các thuộc tính, F là tập phụ thuộc hàm sẽ
cho ra 1 tập hợp các lược đồ
R1 = (U1,F1) R2= (U2, F2)….
Rn = (Un,Fn)
Sao cho thỏa mãn điều kiện sau:
 U =

 F suy dẫn Fi với i = 1, ,n
1
n
i
i
U
=
U
5
HeCSDL 6
NN
NN


Phân rã lư
Phân rã lư


c đ
c đ


 Phân rã lược đồ sẽ dẫn đến việc phân rã
quan hệ.
 Phân rã 1 quan hệ r trên lược đồ R, cho
ra 1 tập hợp các quan hệ
r
1
= π
U1

(r) r
2
= π
U2
(r),….
r
n
= π
Un
(r)
6
HeCSDL 7
NN
NN
Phân rã không m
Phân rã không m


t m
t m
á
á
t
t
thông tin(Lossless decomposition)
thông tin(Lossless decomposition)
 Khảo sát quan hệ r và các phân rã của nó
r
1
,…, r

n

 Sau phân rã, CSDL không còn lưu trữ
quan hệ r nữa mà chỉ lưu lại các quan hệ
chiếu của nó r
1
, , r
n
. CSDL phải có khả
năng khôi phục lại quan hệ gốc r từ các
quan hệ chiếu này.
 Nếu không khôi phục lại được quan hệ r
thì việc phân rã không biểu diễn cùng 1
thông tin với CSDL gốc Î Phân rã mất
mát (lossy decomposition)
7
HeCSDL 8
NN
NN
Phân rã k
Phân rã k
ế
ế
t n
t n


i không m
i không m



t m
t m
á
á
t thông tin
t thông tin
(Lossless
(Lossless
-
-
join decomposition)
join decomposition)
 Phân rã lược đồ R = (U,F) thành 1 tập hợp các
lược đồ
R
1
= (U
1
,F
1
) R
2
= (U
2
, F
2
)….
R
n

= (U
n
,F
n
)
Không mất mát (lossless) thông tin nếu với mỗi
thể hiện (instance) hợp lệ r của lược đồ R thì
r = r
1
r
2
… r
n
Với r1 = π
U1
(r) r2 = π
U2
(r),….
rn = π
Un
(r)
8
HeCSDL 9
NN
NN
Ví dụ
Ví dụ
phân r
phân r
ã

ã


Cho quan hệ r
Phân rã thành 2 quan hệ
9
HeCSDL 10
NN
NN


Ví dụ
Ví dụ
phân r
phân r
ã
ã
 Kết nối tự nhiên 2 quan hệ phân rã này:
Î Có những bộ không thuộc quan hệ gốc
ban đầu
10
HeCSDL 11
NN
NN
Phân rã không m
Phân rã không m


t m
t m

á
á
t thông tin
t thông tin
 Thực tế sẽ nhận được nhiều bộ (tuple) từ
phép kết các r1, r2,…,rn hơn là các bộ gốc ban
đầu Æ Vậy tại sao lại gọi là mất mát (lossy)??
 Tuy nhiều bộ hơn nhưng lại thiếu thông tin và
không có cách nào biết được bộ nào là đúng, bộ
nào là không đúng với bộ gốc.
 Nhiều bộ hơn nhưng không đúng thông tin thì
sẽ đồng nghĩa với mất mát thông tin
11
HeCSDL 12
NN
NN
Phân rã nh
Phân rã nh


phân
phân
(Binary Decomposition)
(Binary Decomposition)


 Cho lược đồ R = (U,F) và R
1
= (U
1

,F
1
) ,
R
2
= (U
2
, F
2
) là một phân rã nhị phân của
R.
 Sự phân rã này không mất thông tin nếu
và chỉ nếu thỏa mãn một trong các điều
kiện sau:
 (U1 ∩ U2) Æ U1 ∈ F
+
 (U1 ∩ U2) Æ U2 ∈ F
+
12
HeCSDL 13
NN
NN


Phân rã nh
Phân rã nh


phân
phân

 Các thuộc tính chung của U1 và U2 phải chứa
khóa của hoặc R1 hoặc R2.
 Kiểm tra này là cần thiết để bảo đảm phân rã có
kết nối không bị mất mát
 Ví dụ: Cho R(SNLRWH) có FD R Æ W vi phạm
chuẩn 3NF, nên tách thành SNLRH and RW.
Phân rã này có bị mất kết nối không???
 Không, vì R là thuộc tính chung của cả 2
lược đồ R1, R2 nên phân rã này kết nối
không mất mát thông tin
13
HeCSDL 14
NN
NN
V
V
í
í
d
d




 Xét lược đồ quan hệ
PERSON(SSN, Name, Address,Hobby)
SSN Name Address Hobby
1111111 John 123 Main St. Stamps
1111111 John 123 Main St. Coins
5556667 Mary 7 Lake Dr. Hiking

5556667 Mary 7 Lake Dr. Skating
9876543 Simpson Fox 5 TV Acting
14
HeCSDL 15
NN
NN


V
V
í
í
d
d




 Nếu phân rã lược đồ trên thành 2 lược đồ
sau:
PERSON1(SSN, Name, Address)
HOBBY(SSN, Hobby)
Việc phân rã này có mất thông tin không??
15
HeCSDL 16
NN
NN


V

V
í
í
d
d


 Vì PERSON1 ∩ HOBBY = {SSN} mà SSN
là khóa chính của PERSON1, do đó
PERSON1 ∩ HOBBY Æ PERSON1
Phân rã này không mất thông tin
16
HeCSDL 17
NN
NN
Phân rã b
Phân rã b


o to
o to
à
à
n ph
n ph


thu
thu



c h
c h
à
à
m
m
(Dependency
(Dependency
-
-
Preseving Decomposition)
Preseving Decomposition)
 Cho lược đồ R = (U,F) và R
1
= (U
1
,F
1
) ,
R
2
= (U
2
, F
2
), , R
n
= (U
n

, F
n
) là phân rã của
R.
 Phân rã được gọi là bảo toàn phụ thuộc
hàm nếu và chỉ nếu F và là tương
đương nhau.
1
n
i
i
F
=
U
17
HeCSDL 18
NN
NN
V
V
í
í
d
d




 Khảo sát lược đồ quan hệ sau:
HASACCOUNT(ClientId, OfficeId, AccountNumber)

Với các FD sau:
 ClientId, OfficeId Æ AcountNumber
 AccountNumberÆ OfficeId
Nếu phân rã lược đồ trên thành 2 lược đồ
sau:
ACCTOFFICE (AccountNumber
, OfficeId)
ACCTCLIENT (AccountNumber, ClientId)
Phân rã trên có mất mát thông tin không???
18
HeCSDL 19
NN
NN


V
V
í
í
d
d


 Phân rã trên không mất mát thông tin vì:
AccountNumber là khóa chính của
ACCTOFFICE
 Nhưng phân rã này không bảo toàn phụ
thuộc hàm
19
HeCSDL 20

NN
NN


V
V
í
í
d
d


 Phụ thuộc hàm gốc ClientId, OfficeId Æ
AcountNumber (1) không tồn tại trong các
phụ thuộc hàm của các lược đồ phân rã
vì:
 Cả hai phân rã đều không chứa đủ các
thuộc tính khóa của phụ thuộc hàm gốc
(1) nên không thể suy diễn lại được phụ
thuộc hàm này
20
HeCSDL 21
NN
NN
Phân rã b
Phân rã b


o to
o to

à
à
n ph
n ph


thu
thu


c h
c h
à
à
m
m
 Nếu 1 phụ thuộc hàm f ∈ F nhưng không
thuộc bất kỳ Fi nào không có nghĩa là
phân rã không bảo toàn phụ thuộc hàm
nếu f có thể được suy diễn từ
 Chỉ khi nào f không suy diễn được phân
rã mới không bảo toàn phụ thuộc
21
1
n
i
i
F
=
U

HeCSDL 22
NN
NN
V
V
í
í
d
d


 Phân rã quan hệ HASACCOUNT
22
AccountNumber
AccountNumber
ClientId
ClientId
OfficeId
OfficeId
B123
B123
111111
111111
SB01
SB01
A908
A908
123456
123456
MN08

MN08
Account
Account
Number
Number
OfficeId
OfficeId
B123
B123
SB01
SB01
A908
A908
MN08
MN08
Account
Account
Number
Number
ClientId
ClientId
B123
B123
111111
111111
A908
A908
123456
123456
HeCSDL 23

NN
NN
V
V
í
í
d
d


 HASACCOUNT và phân rã của nó sau khi chèn
thêm 1 hàng
23
AccountNumber
AccountNumber
ClientId
ClientId
OfficeId
OfficeId
B123
B123
111111
111111
SB01
SB01
B567
B567
111111
111111
SB01

SB01
A908
A908
123456
123456
MN08
MN08
AccountNumber
AccountNumber
OfficeId
OfficeId
B123
B123
SB01
SB01
B567
B567
SB01
SB01
A908
A908
MN08
MN08
Account Number
Account Number
ClientId
ClientId
B123
B123
111111

111111
B567
B567
111111
111111
A908
A908
123456
123456
Sau khi join 2 lược đồ phân rã lại, phụ thuộc hàm
ClientId, OfficeId
ClientId, OfficeId
Æ
Æ
AcountNumber b
AcountNumber b


vi ph
vi ph


m
m
HeCSDL 24
NN
NN
M
M



t m
t m
á
á
t v
t v
à
à
b
b


o to
o to
à
à
n
n
 2 tính chất của phân rã:
 Lossless ( không mất thông tin)
 Dependency-preserving (bảo toàn phụ
thuộc hàm)
 Tính chất nào quan trọng hơn???
Î Lossless là bắt buộc (mandatory) trong
khi dependency-preserving là tùy chọn
(optional)
24
HeCSDL 25
NN

NN
Gi
Gi


i thu
i thu


t phân rã BCNF
t phân rã BCNF


 R=(U,F) là 1 lược đồ quan hệ không ở
chuẩn BCNF.
 Giải thuật: thực hiện lặp lại việc phân chia
R thành những lược đồ nhỏ hơn sao cho
các lược đồ mới có ít FD vi phạm BCNF
hơn. Giải thuật kết thúc khi tất cả lược đồ
kết quả đều ở dạng BCNF
25

×