LUẬN VĂN:Quản lý việc bán thuốc cho cửa hàng tân dược

3,699
569
86
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 đó số mặt hàng (MSMH) khoá. Mỗi giá trị MSMH đều xác định duy nhất
một mặt hàng trong quan hệ HANG_HOA.
2.3. Các phép tính trên CSDL quan hệ
2.3.1 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
I
dom(A
i
) là các giá trị thuộc miền giá trị
tương ứng của thuộc tính A
i
.
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 Van 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 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:
Bộ mới được thêm vào là không phù hợp với lược đồ quan hệ cho trước.
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 đó.
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.
2.3.2. Phép loại bỏ (del)
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. 2.3. Các phép tính trên CSDL quan hệ 2.3.1 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 I  dom(A i ) là các giá trị thuộc miền giá trị tương ứng của thuộc tính A i . 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 Van 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: Bộ mới được thêm vào là không phù hợp với lược đồ quan hệ cho trước. 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 đó. 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. 2.3.2. 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ỏ
dạng như sau:
r = r - t
DEL (r; A
1
=d
1
, A
2
=d
2
,...,A
n
=d
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
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
I
} khi đó phép loại bỏ chỉ
cần viết:
DEL( r; B
1
=e
1
, B
2
=e
2
,...,B
I
=e
I
)
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; MSMH = 10101).
2.3.3. 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 đó chỉ 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 rất tính thuận lợi, hay dùng. Cũng có thể không dùng phép thay đổi
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ỏ
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 =d 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 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 I } khi đó phép loại bỏ chỉ cần viết: DEL( r; B 1 =e 1 , B 2 =e 2 ,...,B I =e I ) 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; MSMH = 10101). 2.3.3. 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 đó chỉ 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 rất 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ỏ
Chương 3
Lý thuyết thiết kế 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 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 đã tả phụ
thuộc hàm trong hình dữ liệu quan hệ, nhằm giải quyết việc phân 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 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
Nếu Y phụ thuộc hàm vào Y ( X-> Y) thì với mỗi giá trị của X tương ứng với mỗi một
giá trị duy nhất của Y . Hay nói cách khác , Tồn tại một hàm (ánh xạ) từ tập hợp những
giá trị của X đến tập hợp những giá trị của Y
Chương 3 Lý thuyết thiết kế 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 Nếu Y phụ thuộc hàm vào Y ( X-> Y) thì với mỗi giá trị của X tương ứng với mỗi một giá trị duy nhất của Y . Hay nói cách khác , Tồn tại một hàm (ánh xạ) từ tập hợp những giá trị của X đến tập hợp những giá trị của Y
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.
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 hàm 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
Ví dụ : Trong một hoá đơn bao gồm các thuộc tính “ số hóa đơn “ , “tên khách hàng “, mã
sản phẩm “, “ tổng giá trị sản phẩm “..
ta thấy “số hoá đơn “-> “ tên khách hàng “
“ số hoá đơn “, ‘ mã sản phẩm” -> “ tổng giá trỉ sản phẩm “;
3.1.1. Hệ tiên đề cho phụ thuộc hàm
Gọi F tập tất cả các phụ thuộc hàm đối với lược đồ quan hệ R(U) XY
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ện
r trên R(U) đều thoả các phụ thuộc hàm của F thì cũng thoả XY.
Chẳng hạn F={AB, B C] thì A C suy ra từ F. Gọi F
+
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.
Để 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:
Phản xạ: Nếu Y X thì XY
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 hàm 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 Ví dụ : Trong một hoá đơn bao gồm các thuộc tính “ số hóa đơn “ , “tên khách hàng “, mã sản phẩm “, “ tổng giá trị sản phẩm “.. ta thấy “số hoá đơn “-> “ tên khách hàng “ “ số hoá đơn “, ‘ mã sản phẩm” -> “ tổng giá trỉ sản phẩm “; 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ện r trên R(U) đều thoả các phụ thuộc hàm của F thì cũng thoả XY. 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: Phản xạ: Nếu Y X thì XY
Tăng trưởng: Nếu ZU và XY thì XZYZ trong đó ký hiệu XZ là hợp của hai tập X
và Y thay cho ký hiệu X Y
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 XY là một phụ thuộc hàm được suy diễn từ F nhờ hệ tiên đề Armstrong thì XY
là đúng trên quan hệ r
*Bổ đề 3.2
Luật hợp: Nếu XY và XZ thì XYZ
Luật tựa bắc cầu:Nếu XY và WYZ thì XWZ
Luật tách: Nếu XY và XY thì XZ
3.1.2: Sơ đồ quan hệ
Chúng ta gọi sơ đồ quan hệ (SDQH) s là một cặp <R,F>, ở đây R là tậ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 ABF
+
nếu và chỉ nếu B A
+
Tương tự chúng ta thể đặt A
r
+
={a: A{a}}. A
r
+
được gọi 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 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={AB
1
, AB
2
,...,AB
n
}. F
+
khi đó cũng được tính cả những
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 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 Luật hợp: Nếu XY và XZ thì XYZ Luật tựa bắc cầu:Nếu XY và WYZ thì XWZ 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 sơ đồ quan hệ (SDQH) s là một cặp <R,F>, ở đây R là tậ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 + 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 AB 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 (XY) 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
X
0
=X
X
i+1
=X
I
A sao cho (YZ)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 và 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 F và G 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 YZ mà thuộc F mà không thuộc G
+
thì chắc chắn F
+
G
+
.
Nếu mỗi phụ thuộc m F cũng thuộc G
+
thì mỗi phụ thuộc hàm VW 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 tiểu.
3.2. Phép tách các lược đồ quan hệ
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 X 0 =X X i+1 =X I 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 và 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 F và 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 + . 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 tiể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
loại bỏ các dị thường dữ liệu gây ra.
Ví dụ: Cho lược đồ quan hệ ngừơi 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 thế 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ược đồ quan hệ được tách thành các lược đồ con R
1
, R
2
,...,R
K
D tập các
phụ thuộc dữ liệu, nói rằng phép tách là tách – 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.
Tập các lược đồ:
= (R
1
,..,R
k
) được thay thế cho lược đồ R. Gọi m
là ánh xạ xác định nhờ m
(r)=* R
i
(r),
có nghĩa m
(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 . Đ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
(r)
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ệ ngừơi 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 thế 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à tách – 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. Tập các lược đồ: = (R 1 ,..,R k ) được thay thế cho lược đồ R. Gọi m  là ánh xạ xác định nhờ m  (r)=* R i (r), có nghĩa là m  (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 . Đ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  (r)
Bổ đề 3.5
Gọi R lược đồ quan hệ = (R
1
,...,R
k
) phép tách của R, r là quan hệ trên R và r
i
=R
i
(r) thì :
r m
(r)
Nếu s= m
(r) thì R
i
(s) = r
i
m
(m
(r)) = m
(r)
Trong trường hợp tách hai lược đồ con ta sẽ có định lý sau:
Định lý:
Nếu =(R
1
,R
2
) một phép tách của R F tập phụ thuộc hàm thì 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 không phân nhỏ được nữa 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ột 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.
Vi dụ
Trước :
S
PRO
P
QTY
1 100 1
Bổ đề 3.5 Gọi R là lược đồ quan hệ = (R 1 ,...,R k ) là phép tách của R, r là quan hệ trên R và r i =R i (r) thì : r  m  (r) Nếu s= m  (r) thì R i (s) = r i m  (m  (r)) = m  (r) Trong trường hợp tách 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 đó 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ột 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. Vi dụ Trước : S  PRO P  QTY 1 100 1
2
3
200
300
100
200
400
500
2
3
4
2
5
1
Hình 2: Quan hệ không chuẩn hoá
2 3 200 300 100 200 400 500 2 3 4 2 5 1 Hình 2: Quan hệ không chuẩn hoá
Sau
S
P
QTY
1
1
1
2
2
3
3
100
200
300
100
200
400
500
1
2
1
4
2
5
1
Hình 3: Quan hệ chuẩn hoá
Trước khi mô tả chi tiết các dạng chuẩn hoá cần thiết đưa ra một khái niệm sau đây.
Cho một ợc đồ quan hệ R trên tập thuộc tính U={A
1
,..,A
n
}. Thuộc tính AU
đượ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 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)
Dạng chuẩn thứ hai (2NF)
Sau S  P  QTY 1 1 1 2 2 3 3 100 200 300 100 200 400 500 1 2 1 4 2 5 1 Hình 3: Quan hệ chuẩn hoá Trước khi mô tả chi tiết các 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 ,..,A n }. 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)  Dạng chuẩn thứ hai (2NF)