Tải bản đầy đủ (.doc) (40 trang)

đồ án tốt nghiệp quản lý bán dược phẩm (thuốc)

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 (249.57 KB, 40 trang )

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
4
T
3
Le Van son 1945 Vien CNTT 425
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
5
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ệ
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:
6
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
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
11
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 đồ:
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ố.
12
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.
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á
13
S
#
P
#
Q
TY
1 1
00
1
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ệ:
14
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)
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ố;
15
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
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.
16
X
Y
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
Ví dụ: Cho lược đồ quan hệ R (CSZ) với các phụ thuộc hàm Cs→Z,
Z→C.
Trong lược đồ mọi thuộc tính đều là thuộc tính khoá. Do vậy R là ở 3
NF.
Ví dụ: cho lược đồ R (SIDM) và các phụ thuộc hàm SI → D, SD→ M.
Ở đây chỉ có một khoá chính là SI. Ro rằng R ở 2 Nf nhưng không
phải ở 3NF.
3.3.4. Dạng Chuẩn Boye- Codd
Định nghĩa

Lược đồ quan hệ R với tập các phụ thuộc hàm được gọi là ở dạng
chuẩn Boey – Codd (Boey – Codd Normal Form, BCNF) nếu X→A thoả trên
R,A

X thì X là môt khoá của R.
Ví dụ: Cho lược đồ quan hệ R (CRS) với các phụ hàm CS→Z,Z→C.
Nhìn vào ví dụ trên, chúng ta nhận thấy rõ ràng R không là ở BCNF mà
là ở 3NF vì rằng Z→ C nhưng không phải là khoá của R.
Từ ví dụ này chúng ta thấy rằng một lược đồ quan hệ có thể có 3Nf
nhưng không là BCNF. Do đó mỗi lược đồ ở BCNF là 3NF. Để khảng định
một điều đó chúng ta có các định lý sau:
Định lý
Nếu một lược đồ quan hệ R với tập phụ thuộc hàm F là ở BCNF thì nó
là ở 3NF.
3.4. Ngôn ngữ con dữ liệu DSL – ANPHA
17
Ngôn ngữ con dữ liệu SDL – ALPHA do E.F. Codd đè xướng và được
sử dụng khá điển hình trong các hệ QTCSDL như INGRES, DAMAS, SQL
Để xác định ngôn ngữ, chúng ta xem rằng người sử dụng luôn cần một
vùng làm việc, vùng nay tạo thành miền liên lạc giữa người sử dụng và
CSDL.
Trong ngôn ngữ DSL- ALPHA người sử dụng được gả thiết là có
chiếm một số làm việc tuỳ ý.
3.4.1 Biểu thức ALPHA
Định nghĩa
Biểu thức alpha đươc ký hiệu là
{<T1,t2,…, Tn> P},
Trong đó Ti,i= 1 n là tên các thuộc tính và P là tân từ.
Biểu thức nhằm xác định quan hệ của những n – bộ dạng (v1,…,vn), vi
 dom (Ti),i=1, ,n sao cho bộ đó có thoả tân từ P

