PHẦN I. CƠ SỞ DỮ LIỆU
CHƯƠNG 1: KHÁI QUÁT VỀ CƠ SỞ DỮ LIỆU
1.1. Khái niệm cơ bản về hệ quản trị cơ sở dữ liệu.
Từ trước đến nay trong giới tin học người ta thường nhắc về định nghĩa
cơ sở dữ liệu và hệ quản trị cơ sở dữ liệu là gì? Cơ sở dữ liệu bao gồm các
thông tin được lưu trữ trong máy theo một quy định nào đó. Phần chương
trình để có thể xử lý, thay đổi dữ liệu được gọi là hệ quan trị dữ liệu nó có
nhiệm vụ rất quan trọng là một bộ diễn dịch với ngôn ngữ bậc cao nhằm giúp
người sử dụng có thể dùng được hệ thống mà không cần quan tâm đến thuật
toán chi tiết hoặc biểu diễn dữ liệu trong máy.
1.2. Kiến trúc một hệ cơ sở dữ liệu
Một cơ sở dữ liệu được phân làm nhiều mức khác nhau. Ta có thể phân
thành một cơ sở dữ liệu đơn giản và một hệ phần mềm QTCSDL.
Phần CSDL vật lý: Là các tệp dữ liệu theo một cấu trúc nào đó được
lưu trên các thiết bị nhớ thứ cấp (như đĩa từ, băng từ…).
Phần CSDL mức khái niệm: Là một sự biểu diễn trừu tượng của CSDL
vật lý.
Các khung nhìn: Là cách nhìn, là quan niệm của từng người sử dụng
đối với CSDL mức khái niệm. Sự khác nhau giữa khung nhìn và mức khái
niệm thực chất là không lớn.
1
User 1
User 2
Khung nhìn 1
Khung nhìn 1
User n
Khung nhìn 1
CSDL mức
khái niệm
(logic)
CSDL mức
vật lý
Hình 1- Sơ đồ kiến trúc một hệ CSDL
Thể hiện (instance).
Khi CSDL đã được thiết kế, người ta thường quan tâm đến “bộ khung”
hay còn gọi là “mẫu” của CSDL. Dữ liệu hiện có trong CSDL gọi là thể hiện
của CSDL, khi dữ liệu thay đổi trong một chu kỳ thời gian nào đó thì “bộ
khung” của CSDL vẫn không thay đổi.
Lược đồ (Scheme).
Thường “bộ khung” nêu trên bao gồm một số danh mục, hoặc chỉ tiêu
hoặc một số kiểu của các thực thể trong CSDL. Giữa các thực thể có thể có
mối quan hệ nào đó với nhau. Người ta sử dụng thuật ngữ “lược đồ” để thay
thế cho khái niệm “bộ khung”.
Lược đồ khái niệm là bộ khung của CSDL khái niệm, còn lược đồ vật
lý dùng cho bộ khung của CSDL mức vật lý, khung nhìn được gọi là lược đồ
con.
Cơ sở dữ liệu vật lý.
Mức thấp nhất của kiến trúc một hệ thống CSDL vật lý, CSDL vật lý
có thể được xem là tổ chức ở nhiều mức khác nhau như bản ghi (record) và
tệp (file).
Lược đồ khái niệm và mô hình dữ liệu.
Lược đồ khái niệm là sự biểu diễn thế giới thực bằng một loạt ngông
ngữ phù hợp. QTCSDL cung cấp ngôn ngữ định nghĩa dữ liệu để xác định
lược đồ khái niệm. Đây là ngôn ngữ bậc cao có khả năng mô tả lược đồ dữ
liệu bằng cách biểu diễn của mô hình dữ liệu.
Hiện có nhiều loại mô hình dữ liệu. Ba loại mô hình cơ bản đang được
sử dụng là:
1. Mô hình phân cấp (hierachical model): Mô hình dữ liệu là một cây,
trong đó các nút biểu diễn các tập thực thể, giữa nút con và nút cha được liên
hệ theo một mối quan hệ xác định.
2. Mô hình dưới (Network model): Mô hình được biểu diễn là một đồ t
hị có hướng.
2
3. Mô hình quan hệ (Relational model): Mô hình này dựa trên cơ sở
khái niệm lý thuyết tập hợp các quan hệ, tức là tập các k – bộ với k cố định.
Tính độc lập dữ liệu.
Tính độc lập dữ liệu là tính bất biến các hệ ứng dụng với các thay đổi
trong cấu trúc truy nhập và chiến lược truy nhập.
3
CHƯƠNG 2: MÔ HÌNH CƠ SỞ DỮ LIỆU QUAN HỆ.
2.1. Các khái niệm cơ bản.
Khái niệm toán học của mô hình quan hệ là quan hệ hiểu theo nghĩa lý t
huyết tập hợp: Là tập con của tích Đề – Các của các miền. Miền (domain) là
một tập các giá trị.
Ví dụ: Tập các số nguyên, tập các xâu ký tự tạo thành tên người trong
tiếng anh có độ dài không quá 30 ký tự, tập hai só {0,1} là một miền…
Gọi D
1
, D
2
…, D
n
là n miền. Tích Đề – Các của n miền là D
1
x D
2
x…x
D
n
là tập tất cả n – bộ (n – tuples v
1
, v
2
…, v
n
) sao cho v
i
∈D
i
với i = 1…n, v.v
Ví dụ: n = 2, D
1
= {0,1}, D
2
= {a, b, c} khi đó.
D
1
x D
2
= {(0,a), (0,b), (0,c), (1,a),(1,b), (1,c)}.
Quan hệ: Quan hệ là một tập hợp con của tích Đề – Các của một hoặc
nhiều miền. Như vậy mối quan hệ có thể là vô hạn. Người ta giả thiết rằng,
mối quan hệ là một tập hữu hạn.
Mỗi hàng của quan hệ gọi là bộ. Quan hệ là tập con của tích Đề – Các
D
1
x D
2
x…xD
n
gọi là quan hệ n – ngôi. Khi đó mỗi bộ của quan hệ có n
thành phần (n cột). Các cột của quan hệ gọi là thuộc tính (attributes). Vậy
người ta định nghĩa quan hệ như sau:
Định nghĩa 2.1:
Gọi R = {A
1
,…A
n
} là một tập hữu hạn các thuộc tính, mỗi thuộc tính A
i
với i=1 có miền giá trị tương ứng là dom (A
I
). Quan hệ trên tập thuộc tính
R=(A
1
,…A
n
) là tập con của tích Đề Các.
r
⊆
dom (A
1
)x…xdom (A
2
).
Khi đó ký hiệu là rđ hoặc r(A
1
,…,A
n
).
Ví dụ: Quan hệ NHAN _ VIEN bao gồm các thuộc tính HO_TEN,
NAM_SINH, NOI_LAM_VIEC và LUONG là quan hệ 4 ngôi.
NHAN_VIEN (Ho_ten Nam_sinh Noi_lam_viec Luong)
T
1
Le Van A 1960 Vien CNTT 425
T
2
Hoang Thi B 1970 Truong DHBK 390
T
3
Le Van son 1945 Vien CNTT 425
4
T
1
= (Le Van A, 1960, Vien CNTT, 425) là một quan hệ NHAN_ VIEN
2.2. Khoá
Khoá (key) của một quan hệ r trên tập thuộc tính R = (A
1
,…,A
n
) là tập
con K ⊆ {A
1
,..,A
n
} thoả mãn các tính chất sau đây:
Với hai bộ {t
1
,t
2
∈ r đều tồn tại một thuộc tính A∈K sao cho T
1
(A) ≠ t
2
(A).
Nói một cách khác, không tồn tại hai bộ mà có giá trị bằng nhau trên
mọi thuộc tính của K. Điều kiện này có thể viết t
1
(K) ≠ t
2
(K). Do đó mỗi bộ
giá trị của K là xác định duy nhất.
Trong lược đồ quan hệ có thể có rất nhiều khoá. Việc tìm tất cả các
khoá của lược đồ quan hệ là rất khó khăn.
Để có thể định nghĩa khoá ta cần lưu ý rằng, nếu K
’
là khoá của quan hệ
r (A
1
,…, A
n
) vì K
’
⊆ K⊆ R, thì K cũng là khoá của r, nghĩa là bất kỳ t
1
, t
2
∈r
từ t
1
(K
’
) ≠ t
2
(K
’
) luôn có t
1
(K) ≠ t
2
(K).
Định nghĩa 2.2:
Khoá của quan hệ r trên tập thuôc tính R= { A
1
,…,A
n
}là tập con K⊆R
sao cho bất kỳ bộ khác nhau t
1
,t
2
∈r luôn thoả t
1
(K) ≠ t
2
(K) bất kỳ tập con
thực sự K
’
⊂ K nào đó đều không có tính đó. Tập K là siêu khoá của quan hệ
r nếu K là khoá của quan hệ r.
Ví dụ: Quan hệ HANG _HOA.
HANG HOA (MSMH TEN _ HANG SO _
LUONG)
10101 Sắt phi 6 1000
10102 Sắt phi 8 2000
20001 Xi măng 1000
Trong đó mã số mặt hàng (MSMH) là khoá. Mỗi giá trị MSMH đều
xác định duy nhất một mặt hàng trong quan hệ HANG _ HOA.
5
2.3. Các phép tính trên CSDL quan hệ
a/ Phép chèn
Phép chen thêm một bộ vào quan hệ R= {A
1
,…,A
n
} có dạng r=r ∪t
INSERT (r; A
1
= d
1
, A
2
= d
2
,…,A
n
= d
n
)
Trong đó A
i
với i =1,…, n là tên các thuộc tính d
1
∈ dom (A
i
) là các giá
trị thuộc miền giá trị tương ứng của thuộc tính A
1
.
Ví dụ: Thêm một bộ t
4
= Vũ Văn Tần, 1960, trường ĐHBK, 425) vào
quan hệ NHAN _ VIEN.
INSERT(NHAN _ VIEN; HO_TEN = Vu Tan, NAM_ SINH = 1960,
NOI _ LAM – VIEC = truong ĐHBK, LUONG = 425)
Nếu xem thứ tự các trường là cố định, khi đó có thể biểu diễn phép
chèn dưới dạng tường minh như sau:
INSERT (r; d
1
, d
2
,…, d
n
)
Mục đích của phép chèn là thêm một bộ phận vào một quan hệ nhất
định kết quả của phép tính có thể gây nên một số sai sót với những lý do sau
đây:
1. Bộ mới được thêm vào là không phù hợp với lược đồ quan hệ cho
trước.
2. Một số giá trị của một số thuộc tính nằm ngoài miền giá trị của thuộc
tính đó.
3. Giá trị khoá của bộ mới có thể là giá trị đã cho trong quan hệ đang
lưu trữ.
Do vậy, tuỳ từng hệ cụ thể có những cách khắc phục riêng.
b/ Phép loại bỏ (del)
Phép loại bỏ (del) là phép xoá một bộ ra khỏi quan hệ cho trước. Phép
loại bỏ có dạng như sau:
r = r – t
DEL (r;A
1
= d
1
, A
2
= d
2
,…,A
n
) hoặc DEL (r,d
1
, d
2
,…d
n
)
Ví dụ: Cần loại bỏ bộ t
1
khỏi quan hệ NHAN _ VIEN
6
DEL (NHAN _VIEN; Le Van A, 1960, Vien CNTT, 425)
Tuy nhiên không phải lúc nào phép loại bỏ cũng cần đầy đủ thông tin
về cả bộ cần loại. Nếu có giá trị về bộ đó tại các thuộc tính khoá K= {B
1
,B
2
,
…, B
1
} khi đó phép loại bỏ chỉ cần viết:
DEL (r; B
1
= e
1
, B
2
= e
2
,…, B
1
= e
1
)
Ví dụ: Cần loại bỏ sắt phi 6 ra khỏi quan hệ HANG _ HOA, khi đó chỉ
cần viết:
DEL (HANG _ HOA; MSSMH = 10101).
c/ Phép thay đổi (CH)
Gọi tập (C
1
,…C
p
) ⊆ {A1,..An} là tập các thuộc tính mà tại đó các giá
trị của bộ cần thay đổi, khi đó phép thay đổi có dạng:
R = r \ t U t
’
CH(r;A
1
d
1
…,A
2
= D
2
,…,A
n
= D
n
; C
1
= e
1
, C
2
= e
2
,…,C
p
= e
p
).
Nếu K = {B
1
,…B
m
} là khoá của quan hệ khi đó cần viết:
CH(r; B
1
= d
1
, B
2
= d
2
,…,B
m
= d
m
, C
1
= e
1
, C
2
= e
2
,…,C
p
= e
p
).
Ví dụ: Cần thay đổi số lượng của sắt phi 8 trong quan hệ HANG_HOA
còn 150 tấn. Khi đó phép thay đổi có dạng:
CH (HANG _ HOA; MSMH = 10102; SOLUONg = 150).
Phép thay đổi là phép tính thuận lợi, hay dùng. Cũng có thể không dùng
phép thay đổi mà dùng tổ hợp của phép loại bỏ và phép chèn một bộ mới. Do
vậy những sai sót của phép thay đổi cũng sẽ xảy ra tương tự như phép chèn và
phép loại bỏ.
7
CHƯƠNG 3: LÝ THUYẾT CƠ SỞ DỮ LIỆU QUAN HỆ
3.1. Phụ thuộc hàm.
Khái niệm về phụ thuộc hàm (trong một quan hệ) là một quan niệm có
tầm quan trọng hết sức đối với việc thiết kế mô hình dữ liệu. Năm 1970 EF
Codd đã mô tả phụ thuộc hàm trong mô hình dữ liệu quan hệ, nhằm giải quyết
việc phân rã không tổn thất thông tin. Sau đây là khái niệm một cách hình
thức.
Định nghĩa 3.1:
Cho R(U) là một lược đồ quan hệ với U = {A
1
,…A
n
} là tập thuộc tính
X và Y là tập con của U.
Nói rằng X
→
Y (X xác định hàm Y hay Y phụ thuộc hàm vào X) nếu r
là một quan hệ xác định trên R (U) sao cho bất kỳ hai bộ t
1
, t
2
∈
r mà t
1
[X] =
t
2
[X] thì t
1
[Y] = t
2
[Y].
Phụ thuộc hàm ký hiệu là FD.
Chú ý: Phụ thuộc hàm chỉ xét các phụ thuộc hàm thoả mãn cho mọi
quan hệ trên lược đồ tương ứng của nó. Không thể xem xét một phụ thuộc
hàm thoả một quan hệ r đặc biệt (ví dụ quan hệ rỗng) của lược đồ R rồi sau đó
quy nạp rằng phụ thuộc đó là thoả trên R.
Ví dụ: Trong quan hệ S của hãng cung ứng, một trong số các thuộc tính
SNAME, STATUS, CITY đều phụ thuộc vào thuộc tính S#. Mỗi giá trị S#
tồn tại vừa đúng một giá trị tương ứng đối với từng thuộc tính SNAME,
STATUS và CITY. Khi đó có thể viết:
S# →SNAME, S# →STATUS, S# →CITY.
3.1.1. Hệ tiên đề cho phụ thuộc hàm.
Gọi F là tập tất cả các phụ thuộc hàm đối với lược đồ quan hệ R (U) và
X →Y là một phụ thuộc hàm, X, Y ⊆U. Nói rằng X →Y được suy diễn logic
từ F nếu mối quan hệ r trên R (U) đều thoả các phụ thuộc hàm của F thì cũng
thoả X →Y.
8
Chẳng hạn F = {A →B, B→C] thì A →C suy ra từ F. Gọi F
+
là bao
đóng của F, tức là tất cả các phụ thuộc hàm được suy diễn logic từ F. Nếu F =
F
+
thì F là họ đầy đủ của các phụ thuộc hàm.
Để có thể xác định khoá của một lược đồ quan hệ và các suy diễn logic
giữa các phụ thuộc hàm cần thiết phải tính được F
+
từ F. Do đó đòi hỏi phải
có các hệ tiền đề. Tập các quy tắc của hệ tiền đề được Armstrong đưa ra và
được gọi là hệ tiên đề Armstrong.
Gọi R(U) là lược đồ quan hệ U = {A
1
…,A
n
} là tập các thuộc tính X, Y,
Z, W ⊆R. Hệ tiên đề Armstrong bao gồm:
1. Phản xạ: Nếu Y ⊆ X thì X→Y.
2. Tăng trưởng: Nếu Z ⊆U và X→Y thì XZ →YZ trong đó ký hiệu XZ
là hợp của hai tập X và Y thay cho ký hiệu X ∪Y.
3. Bắc cầu: Nếu X →Y và Y →Z thì X →Z.
* Bổ đề 3.1.
Hệ tiên đề Armstrong là đúng. Có nghĩa 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 diễn từ F nhờ
hệ tiên đề Armstrong thì X→Y là đúng trên quan hệ r.
* Bổ đề 3.2.
a. Luật hợp: Nếu X →Y và X →Z thì X →YZ.
b. Luật tựa bắc cầu: Nếu X →Y và WY→Z thì XW →ZX.
c. Luật tách: Nếu X →Y và X ⊆Y thì X →Z.
3.1.2. Sơ đồ quan hệ.
Chúng ta gọi là sơ đồ quan hệ (SDQH)s là một cặp <R,F> , ở đây R là
tập hợp các thuộc tính và F là tập các phụ thuộc hàm trên R. Ký hiệu F
+
là tập
tất cả các phụ thuộc hàm dẫn xuất từ F bằng việc áp dụng các quy tắc trong hệ
tiên đề Armstrong.
Đặt A
+
= {a: A→{a}∈F
+
. A
+
được gọi là bao đóng của A trên s.
Có thể thấy rằng A →B∈F
+
nếu và chỉ nếu B ⊆A
+
.
9
Tương tự chúng ta có thể đặt A
r
+
= {a: A→{a}}. A
r
+
được gọi là bao
đóng của A trên r. Theo định nghĩa trên chúng ta thấy nếu s=<R,F> là sơ đồ
quan hệ thì có quan hệ r trên R sao cho F
r
= F
+
. Quan hệ r như vậy chúng ta
gọi là quan hệ Armstrong của s.
Thuật toán tính bao đóng.
Việc tính toán bao đóng F
+
của tập các phụ thuộc hàm trong trường
hợp tổng quát là rất khó khăn và tốn kém thời gian bởi vì các tập phụ thuộc
hàm thuộc F
+
rất lớn cho dù F có thể là nhỏ. Chẳng hạn F = {A →B
1
, A→B
2
,
…A→B
n
}. F
+
khi đó cũng được tính cả những phụ thuộc hàm A →B với Y
⊆{B
1
,…,B
n
}. Như vậy sẽ có 2
n
tập con Y. Nhưng việc tính X
+
, bao đóng của
tập thuộc tính X lại không khó. Theo bổ đề 3.3 việc kiểm tra (X →Y)∈ F
+
không khó hơn việc tính X
+
. Tính bao đóng X
+
sẽ được thể hiện qua bao đóng
sau:
Thuật toán: Tính bao đóng của tập các thuộc tính đối với một tập các
phụ thuộc hàm.
Vào: Tập U hữu hạn các thuộc tính, Tập các phụ thuộc hàm F trên U và
X ⊆ U
Ra: X
+
, bao đóng của X đối với F
Phương pháp: Tính liên tiếp các thuộc tính X
0
,…, X
n
theo quy tắc
1. X
0
= X
2. X
i+1
= X
1
∪ A sao cho ∃ (Y→ Z) ∈F, A∈Z,Y∈X
i
Vì rằng X= X
0
⊆…⊆U, U là hữu hạn cho nên sẽ tồn tại một chỉ số i nào
đó mà X
i
= X
i+1
khi đó X
+
= X
i
3.1.3. Phủ của tập các phụ thuộc hàm
Gọi F là G là tập các phụ thuộc hàm. Nói rằng F và G là tương đương
nếu F
+
= G
+
. Nếu Fvà G là tương đương đôi khi còn nói F phủ G ( và G phủ
F). Nếu tồn tại một phụ thuộc hàm Y → Z mà thuộc F mà không thuộc G
+
thì
chắc chắn F
+
≠ G
+
.
10
Nếu mỗi phụ thuộc hàm F cũng thuộc G
+
thì mỗi phụ thuộc hàm V →
W thuộc F
+
cũng thuộc G
+
Để kiểm tra mỗi phụ thuộc G là phụ thuộc F
+
quá trình làm hoàn toàn
tương tự. Do đó F và G là tương đương khi và chỉ khi mỗi phụ thuộc hàm F là
thuộc G
+
và mỗi phụ thuộc G là thuộc F
+
.
Bổ đề 3.4
Mỗi các phụ thuộc hàm F đều được phủ bằng tập các phụ thuộc hàm G
mà vế phải các phụ thuộc hàm đó không quá một thuộc tính
Định lý 3.2
Mỗi tập phụ thuộc hàm F đều tương đương với một tập F
+
tối thiểu.
3.2. Phép tách các lược đồ quan hệ
Phép tách lược đồ quan hệ R{A
1
,…,A
n
} là việc thay thế lược đồ quan
hệ R bằng các tập lược đồ {R
1
,…,R
k
}, trong đó R
i
⊆R,i=1,…, k và R= R
1
∪
R
2
∪…∪R
k
.
Ở đây không đòi hỏi các lược đồ R
i
phải là phân biệt. Mục tiêu của
phép tách chủ yếu là loại bỏ các dị thường dữ liệu gây ra.
Ví dụ: Cho lược đồ quan hệ giươì cung cấp.
S(SMANE,AĐ,PRO,PRICE)
Và giả sử có các phụ thuộc hàm: SNAME → ADD; SNAME, PRO→
PRICE
Lược đồ S có thể được thay bằng hai lược đồ khác.
S
1
(SNAME,ADD) và S
2
(SNAME,PRO, PRICE)
Kết nối không mất mát thông tin.
Nếu R là lược đồ quan hệ được tách thành các lược đồ con R
1
,R
2
,…, R
k
và D là tập các phụ thuộc dữ liệu, nói rằng phép tách là - kết nối không mất
mát thông tin đối với D nếu với mỗi quan hệ r trên R thoả D:
R = ΠR
1
(r)* ΠR
2
(r)*… *ΠR
k
(r) tức là r được tạo nên từ phép kết nối
tự nhiên của các hình chiếu của nó trên các R
i
,i = 1,…, K
Sau đây là một số tính chất của kết nối không mất mát thông tin.
11
Tập các lược đồ:
P= (R
1
,…,R
k
) được thay thế cho lược đồ R. Gọi m
p
là ánh xạ xác định
nhờ m
p
(r) = * ΠR
i
(r), có nghĩa là m
p
(r) là kết nối của các phép chiếu của r
trên các lược đồ con trong p. Điều kiện để kết nối không mất mát thông tin
đối với D được biểu diễn như sau:
Với mọi r thoả D, r = m
p
(r)
Bổ đề 3.5
Gọi R là lược đồ quan hệ p = (R
1
,…, R
k
) là phép tách của R,r là quan hệ
trên R và r
i
= Π (r) thì:
a. r ⊆ m
p
(r)
b. Nếu s=m
p
(r) thì Π R
i
(s) r
i
c. m
p
(m
p
r))= m
p
(r)
Trong trường hợp tách một lược đồ thành hai lược đồ con ta sẽ có định
lý sau:
Định lý:
Nếu = (R
1
,R
2
) là một phép tách của R và F là tập phụ thuộc hàm thì là
tách không mất mát thông tin đối với F khi và chỉ khi R
1
∩R
2
→ R
1
→ R
2
hoặc R
1
∩ R
2
→R
2
→R
1
3.3. Chuẩn hoá lược đồ quan hệ
Chuẩn hoá là quan hệ trong đó mỗi miền của 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 và do đó giá trị trong quan
hệ cũng là nguyên tố.
Chuẩn hoá là quan hệ trong đó mỗi miền của 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 và do đó mỗi giá trị trong
quan hệ cũng là nguyên tố.
Quan hệ có chứa các miền giá trị là không nguyên tố gọi là quan hệ
chuẩn hoá. Mỗi quan hệ chuẩn hoá có thể thành một hoặc nhiều quan hệ
chuẩn hoá khác và không làm mất mát thông tin.
12
Ví dụ:
Trước Chưa chuẩn hoá
S
#
PRO
P
#
Q
TY
1 1
00
1
2
00
2
3
00
3
2 1
00
4
2
00
2
4
00
5
3 5
00
1
Hình – 2: Quan hệ không chuẩn hoá
Sau Đã chuẩn hoá
S
#
P
#
Q
TY
1 1 1
13
00
1 2
00
2
1 3
00
1
2 1
00
4
2 2
00
2
3 4
00
5
3 5
00
1
Hình – 3: Quan hệ chuẩn hoá
Trước khi mô tả chi tiết cac dạng chuẩn hoá cần thiết đưa ra một khái
niệm sau đây.
Cho một lược đồ quan hệ R trên tập thuộc tính U= {A
1
,…,}. Thuộc tính
A∈ U được gọi là thuộc tính khoá nếu A là thành phụ thuộc môt khoá nào đó
của R, ngược lại A được gọi là thuộc tính không khoá.
Định nghĩa:
Cho lược đồ quan hệ R(U) trên tập thuộc tính U= {A
1
,…, A
k
). X và Y
là hai tập thuộc tính khác nhau X ⊆ U và Y ⊆ U.
Y là phụ thuộc hàm đầy đủ vào X nếu Y là phụ thuộc hàm vào X những
không phụ vào bất kỳ một tập họp con thực sự nào của X.
Trong lý thuyết ban đầu Codd đưa ra có ba dạng chuẩn của quan hệ:
Dạng không chuẩn hoá
Dạng chuẩn thứ nhất (First Normal Form, viết tắt là 1NF)
14
Dạng chuẩn thứ hai (2NF)
Dạng chuẩn thứ ba (3NF)
3.3.1. Dạng chuẩn 1NF (First Normal Form)
Dạng chuẩn 1NF chỉ áp dụng cho file dữ liệu chứ không áp dụng cho
sơ đồ quan hệ hay nói cách khác chỉ liên quan đến dữ liệu chứ không liên
quan đến cấu trúc. Cụ thể là:
Định nghĩa 1NF:
Một lược đồ quan hệ R được gọi là dạng chuẩm một (1NF) nếu và chỉ
nếu toàn bộ các miền có mặt trong R đều chỉ chứa các giá trị nguyên tố.
Định nghĩa này cho bất kỳ quan hệ chuẩn hoá nào cũng ở 1NF.
3.3.2. Dạng chuẩn thứ 2 (2NF)
Định nghĩa 2NF:
Lược đồ quan hệ R ở dạng chuẩn thứ hai nếu nó ở dạng chuẩn thứ nhất
và nếu mỗi thuộc tính không khoá của R là phụ thuộc hàm đầy đủ vào khoá
chính.
Như vậy dạng chuẩn hai đòi hỏi một lược đồ quan hệ R trước tiên phải
là dạng chuẩn 1NF và mọi thuộc tính thứ cấp đều phụ thuộc hàm hoàn toàn
vào bất kỳ một khoá tối tiểu nào, như vậy tính chất của dạng chuẩn hai phụ
thuộc vào 3 yếu tố;
1. Khoá tối tiểu
2. thuộc tính thứ cấp
3. Phụ thuộc hàm hoàn toàn
3.3.3. Dạng chuẩn thứ 3 (3NF)
Định nghĩa phụ thuộc bắc cầu
Để trình bày 3NF của các quan hệ, ở đây chúng ta đưa thêm vào khái
niệm về phụ thuộc bắc cầu
15
Cho một lược đồ quan hệ R(U); X là một tập con các thuộc tính X
⊆
U,A là một thuộc tính thuộc U. A được gọi là phụ thuộc bắc cầu X trên R
nếu tồn tại một tập con Y của R sao cho X
→
Y, Y
→
A
nhưngY
→
X (không xác định hàm) với A
∉
XY
Chúng ta có thể hiện tính bắc cầu qua sơ đồ:
Qua sơ đồ có thể thấy rằng A có thể xác định hàm Y. Trong trường
hợp A → Y thì được gọi là tính bắc cầu chặt.
Định nghĩa dạng chuẩn thứ 3(3NF)
Lược đồ quan hệ R là ở dạng chuẩn thứ 3(3NF) nếu nó là 2 NF và mỗi
thuộc tính không khoá của R là không phụ thuộc hàm bắc cầu vào khoá chính.
Ví dụ: Cho lược đồ quan hệ R(SAIP) với các phụ thuộc hàm SI →P và
S→ A.
R là không ở 3 NF, thậm chí không ở 2NF. Giả sử X=SI, Y.A là thuộc
tính không khoá vì chỉ có một khoá là SI. Vì X → Y là Y → A, nhưng lại có
Y → X tức là S→ Y là không thoả. Chú ý rằng trong trường hợp này
X→Y và Y→ A không chỉ thoả trên R mà là nhưng phụ thuộc đã cho.
Điều đó là đủ để nói rằng X → A suy ra từ tập các phụ thuộc hàm.
Như vậy A là phụ thuộc vào khoá bắc cầu vào khoá chính SI
16
X
Y
A