LUẬN VĂN:Quản lý việc bán thuốc cho cửa hàng tân dược
3,730
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 đó 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ỏ 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 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.
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à XY 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ả XY.
Chẳng hạn F={AB, 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ì XY
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 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={AB
1
, AB
2
,...,AB
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 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 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 hà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é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à 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á
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 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 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)