Chương 4:Lý Thuyết Thiết Ké Cơ Sở Dữ Liệu
I.
1.
Khái Niệm Phụ thuộc Hàm
Định Nghĩa: là khái niệm quan trọng nhất
trong việc thiết kế cơ sở dữ liệu
- cho quan hệ R trên tập thuộc tính U
R(U)
+ với U={A1,A2,A3…An}
x,y,z là tập con của U
x y nếu mọi t & t’
t.x=t’.x
t.y=t’.y
⇒
•
Ví dụ:
x={masv}
y={hoten,ngaysinh}
=>x y
2. Hệ tiên đề Amstrong
a. đ/n hệ tiên đề amstrong
Gọi R(U) là lược đồ quan hệ với U = {A 1,…,An} là tập các
⊆U. Hệ tiên đề Armstrong bao
thuộc tính. X, Y, Z, W ⊆ →
gồm:
F1) Tính phản xạ:
Y ⊆ X ⇒X Y
F2) Tính bắc cầu:
X Y, Y Z ⇒ X Z
F3) Tính mở rộng hai vế(tăng trưởng)
X Y ⇒ (Z ⊆ U) XZ YZ
• b. bổ đề
. Bổ đề 1:
Hệ tiên đề Armstrong là đúng. Có nghĩa là F là tập
các phụ thuộc hàm đúng trên quan hệ R. Nếu X
Y là một phụ thuộc hàm được suy dẫn từ F nhờ
hệ tiên đề Armstrong thì X Y là đúng trên quan
hệ R.
Bổ đề 2:
F4) Cộng tính ở vế phảI( luật hợp)
X Y, X Z ⇒ X YZ
F5) Tính tựa bắc cầu(giả bắc cầu)
X Y, YZ W ⇒ XZ W
F6) Luật tách:
X Y Z ⇒ X Z và x y
Ví dụ:
Cho tập phụ thuộc hàm F = {A B, B CD} ta
chứng minh phụ thuộc hàm AC CD được suy
diễn logic từ F.
Thật vậy:
F3: A B ⇒ AC BC
F3: B CD ⇒ BC CD
F3: AC BC, BC CD ⇒ AC CD
Ví dụ 2:cho R={A,B,C,D,E}
F={A BC,B D,C E}
CMR:A E,A D
Ví dụ 3:cho R={ABCDEF}
F={A BC,AB D,AC E,DE F,F AD)
CMR:A E,F DE
3. Tính bao đóng
a. Bao đóng của phụ thuộc hàm
a. Định nghĩa:
Cho tập phụ thuộc hàm F trên tập thuộc tính U. Bao đóng của F,
ký hiệu là F+, là tập nhỏ nhất các phụ thuộc hàm trên U thoả:
F+ = {X Y | F |== X Y}
b. Định nghĩa khác cho bao đóng của tập phụ thuộc hàm:
F+ là tập các phụ thuộc suy diễn từ F nhờ hệ tiên đề Armstrong.
Tức nó phải thoả hai tính chất sau:
F+ ⊇ F
Khi áp dụng các tính chất F1, F2, F3 cho F+ ta không thu được phụ
thuộc hàm nào nằm ngồi F+.
c. Tính chất:
(1): Tính phản xạ: F+ ⊇ F
(2): Tính đơn điệu: F ⊆ G ⇒ F+ ⊆ G+
(3): Tính lũy đẳng: (F+)+ = F+
(4): (FG)+ ⊇ F+G+
(5): (F+G)+ = (FG+)+ = (FG)+
b. Bao đóng của tập thuộc tính
a. Định nghĩa:
Cho tập phụ thuộc hàm F trên tập thuộc tính U và X ⊆ U. Bao
đóng của tập thuộc tính X (đối với F), ký hiệu X+, là tập sau:
X+ = {A | X A ∈ F+}
b. Định nghĩa khác cho bao đóng của tập thuộc tính:
X+ là tập các thuộc tính A sao cho X A có thể suy diễn được
từ F bằng hệ tiên đề Armstrong.
c. Tính chất:
(1): Tính phản xạ: X+ ⊇ X
(2): Tính đơn điệu: X ⊆ Y ⇒ X+ ⊆ Y+
(3): Tính lũy đẳng: (X+)+ = X+
(4): (XY)+ ⊇ X+Y+
(5): (X+Y)+ = (XY+)+ = (XY)+
(6): X Y ⇒ Y ⊆ X+
(7): X Y ⇒ Y+ ⊆ X+
(8): X X+ và X+ X
(9): X+ = Y+ ⇒ X Y, Y X
4. phụ thuộc hàm tương đương
- khái niệm
Cho R={A1,A2….An}
Cho lược đồ quan hệ R và các tập phụ thuộc hàm F và G trên R ta
nói:
F phủ phụ thuộc hàm G nếu G+ ⊂ F+
F tương đương phụ thuộc hàm G nếu G+ = F+
Để xác định phụ thuộc hàm Y Z ∈ G+ hay không ta sử dụng
thuật tốn tính bao đóng tập thuộc tính để tính Y+ đối với G và
kiểm tra xem Z ⊂ Y+ hay không.
Mệnh đề: F ⊂ G+ ⇔ F+ ⊂ G+
Mệnh đề: Mỗi tập phụ thuộc hàm F tương đương với tập phụ
thuộc hàm G gồm các phụ thuộc hàm mà vế phải chỉ có 1
thuộc tính.
b. Phủ tối tiêu:
Để tối ưu hơn nữa việc thiết kế lược đồ CSDL quan hệ ta yêu cầu mạnh hơn
đối với tập phụ thuộc hàm tương đương.
Định nghĩa: Tập phụ thuộc hàm F gọi là phụ thuộc hàm tối thiểu nếu nó
thoả mãn các điều kiện sau:
(1): Vế phải của mỗi phụ thuộc hàm trong F chỉ có 1 thuộc tính.
(2): Mọi phụ thuộc hàm X A ∈ F là quan trọng, tức là tập phụ thuộc hàm
có từ F bằng sự loại bỏ phụ thuộc hàm X A:
F \ {X A}
không tương đương với F.
(3): Với mỗi phụ thuộc hàm X A ∈ F, mọi thuộc tính B ∈ X đều quan
trọng, tức là tập phụ thuộc hàm có từ F bằng việc thay phụ thuộc hàm X
A bởi phụ thuộc hàm (X \{B}) A:
(F \ {X A}) ∪ {X \ {B} A}
không tương đương với F.
Nhận xét: Điều kiện (2) đảm bảo khơng có phụ thuộc hàm dư thừa, điều
kiện (3) đảm bảo khơng có thuộc tính ở vế trái dư thừa.
Thuật tốn tìm phủ tối thiểu:
- Input: Tập phụ thuộc hàm F.
- Output: Tập phụ thuộc hàm tối thiểu G tương đương với F.
- Method:
(1): Phân rã vế phải tất cả phụ thuộc hàm của F và gọi G là tập tất cả
các phụ thuộc hàm thu được.
(2): Loại các phụ thuộc hàm dư thừa trong G: Không tồn tại X A nào
trong F mà tập F - {X A} tương đương với F.
(3): Loại các thuộc tính dư thừa ở vế trái của các phụ thuộc hàm trong
G: Không tồn tại X A trong F mà Z ⊂ X để cho:
(F - {X A}) ∪ {Z A}
tương đương với F.
Ví dụ:
Cho lược đồ R = (A, B, C, D, E, G) và tập phụ thuộc hàm F gồm các phụ
thuộc hàm sau:
AB C D EG
CA
BE C
BC D
CG BD
ACD B
CE AG
Ta áp dụng thuật tốn tính phủ tối thiểu để tính phủ tối thiểu của F.
(1): Phân rã vế phải các phụ thuộc hàm trong F
Tập G thu được gồm các phụ thuộc hàm:
AB C BE C
CA
CG B
BC D CG D
ACD BCE A
DE
DG
CE G
(2): Loại các phụ thuộc hàm dư thừa và thuộc tính dư thừa
* Loại các phụ thuộc hàm dư thừa:
- Loại CG B, vì nó suy ra từ C A, ACD B và CG D bằng các
phép kéo theo như sau:
C A ⇒ CG AG
⇒ CG A
(qui tắc mở rộng hai vế)
(qui tắc phân rã)
CGA & CGD & CG C
⇒ CG ACD
CG ACD & ACD B ⇒ CG B
Như vậy ta loại ra khỏi G.
- Loại CE A, vì nó suy ra từ C A.
(qui tắc hợp)
(qui tắc bắc cầu)
Kết thúc bước này các phụ thuộc hàm còn lại như sau:
AB C BE C
CA
BC D CG D
ACD B
D E CE G
DG
*Loại thuộc tính dư thừa:
Trong phụ thuộc hàm ACD B, thuộc tính A dư thừa vì C A. Như
vậy ta thay ACD B bởi CD B.
Cuối cùng ta nhận được phủ tối thiểu:
AB C BE C
CA
BC D CG D
CD B
D E CE G
DG
6.Khố và giải thuật tìm khố
a. Khái niệm khố
khái niệm căn bản
Cho R={A1,A2,A3…An}
Cho K là tập con của R
Cho r là quan hệ trên R
t1,t2 là hai bộ bất kỳ ⊆
≠ t1 t2 thì
≠ t1[k] t2[k]
Khi đó K gọi là khoá nếu như
∃ ⊆K’
Là siêu khoá khi:
K
-khái niệm theo phụ thuộc hàm
cho Cho R={A1,A2,A3…An}
cho k⊆ R
cho F là f tập phụ thuộc hàm
Khi đó : k la khoá nếu
+kR
+ ∃ K’ ⊆ K
b. giải thuật tìm khố
*ứng dụng:cho phếp xác định được khoá của một quan hệ
dựa trên tập phụ thuộc hàm
*bài toán:
cho R là quan hệ
F là tập phụ thuộc hàm
yêu cấu: tìm khố của R dựa trên F
• Các bước:
b1: liệt kê các phần tử vế trái của phụ thuộc hàm F: L
liệt kê các phần tử vế phải của phụ thuộc hàm F:R1
b2: lấy R\R1=thuộc tính x // trong khố phả chứa x
L giao R1=y
b3:tính bao đóng x+:
x+=R thì kết luận x là khoá
nếu x≠+ R
chuyển sang bước 4
b4: ghép x với từng phần tử y
Sau đó thực hiên như bước 3
Ví dụ: Cho lược đồ R = (A, B, C, D, E, G) và tập phụ thuộc
hàm F gồm các phụ thuộc hàm sau:
AB C, D EG,C A,BE C,BC D,CG BD
ACD B,
Tìm khố?
Vd2: cho Q=(A,B,C,D,E,G,H,I)
F=(A BC,D EG,AE H,BD I)
a.
kiểm tra A I
b.
Tính bao đóng AE
c.
Tìm khoá
Ví dụ 3: cho R=(MNPQSU)
F={M NP,P NQ,MN S,NS UQ}
a.kiểm tra M Q?
b.tính bao đóng của P
c. Tìm khố
Ví dụ 4: cho R=(ABCDEG)
F={AB C,AC DE,C BG,D EG}
a.kiểm tra AB E
b.tính bao đóng của AC
c.tìm khố
Chương v: các dạng chuẩn của quan hệ
I.
1.
•
Giới thiệu
dạng chuẩn là gì?
đ/n :là những quy ước phụ thuộc những
ràng buộc áp dụng cho một quan hệ
•
Tránh do bộ phát sinh khi cập nhật dữ liệu
•
Các thao tác cập nhập : thêm,sửa, xố, tìm
kiếm, sắp xếp, lọc
Vd: cho 1 quan hệ sinh viên
sv{hoten,masv,diem,mamh}// dạng chuẩn hay
khơng chuẩn? vì sao?
2.các loại dạng chuẩn
gồm 4 dạng:
- 1NF: dạng chuẩn 1
- 2NF : dạng chuẩn 2
- 3NF: dạng chuẩn 3
- BCNF: dạng chuẩn 4
II. Quy ước dạng chuẩn
1.dạng chuẩn 1NF
*quy ước: giá trị của các thuộc tính trong mỗI bộ phải đầy
đủ
*chú ý: hầu hết tất cả các bảng dl đều ở dạng 1NF
Ví dụ
Hàng 1 Hàng 2
(mah,ngayban,slban) mah ngayban
slban
M1 5
10
m1 5
10
M2 9
20
m1 8
35
M3 9
100 5
25
M1 4
10
m3 5
12
M2 8
23
20
14
dạng 1NF ko phải ở dạng 1NF
(thiếu thông tin)
2. Dạng 2NF
• Quy ước
một quan hệ ở dạng 2NF khi:
- nó ở dạng 1NF
-các thuộc tính khơng khố phải phụ thuộc hàm đầy
đủ vào thuộc tính khố
• Chuẩn hố
nếu một quan hệ ở dạng 1NF nhưng lại ở dạng 2 thì
phải chuẩn hố như sau
-tách các thuộc tính phụ thuộc một phần vào khố
và thuộc tính khố vào bảng
- khố của bảng tách là thuộc tính khố
Ví dụ:
Cho 1 quan hệ R={ABCD}
F={AB C,B D}
- Hỏi R đã ở dạng chuẩn 2 NF hay chưa?
- tách bảng đã chuyển về 2NF
trả lời:
-Khoá: AB
R chưa phải ở dạng 2( vì D phụ thuộc 1 phần khố)
- tách R(ABCD)
R1(ABC), F={AB C}
Khoá AB
R2(BD),F={B D}
Khoá B
kết luận: từ R tách 2 quan hệ R1,R2 đều ở dạng 2
NF
3.Dạng chuẩn 3NF
*quy ước: một quan hệ ở dạng 3NF khi:
- ở dạng 2 NF
-khơng tồn tại các thuộc tính khơng khố phụ thuộc
hàm bắc cầu vào khố chính
• phụ thuộc hàm bắc cầu:
`
-chặt: A B,B C Thì A C và C không thể xác
định được A
- không chặt: A B,B C ,C A
*chuẩn hoá thành dạng 3NF
nếu 1 quan hệ ở dạng 2NF nhưng chưa ở dạng 3NF thì
phải tách
- tách các thuộc tính phụ thuộc hàm bắc cầu và
thuộc tính xác định hàm thành 1 bảng
- khoá của bảng tách là thuộc tính xác định hàm
Ví dụ: cho R=(ABCD)
F={AB C,C D)
Tách R(ABCD)
R1(CD);F={C D}//
Khoá là C
R2(ABC); F={AB C}
Khoá AB
Chú ý: phụ thuộc hoàn toàn 1NF 2NF
Phụ thuộc trực tiếp(không bắc cầu): 2NF 3NF