Danh sách < T1,…, Tn > gọi là danh sách đích, P còn gọi là biểu thức
đánh giá.
Các phép tính dùng trong biểu thức alpha gồm các phép so sánh
{=,>,>=,<,<=,≠} và các phép của đại số Boolean là and(và), or (hoặc) và not
(không); và các dấu (,) để mô tả thứ tự thực hiện phép tính .
Để hiểu rõ các câu lệch trong ngôn ngữ alpha chúng ta ví dụ một câu
lệnh tìm kiếm
GET W(NHAN_VIEN. HO_TEN, NHAN _ VIEN. LUONG): NHAN_
VIEN LUONG >500
Câu lệnh DSL – ALPHA tương đương với biểu thức alpha
{ < NHAN VIEN. HO_ TEN, NHAN _ VIEN. LUONG>: NHAN _
VIEN>500}
Trong đó W là vùng làm việc, GET là tên lệnh.
Ví dụ về ba mối quan hệ S,PS và P.
18
S(S# SNAME STATUS CITY) SP(S# P# QTY)
S1 Smith 20 London S1 P1 300
S1 P2
200
S2 Jones 10 Paris S1 P3 400
S2 P1
300
S3 Blacke 45 Paris S2 P2 400
S3 P2
200
P(P# Pname Color Weitght City
P1 nut reg 12 London
P2 bolt green 17 Paris
P3 screw blue 17 Rom
P4 screw red 14 London

Hình vẽ: CSDL gồm ba quan hệ S, PS và P
3.4.1. Phép tìm kiếm
A. Phép tìm kiếm đơn giản.
Tìm số hiệu mặt hàng đã cung ứng.
GET W(SP. P#)
19
Kết quả
W(P#)
P1
P2
P3
Trong ví dụ trên có 6 giá trị nhưng trùng lặp nên chỉ có ba giá trị phân
biệt được lưu trong vùng làm việc.
B.Phép tìm kiếm theo điều kiện.
Tìm số hiệu những hãng ở Paris có tình trạng lớn hơn 20.
GETW (S.S#): S.CITY =’ PARIS’∧S. STATUS>20.
Kết quả: W (S#)
S3
Trong ví dụ trước đó cũng như các ví dụ sau này dấu “:” có nghĩa “sao
cho”, biểu thức đi sau dấu “:” là biểu thức điều kiện hoặc tân từ; danh sách
đích chỉ rõ quan hệ S được chiếu trên các thuộc tính S#. Kết quả chứa trong
vùng W là một quan hệ chỉ còn một thuộc tính.
Chú ý: Biểu thức điều kiện (tân từ) là một biểu thức có độ phức tạp bất
kỳ được viết theo nhưng quy tắc thông thường với các phép tính so sánh =,
≠,>, >=,<,<= và các phép tính của đại số Boolean là ∧ (và), v(hoặc) và -
(không).
C. Phép tìm kiếm có sắp xếp.
Tìm số hiệu và tình trạng những hãng ở Paris và sắp xếp theo thứ tự
giảm dần của trạng thái.
GET W (S.S#, S.STATUS) : S.CITY= ‘Paris’ DOWTO STATUS.

Kết quả:
20
W (S# STATUS)
S3 30
S2 10
Bình thường kết quả của GET là một quan hệ có thể chưa có thứ tự.
Khi người sử dụng cần sắp xếp kết quả theo một các nào đó thì cần chỉ và
đưa vào vùng làm việc theo cách sau:
UP tên thuộc tính (tăng dần)
hoặc
DOWN tên thuộc tính (giảm dần),
Trong đó ưu tiên được tính từ trái qua phải.
D. Phép tìm kiếm bộ phận.
Tìm số hiệu của một hãng bất kỳ ở Paris.
GET W (1) (S.S#): S.CITY = ‘Paris’
Kết quả:
W (S#) hoặc W (S#)

S2 S3
Số “1” trong ký hiệu W (1) biểu thị một bộ phận. Có nghĩa là đưa ra
đúng một bộ thoả điều kiện tìm kiếm, đó là bộ đầu tiên gặp được.
E. Phép tìm kiếm có sử dụng biến vùng.
Tìm số hiệu của những hãng có cung cấp mặt hàng P1. Chúng ta có hai
cách giải quyết.
Cách 1:
GETW (SP. S#): SP.S# = ‘P2’.
Cách 2:
RANGE SP X
21
GET W (X.S#): X. P# = ‘P2’.

Chúng ta nhận thấy hai cách thể hiện là hoàn toàn tương đương nhau.
Trong câu lệnh thứ hai, X là một biến vùng. Các giá trị cho phép của này là
các bộ của SP. Nói chung biến vùng thường cho viết tắt cho nhanh gọn.
F. Phép tìm kiếm có sử dụng lượng từ tồn tại (∃)
Tìm tên những hàng nào cung ứng mặt hàng P2
RANGE SP X
GETW(S.SNAME): ∃X(X.S# = S.S# ∧X.P#=

P2

)
Kết quả :
W (SNAME)
Smith
Jones
Blacke
Ký hiệu ∃ là lượng tử tồn tại. Có thể hình câu lệch GET như sau:
Xét lần lượt từng giá trị SNAME xem thoả mãn biểu thức điều kiện
không như vậy giá trị đầu là Smith, S# tương ứng là P1. Có tồn tại một x
(nghĩa là một bộ phận SP) với S# = ‘S’ và P# = ‘P2’ không?
Nếu câu trả lời có thì ‘Smith là giá trị cần tìm. Công việc tiếp tục cho
đến hết.
G. Phép tìm kiếm có sử dụng nhiều lượng tử tồn tại (∃).
Tìm tên những hãng nào cung ứng ít nhất là một mặt hàng mầu đỏ.
RANGEP PX
RANGE SP SPX
GET W(S.SNAME): ∃SPX (SPX. S# = S.S∧∃ PX (PX.P# = SPX.
P#∧PX. COLOR =

RED


))
Hoặc biểu thức tương đương:
∃PX(PX.COLOR =

RED

∧∃ SPX (SPX.P# = PX.P# ∧SP.S# = S.S#))
H. Phép tìm kiếm với lượng tử “ với mọi” (∀)
22
Tìm tên những hàng không cung cấp mặt hàng P1
RANGE SP SPX
GET W(S.SNAME) :∀ SPX (SPX.S# ≠ S.S# v SPX.P#

P1

)
Kết quả:
W(S.SNAME)
Blacke
Ký hiệu ∀ là lượng tử “với mọi”. T ân từ có nghĩa với mọi bộ SP
hoặc là số số hiệu hàng không phải là số hiệu mà ta đang quan tâm hoặch là
số hiệu mặt hàng không phải là P1.
Có thể tìm kiếm với danh sách đích gồm nhiều thục tính hoặc với các
tân từ gồm cả hai kiểu lương tử “tồn tại” và “với mọi”.
3.4.2 Các phép cập nhật dữ liệu
a) Phép sửa đổi đơn giản
Đổi màu của P2 thành màu vàng.
HOLD W(P.P#.COLOR): P.P#=


P

W.COLOR =

YELOW (ngôn ngữ chữ)
UPDATE W.
Trước hết dùng câu lệnh HOLD để tìm những quan hệ cần thiết từ quan
hệ đưa vào vùng làm việc W, sau đó đưa về chỗ cũ của quan hệ bằng quan hệ
UPDATE, nếu sau lệnh HOLD mà không UPDATE thì có thể kết thúc bằng
lệnh RELESAE W.
Chú ý: trong lệnh HOLD phải chứa khoá chính
b) Phép sửa đổi nhiều quan hệ.
Giả sử rằng trong quan hệ P có chứa thêm cột QOH chứa số lượng hiện
có Hãng S1 cung ứng nhiều hơn trước 10 mặt hàng P1; tăng thêm 10 cho số
lượng hiện có cho P1 và số lượng được S1 cung ứng.
HOLD W(P) : P.P# =

p1

W.QOH = W.QOH+10
23
UPDATE W(SP): SP.S# =

S1

∧SP.P# =

P1

W.QTY = W.QTY +10

UPDATE W.
Điểm khác nhau chủ yếu giữa HOLD và gét là ở chỗ câu lệnh HOLD
hạn chế một quan hệ duy nhất trong danh sách đích. Dãy HOLD – UPDATE
là bắt buộc. Lệnh UPDATE làm thay đổi tính nhất quán của CSDL. Tình
trạng nay sẽ kéo dài cho tới câu lệnh UPDATE sau được thực hiện.
c) Phép bổ sung đơn giản:
Bổ xung mặt hàng P4 có tên là TAYLOR, màu GREY trọng lượng là 2,
ở thành phố BERLIN vào quan hệ P.
W.P# =

p4

W.PNAME =

TAYLOR

W.COLOR =

GREY

W.WEIGHT = 2
W.CITY =

BERLIN


PUT W(p)
Chúng ta nên chú ý vùng làm việc W phải được cấu trúc trước đúng
khuôn dạng
d) Phép loại bỏ

Loại bỏ hãng S1.
HOLD W(S): S.S# =

S1

DELETE W.
Có thể xem DELETE là dạng đặc biệt của UPDATE. Chú ý rằng câu
lệnh là không loại bỏ tương ứng SP có chứa P1, Nếu cần loại bỏ phải viết
tiếp.
HOLD W(SP): SP.S# =

S1


DELETEW
c) Phép loại bỏ vô điều kiện
24
Loại bỏ tất cả các mặt hàng
P bây giờ là rỗng.
Cần chú ý các phép cập nhật dữ liệu chỉ được thao tác với một quan hệ
và không thao tác đồng thời trên nhiều quan hệ.
25

×