text:
- 180 trang
- Lượt xem: 971
- Download: 376
Giáo trình cơ sở dữ liệu - PGS.TS. Vũ Đức Thi
Chia sẻ: khuongthan0081
Trong bài giảng này chúng tôi cung cấp cho sinh viên những kiến thức cơ bản nhất về cơ sở dữ liệu. Mục tiêu chính là với số kiến thức cơ bản này sinh viên có thể ứng dụng các kiến thức về cơ sở dữ liệu vào thực tiễn và tiếp tục nghiên cứu học tập được các môn tin học khác.
Thể loại:Công Nghệ Thông Tin » Cơ sở dữ liệu
Chủ đề liên quan:
Nội dung Text: Giáo trình cơ sở dữ liệu - PGS.TS. Vũ Đức Thi
Giáo trình cơ sở dữ liệu
Bài Giảng
Hà Nội
5
Lời nói đầu
Cơ sở dữ liệu là một lĩnh vực phát triển mạnh
của công nghệ thông tin. Cùng với sự phát triển công
nghệ thông tin ở nước ta, việc sử dụng các kiến thức
về cơ sở dữ liệu vào thực tiễn ngày càng trở lên cần
thiết.
Trong bài giảng này chúng tôi cung cấp cho sinh
viên những kiến thức cơ bản nhất về cơ sở dữ liệu.
Mục tiêu chính là với số kiến thức cơ bản này sinh
viên có thể ứng dụng các kiến thức về cơ sở dữ
liệu vào thực tiễn và tiếp tục nghiên cứu học tập
được các môn tin học khác.
Giáo trình gồm 4 chương chính (Ngoài chương
mở đầu và tài liệu tham khảo ).
Chương 2 cung cấp cho sinh viên những kiến
thức cơ bản về cơ sở dữ liệu, mà cụ thể là về cơ sở
dữ liệu quan hệ. Trong chương này, chúng tôi trình
bày những khái niệm cơ bản nhất của cơ sở dữ liệu
quan hệ, cũng như những thuật toán thiết kế chúng.
Chương 3 trình bày các kiến thức liên quan đến
các dạng chuẩn.
Chương 4 giới thiệu các phép toán xử lí các bảng
( quan hệ ).
Chương 5 và chương 6 là các chương trình bày
các ứng dụng của cơ sở dữ liệu vào thực tiễn.
6
Trong chương 5 chúng tôi nêu một số các ứng dụng
của cơ sở dữ liệu trong các hệ quản trị cơ sở dữ liệu
hiện có. Trong đó có những vấn đề liên quan đến các
thực thể, các khoá, các dạng chuẩn trong các hệ
quản trị cơ sở dữ liệu.
Chương 6 trình bày một số các công đoạn xây
dựng các dự án thiết kế tổng thể các hệ thống thông
tin.
Trong chương 7, chúng tôi trình bày một số các
kiến thúc cơ bản về thuật toán và độ phức tạp thuật
toán. Những kiến thức này giúp cho bạn đọc tiếp thu
các kiến thức của các chương trên.
Giáo trình này phục vụ cho các sinh viên ngành
công nghệ thông tin hoặc các cán bộ đang công tác
trong lĩnh vực tin học muốn bổ xung kiến thức cho
mình.
Tại tất cả các trường đại học có giảng dạy về
tin học, cơ sở dữ liệu là môn học chính cho các sinh
viên khoa công nghệ thông tin. Vì thế giáo trình này
có thể làm tư liệu học tập cho sinh viên hệ cử nhân
tin học, cử nhân cao đẳng tin học, kĩ sư tin học, hoặc
có thể làm tài liệu tham khảo cho các học viên cao
học, nghiên cứu sinh và các giảng viên tin học.
PGS.TS. Vũ Đức Thi
7
Chương mở đầu
Cơ sở dữ liệu (CSDL) là một trong những lĩnh
vực được tập trung nghiên cứu và phát triển của
công nghệ thông tin, nhằm giải quyết các bài toán
quản lí, tìm kiếm thông tin trong những hệ thống lớn,
đa dạng, phức tạp cho nhiều người sử dụng trên máy
tính điện tử. Cùng với sự ứng dụng mạnh mẽ công
nghệ thông tin vào đời sống xã hội, kinh tế, quốc
phòng ...Việc nghiên cứu CSDL đã và đang phát triển
ngày càng phong phú và hoàn thiện. Từ những năm
70, mô hình dữ liệu quan hệ do E.F. Codd đưa ra với
cấu trúc hoàn chỉnh đã tạo lên cơ sở toán học cho các
vấn đề nghiên cứu lí thuyết về CSDL. Với ưu điểm
về tính cấu trúc đơn giản và khả năng hình thức hoá
phong phú, CSDL quan hệ dễ dàng mô phỏng các hệ
thống thông tin đa dạng trong thưc tiễn, tạo điều
kiện lưu trữ thông tin tiết kiệm, có tính độc lập dữ
liệu cao, dễ sửa đổi, bổ sung cũng như khai thác dữ
liệu. Mặt khác, việc khai thác và áp dụng các kĩ thuật
tổ chức và sử dụng bộ nhớ cho phép việc cài đặt các
CSDL quan hệ đưa lại hiệu quả cao và làm cho
CSDL quan hệ chiếm ưu thế trên thị trường.
Nhiều hệ quản trị CSDL đã được xây dựng và
đưa vào sử dụng rộng rãi như : DBASE, FOXBASE,
8
FOXPRO, PARADOX, ORACLE, MEGA, IBM DB2,
SQL for WINDOWS NT...
Mô hình dữ liệu quan hệ đặt trọng điểm hàng
đầu không phải là khai thác các tiềm năng của máy
mà ở sự mô tả trực quan dữ liệu theo quan điểm của
người dùng, cung cấp một mô hình dữ liệu đơn giản,
trong sáng, chặt chẽ, dễ hiểu và tạo khả năng tự
động hoá thiết kế CSDL quan hệ. Có thể nói lí
thuyết thiết kế và cài đặt CSDL, nhất là mô hình dữ
liệu quan hệ đã phát triển ở mức độ cao và đạt được
những kết quả sâu sắc. Hàng loạt vấn đề đã được
nghiên cứu giải quyết như:
- Lí thuyết thiết kế CSDL, các phương pháp tách
và tổng hợp các lược đồ quan hệ theo tiêu chuẩn
không tổn thất thông tin hay bảo toàn tính nhất thể
của các ràng buộc trên dữ liệu .
- Các loại ràng buộc dữ liệu, cấu trúc và các tính
chất của chúng, ngữ nghĩa và khả năng áp dụng phụ
thuộc dữ liệu ví dụ như phụ thuộc hàm, phụ thuộc
đa trị, phụ thuộc kết nối, phụ thuộc lôgic...
- Các vấn đề tối ưu hoá: ở mức vật lí trong việc
tổ chức quản lí các tệp; ở mức đường truy nhập với
các tệp chỉ số hay các danh sách sắp xếp; ở mức
lôgic trên cơ sở rút gọn các biểu thức biểu diễn các
câu hỏi, ...vv
....................
9
Trong Giáo trình này sẽ trình bày một số kiến
thức cơ bản nhất về CSDL bao gồm các kiến thức
liên quan đến phụ thuộc hàm, khoá và dạng chuẩn,
các thuật toán nhận dạng và thiết kế chúng, việc xây
dựng các khái niệm này trong các hệ CSDL lớn như
MEGA, ORACLE...., việc nghiên cứu và áp dụng
chúng để xây dựng các dự án thiết kế tổng thể các
hệ thống CSDL hiện nay.
10
Chương 2
Các kiến thức cơ bản
về cơ sở dữ liệu
2.1. Khát quát về mô hình dữ liệu
Thông thường đối với việc thiết kế và xây dựng
các hệ thông tin quản lí, chúng ta cần xử lí các file dữ
liệu. Những file này bao gồm nhiều bản ghi (record)
có cùng một cấu trúc xác định (loại bản ghi). Đồng
thời, mỗi bản ghi được phân chia thành các trường
dữ liệu (fild). Một cơ sở dữ liệu là một hệ thống
các file dữ liệu, mỗi file này có cấu trúc bản ghi khác
nhau, nhưng về mặt nội dung có quan hệ với nhau.
Một hệ quản trị cơ sở dữ liệu là một hệ thống quản
lí và điều hành các file dữ liệu. Nói chung một hệ
quản trị cơ sở dữ liệu thường có những đặc tính
sau :
- Có tính độc lập với các công cụ lưu trữ,
- Có tính độc lập với các chương trình phần
mềm của người sử dụng (có nghĩa là các ngôn ngữ
lập trình khác nhau có thể được dùng trong hệ này),
- Có khả năng tại một thời điểm truy nhập vào
nhiều nơi trong hệ này ,
- Có khả năng khai thác tốt tiềm năng của máy,
11
- Người dùng với kiến thức tối thiểu cúng có
thể xử dụng được hệ này,
- Bảo đảm an toàn dữ liệu và bảo mật dữ liệu,
- Thuận lợi và mềm dẻo trong việc bổ xung,
loại bỏ, thay đổi dữ liệu
- Giảm bớt sự dư thừa dữ liệu trong lưu trữ,
Trong quá trình thiết kế và xây dựng các hệ
quản trị cơ sở dữ liệu, người ta tiến hành xây dựng
các mô hình dữ liệu. Mô hình dữ liệu phải thể hiện
được các mối quan hệ bản chất của các dữ liệu mà
các dữ liệu này phản ánh các mối quan hệ và các
thực thể trong thế giới hiện thực. Có thể thấy mô
hình dữ liệu phản ánh khía cạnh cấu trúc lôgic mà
không đi vào khía cạnh vật lí của các cơ sở dữ liệu.
Khi xây dựng các mô hình dữ liệu cần phân biệt các
thành phần cơ bản sau :
- Thực thể (Entity): Đó là đối tượng có trong
thực tế mà chúng ta cần mô tả các đặc trưng của nó.
- Thuộc tính: Đó là các dữ liệu thể hiện các đặc
trưng của thực thể.
- Ràng buộc: Đó là các mối quan hệ lôgic của các
thực thể.
Tuy vậy, ba thành phần cơ bản trên được thể
hiện ở hai mức :
12
- Mức loại dữ liệu (Type): Đó là sự khái quát hoá
các ràng buộc, các thuộc tính, các thực thể cụ thể.
- Mức thể hiện: Đó là một ràng buộc cụ thể,
hoặc là các giá trị thuộc tính, hoặc là một thực thể
cụ thể
Thông thường chúng ta sẽ nhận được các loại
dữ liệu (Type) của các đối tượng cần khảo sát trong
quá trình phân tích các thể hiện cụ thể của chúng.
yếu tố quan trọng nhất của cấu trúc cơ sở dữ
liệu là dạng cấu trúc dữ liệu mà trong đó các mối
quan hệ giữa các dữ liệu lưu trữ được mô tả. Có
thể thấy rằng loại dữ liệu nền tảng của việc mô tả
các mối quan hệ là loại bản ghi (Record type). Bởi
vì các ràng buộc giữa các loại bản ghi tạo ra bản
chất cấu trúc của cơ sở dữ liệu. Vì thế, dựa trên
việc xác định các ràng buộc giữa các loại dữ lịêu
được cho như thế nào mà chúng ta phân loại các mô
hình dữ liệu. Có nghĩa là từ cách nhìn của người xử
dụng việc mô tả các dữ liệu và các ràng buộc giữa
các dữ liệu được thực hiện như thế nào. Trên thực
tế chúng ta phân biệt hai loại mô hình dữ liệu:
- Mô hình dữ liệu mạng: Trong đó chúng ta thể
hiện trực tiếp các ràng buộc tuỳ ý giữa các loại bản
ghi,
13
- Mô hình dữ liệu quan hệ: Trong mô hình này
các ràng buộc trên được thể hiện qua các quan hệ
(bảng).
Mô hình dữ liệu quan hệ là một công cụ rất tiện
lợi để mô tả cấu trúc lôgic của các cơ sở dữ liệu.
Như vậy, ở mức lôgic mô hình này bao gồm các file
được biểu diễn dưới dạng các bảng. Do đó đơn vị
của CSDL quan hệ là một bảng (Một quan hệ được
thể hiện trong Định nghĩa 1), trong đó các dòng của
bảng là các bản ghi dữ liệu cụ thể (Đó là các thể
hiện cụ thể của loại bản ghi), còn tên các cột là các
thuộc tính.
Theo cách nhìn của người xử dụng thì một cơ
sở dữ liệu quan hệ là một tập hợp các bảng biến đổi
theo thời gian.
2.2. Các khái niệm cơ bản và hệ tiên đề
Armstrong:
Trong mục này, chúng ta trình bày những khái
niệm cơ bản nhất về mô hình dữ liệu quan hệ của
E.F. Codd. Những khái niệm cơ bản này gồm các
khái niệm về quan hệ, thuộc tính, phụ thuộc hàm, hệ
tiên đề Armstrong, khóa, dạng chuẩn....
14
Những khái niệm này đóng vai trò rất quan trọng
trong mô hình dữ liệu quan hệ. Chúng được áp dụng
nhiều trong việc thiết kế các hệ quản trị cơ sở dữ
liệu hiện nay.
Những khái niệm này có thể tìm thấy trong
[1,2,3,4,7,9,10,15,16,17].
Định nghĩa 1. (Quan hệ)
Cho R = {a1, ... , an} là một tập hữu hạn và không
rỗng các thuộc tính. Mỗi thuộc tính ai có miền giá trị
là Dai. Khi đó r là một tập các bộ {h1, ..., hm} được
gọi là một quan hệ trên R với hj (j = 1,...m ) là một
hàm :
hj : R → ∪ Dai
ai ∈ R
sao cho: hj ( ai) ∈ Dai
Chúng ta có thể biểu diễn quan hệ r thành bảng
sau:
a1 a2 an
h1 h1(a1) h1(a2) .............. h1(an)
h2 h2(a1) h2(a2) .............. h2(an)
. ...................................................
15
.
.
hm hm(a1) hm(a2) .............. hm(an)
Ví dụ: Trong một cơ quan, chúng ta quản lý nhân
sự theo biểu gồm các thuộc tính sau:
Nhân sự
Số Họ tên Giới Nă Trình Lương
TT tính m độ đào
sinh tạo
001 Nguyễn Văn Na 197 Đại 300000
A m 0 học
002 Nguyễn Nữ 197 Trung 210000
Kim Anh 1 cấp
003 Trần Văn Na 196 Đại 500000
ánh m 9 học
004 Trần Bình Na 196 PTS 450000
m 5
........................................................................................
........................................
120 Trần Thị Nữ 196 PTS 455000
yến 7
Chúng ta quy định kích thước cho các thuộc tính
(các trường) như sau:
16
Tên thuộc tính Kiểu Kích thước
STT Kí tự 3
HOTEN Ký tự 30
GIOITINH Ký tự 3
NAMSINH Số 4
TRINHDO Ký tự 10
LUONG Số 7
Có nghĩa là qui định cho thuộc tính STT là các
dãy gồm 3 kí tự, thuộc tính HOTEN là các dãy gồm
30 kí tự, ....., cho thuộc tính LUONG là các số có
nhiều nhất 7 chữ số.
Như vậy chúng ta có tập thuộc tính
NHANSU = {STT, HOTEN, GIOITINH,
NAMSINH, TRINHDO, LUONG}
ở đây DSTT là tập các dãy gồm 3 kí tự,...., DLUONG
là tập các số có nhiều nhất 7 chữ số.
Khi đó chúng ta có quan hệ r = {h1, h2,..., h120}, ở
đây ví dụ như đối với bản ghi thứ 2 (dòng thứ 2)
chúng ta có:
h2 (STT) = 002, h2 (HOTEN) = Nguyễn Kim ánh
h2 (GIOITINH) = Nữ, h2 (NAMSINH) = 1971
h2 (TRINHDO) = Trung cấp, h2 (LUONG) =
240000
17
Định nghĩa 2. ( Phụ thuộc hàm )
1. Cho R = {a1,...,an} là tập các thuộc tính, r =
{h1,...,hm} là một quan hệ trên R, và A, B ⊆ R.
2. Khi đó chúng ta nói A xác định hàm cho B hay
f
B phụ thuộc hàm vào A trong r (Kí pháp A r > B)
nếu
(∀ hi,hj ∈ r)(( ∀ a ∈ A)(hi(a)= hj(a)) ⇒ (∀ b ∈ B)
(hi(b)=hj(b)))
f
Đặt Fr = { (A,B): A,B ⊆ R, A r > B }. Lúc đó Fr
được gọi là họ đầy đủ các phụ thuộc hàm của r.
Khái niệm phụ thuộc hàm miêu tả một loại ràng
buộc (phụ thuộc dữ liệu) xảy ra tự nhiên nhất giữa
các tập thuộc tính. Dù hiện nay đã có nhiều loại phụ
thuộc dữ liệu được nghiên cứu, xong về cơ bản các
hệ quản trị cơ sở dữ liệu lớn sử dụng phụ thuộc
hàm.
Định nghĩa 3.
Phụ thuộc hàm (PTH) trên tập các thuộc tính R là
một dãy kí tự có dạng A → B, ở đây A,B ⊆ R. Chúng
18
f
ta nói PTH A → B đúng trong quan hệ r if A r >
B. Chúng ta cũng nói rằng r thoả mãn
A → B.
Dễ thấy, Fr là tập tất cả các PTH đúng trong r.
Chú ý: Trong giáo trình này chúng ta có thể viết
f
(A,B) hoặc A → B thay cho A r > B mà không bị
lẫn về mặt kí pháp.
Định nghĩa 4. (Hệ tiên đề của Armstrong )
Giả sử R là tập các thuộc tính và kí pháp P(R) là
tập các tập con của R. Cho Y ⊆ P(R) x P(R). Chúng
ta nói Y là một họ f trên R nếu đối với mọi A, B, C,
D⊆ R
(1) (A,A) ∈ Y,
(2) (A,B) ∈ Y, (B,C) ∈ Y ⇒ (A,C) ∈ Y,
(3) (A,B) ∈ Y, A ⊆ C, D ⊆ B → (C,D) ∈ Y,
(4) (A,B) ∈ Y, (C,D) ∈ Y ⇒ (A ∪ C, B ∪ D) ∈
Y.
Rõ ràng, Fr là một họ f trên R.
Trong [l] A. A. Armstrong đã chứng minh một
kết quả rất quan trọng như sau : Nếu Y là một họ f
19
bất kì thì tồn tại một quan hệ r trên R sao cho Fr =
Y.
Kết quả này cùng với định nghĩa của phụ thuộc
hàm chứng tỏ rằng hệ tiên đề Armstrong là đúng
đắn và đầy đủ.
Mặt khác, hệ tiên đề này cho ta những đặc
trưng của họ các phụ thuộc hàm, mà các đặc trưng
này không phụ thuộc vào các quan hệ (bảng) cụ thể .
Nhờ có hệ tiên đề này các công cụ của toán học
đựơc áp dụng để nghiên cứu làm sáng tỏ cấu trúc
lôgic của mô hình dữ liệu quan hệ. Đặc biệt chúng ta
xử dụng công cụ thuật toán để thiết kế các công
đoạn xây dựng các hệ quản trị cơ sở dữ liệu.
Chúng ta đưa ra ví dụ chỉ ra có nhiều quan hệ
khác nhau xong các họ đầy đủ các phụ thuộc hàm
của chúng lại như nhau.
Cho r1 và r2 là các quan hệ sau:
a b a b
0 0 0 0
r1 = 1 1 r2 = 1 1
2 1 2 1
3 2 3 1
Có thể thấy r1 và r2 khác nhau nhưng Fr1 = Fr2.
20
Như vậy, tương quan giữa lớp các quan hệ với
lớp các họ phụ thuộc hàm có thể được thể hiện
bằng hình vẽ sau.
Lớp các quan hệ Lớp
các phụ thuộc hàm
Định nghĩa 5.
Một hàm L : P(R) → P(R) được gọi là một hàm
đóng trên R nếu với mọi A, B ∈ P( R ) thì :
- A ⊆ L(A),
- Nếu A ⊆ B thì L(A) ⊆ L(B),
- L(L(A)) = L(A).
21
Địnhlí 6.
Nếu F là một họ f và chúng ta đặt
LF = {a : a ∈ R và (A, {a}) ∈ F}
thì LF là một hàm đóng. Ngược lại, nếu L là một
hàm đóng thì tồn tại duy nhất một họ f F trên R sao
cho L = LF , ở đây
F = { (A,B) : A, B ⊆ R , B ⊆ L(A) }.
Như vậy, chúng ta thấy có một tương ứng 1-1
giữa lớp các hàm đóng và lớp các họ f . Chúng ta có
hình vẽ sau
Lớp các họ phụ thuộc hàm
Lớp các hàm đóng
22
Định lí 6 chỉ ra rằng để nghiên cứu phân tích các
đặc trưng của họ các phụ thuộc hàm chúng ta có thể
dùng công cụ hàm đóng.
Sau này trong mục 2.3 chúng tôi sẽ trình bày
nhiều công cụ nữa để nghiên cứu cấu trúc lôgic của
họ các phụ thuộc hàm.
Định nghĩa 7. (Sơ đồ quan hệ)
Chúng ta gọi sơ đồ quan hệ (SĐQH) s là một
cặp , ở đâ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í pháp F+ là tập tất cả
các PTH được dẫn xuất từ F bằng việc áp dụng các
qui tắc trong Định nghĩa 4.
Đặ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+.
f
Tương tự chúng ta đặt A r
+
= {a : A r > {a} }.
Ar+ được gọi là bao đóng của A trên r.
Theo [1] chúng ta có thể thấy nếu s = là
sơ đồ quan hệ thì có quan hệ r trên R sao cho Fr=F+.
Quan hệ r như vậy chúng ta gọi là quan hệ
Armstrong của s.
23
Trong trường hợp này hiển nhiên các PTH của s
đúng trong r.
Định nghĩa 8. (Khoá)
Giả sử r là một quan hệ , s = là một sơ
đồ quan hệ, Y là một họ f trên R, và A ⊆ R. Khi
đó A là một khoá của r (tương ứng là một khoá của
f
s, một khoá của Y) nếu A r > R (A → R ∈ F+,
(A,R) ∈ Y). Chúng ta gọi A là một khoá tối tiểu
của r (tương ứng của s, của Y) nếu
- A là một khoá của r (s, Y),
- Bất kì một tập con thực sự của A không là
khoá của r (s, Y).
Chúng ta kí pháp Kr, (Ks, Ky) tương ứng là tập tất
cả các khoá tối tiểu của r (s, Y).
Chúng ta gọi K ( ở đây K là một tập con của
P(R) ) là một hệ Sperner trên R nếu với mọi A,B ∈ K
kéo theo A ⊆ B).
Có thể thấy Kr,Ks, Ky là các hệ Sperner trên R.
Định nghĩa 9.
Giả sử K là một hệ Sperner trên R. Chúng ta
định nghĩa tập các phản khoá của K, kí pháp là K-1,
như sau:
24
K-1 = {A ⊂ R : (B ∈ K) ⇒ (B ⊆ A) and (A ⊂ C)
⇒ (∃ B ∈ K)(B ⊆ C)}
Dễ thấy K-1 cũng là một hệ Sperner trên R.
Tập phản khoá đóng vai trò rất quan trọng trong
quá trình nghiên cứu cấu trúc lôgic của các họ phụ
thuộc hàm, khóa, dạng chuẩn, quan hệ Armstrong,
đặc biệt đối với các bài toán tổ hợp trong mô hình
dữ liệu quan hệ.
Trong [5] người ta đã nêu ra rằng nếu s =
là một sơ đồ quan hệ trên R, thì Ks là hệ Sperner trên
R. Ngược lại, nếu K là một hệ Sperner bất kì trên R,
thì tồn tại một sơ đồ quan hệ s sao cho Ks = K.
Ví dụ: Cho K = { A1,.....,Am } là một hệ Sperner.
Khi đó s = , ở đây F = { A1 →R, ... , Am → R}
là sơ đồ quan hệ mà Ks = K.
Nhận xét :
- Có thể cho ví dụ chỉ ra rằng có nhiều sơ đồ
quan hệ khác nhau nhưng tập các khoá tối tiểu của
chúng giống nhau. Có nghĩa là tồn tại
s1 = , ..., st = ( 2 ≤ t ) mà F1+
≠ .... ≠ Ft+ , nhưng
Ks1 = ... = Kst .
Tất nhiên, nếu F1 = F2 thì Ks1 = Ks2.
Mối quan hệ giữa lớp họ phụ thuộc hàm và lớp
các hệ Sperner thể hiện qua hình vẽ sau
25
•
•
•
Lớp các họ phụ thuộc hàm
Lớp các hệ Sperner
- Nếu K đóng vai trò là một tập các khoá tối tiểu
của một sơ đồ quan hệ nào đó, thì theo định nghĩa K-1
là tập tất cả các tập không phải khoá lớn nhất.
Trong Giáo trình này, chúng ta qui ước rằng nếu
hệ Sperner đóng vai trò là tập các khoá tối tiểu (tập
các phản khoá), thì hệ này không rỗng (không chứa R
).
Định nghĩa 10.
Cho I ⊆ P(R). Khi đó I được gọi là nửa dàn giao
nếu
R ∈ I và A,B ∈ I ⇒ A ∩ B ∈ I .
Giả sử M ⊆ P(R). Đặt M+ = {∩ M' : M' ⊆ M}.
Khi đó chúng ta nói rằng M là một hệ sinh của I
nếu M+ = I.
Chú ý rằng R ∈ M+ nhưng R không là một phần
tử của M, bởi vì chúng ta theo thông lệ cho R là giao
của một tập rỗng các tập con của M.
26
Kí pháp NI = {A ∈ I : A ≠ ∩ {A' ∈ I : A ⊂ A'}}.
Trong [4] người ta đã chỉ ra rằng NI là hệ sinh
nhỏ nhất và duy nhất của I. Có nghĩa là đối với mọi
hệ sinh N' của I chúng ta có NI ⊆ N'.
Định nghĩa 11.
Cho r là một quan hệ trên R. Chúng ta đặt Er =
{Eij : 1 ≤ i ≤ j ≤ |r|}, ở đây Eij = {a ∈ R: hi(a) = hj(a)}.
Er được gọi là hệ bằng nhau của r.
Đặt Mr = { A ∈ P(R) : ∃ Eij = A, ∃ Epq: A ⊂ Epq}.
Khi đó chúng ta gọi Mr là hệ bằng nhau cực đại của
r.
Sau này ta sẽ thấy hệ bằng nhau và hệ bằng
nhau cực đại được dùng rất nhiều trong các thuật
toán thiết kế.
Mối quan hệ giữa lớp các quan hệ và lớp các
phụ thuộc hàm đóng một vai trò quan trọng trong quá
trình nghiên cứu cấu trúc lôgic của lớp các phụ thuộc
hàm.
Định nghĩa 12.
Cho trước r là một quan hệ r và F là một họ f
trên R. Chúng ta nói rằng r là thể hiện họ F nếu Fr =
F. Chúng ta cũng có thể nói r là một quan hệ
Armstrong của F.
27
Bây giờ, chúng ta đưa ra một điều kiện cần và
đủ để một quan hệ là thể hiện một họ f cho trước.
Định lý 13.
Giả sử r = {h1 ,..., hm } là một quan hệ, F là một
họ f trên R thì r thể hiện F nếu và chỉ nếu với mọi
A⊆ R
∩ E i j nếu tồn tại E i j ∈ Er : A ⊆ E i j,
LF(A) = A ⊆ E i j
R ngược lại.
ở đây L F (A) = {a ∈ R : (A, {a}) ∈ F } và Er là hệ
bằng nhau của r.
Lời giải: Đầu tiên chúng ta chứng minh rằng
trong một quan hệ r bất kì với mọi A ⊆ R
∩ E i j nếu tồn tại E i j ∈ Er : A ⊆ E i j,
LFr(A) = A ⊆ E i j
R ngược lại.
Giả sử đầu tiên chúng ta công nhận rằng A là
một tập mà không có E i j ∈ Er với A ⊆ E i j với mọi
hi , hj ∈ r , a∈A : hi (a) = hj (a). Theo định nghĩa của
phụ thuộc hàm điều này kéo theo A → R và bởi định
nghĩa của LF r ta thu được LF(A) = R. Rõ ràng là
LFr (∅) = ∩ Ei j
28
Eij ∈ Er
Nếu A≠ ∅ và có một Ei j ∈ Er mà A ⊆ Ei j thì
chúng ta đặt
V = { Eij : A ⊆ Eij, Eij ∈ E r }
và E = ∩ Ei j
Eij ∈ V
Dễ dàng nhận thấy rằng A ⊆ E . Nếu V = Er thì
chúng ta nhận thấy rằng (A,E) ∈ F r nếu V ≠ Er thì
có thể coi như với mọi E i j ∈ V chúng ta có
(Với mọi a ∈ A) (hi(a) = hj (a)) → (Với mọi b ∈
B) (hi(b) = hj(b)) và với mọi E i j ∉ V có một a ∈ A
mà hi (a) ≠ hj(a). Như vậy, ( A, E) ∈ Fr.
Từ định nghĩa của LFr ta có E ⊆ LFr(A). bởi vì r là
một quan hệ trên R, chúng ta có E ⊂ R. Sử dụng A ⊆
E ⊆ LFr(A) ta thu được (E, LFr(A)) ∈ Fr.
Bây giờ, ta giả sử rằng c là một thuộc tính mà c
∉ E. Khi đó có một E i j ∈ V mà c ∉ E i j . Điều này
kéo theo sự tồn tại của một cặp hi , hj ∈ r mà với mọi
b ∈ E: hi (b) = hj (b) nhưng hi (c) ≠ hj (c). Có thể
thấy rằng theo định nghĩa phụ thuộc hàm ( E ∪ {c})
không phụ thuộc vào E. Như vậy, với mọi thuộc tính
c ∉ E ta có ( E, E ∪ {c}) ∉ Fr. Bằng định nghĩa của
LFr ta thu được :
29
LFr (A) = ∩ Ei j
Eij ∈ V
Trên cơ sở Định lí 6 chúng ta dễ dàng thấy rằng
Fr = F nếu và chỉ nếu LFr = LF .
Giả sử L là một hàm đóng. Đặt Z (L) = {A ⊆ R :
L (A) = A}.
Rõ rằng, Z(L) là tập đóng với phép giao.
Có thể thấy là với mọi Ei i (Ei i ∈ Er ), chúng ta
có Ei i ∈ Z(LFr), có nghĩa là E+r ⊆ Z(LFr)
Nhờ Định lý 13 chúng ta có Z(LFr) ⊆ E+R . Như
vậy chúng ta có
Hệ quả 14.
Giả sử r quan hệ, F là một họ ƒ trên R. Khi đó r
thể hiện F nếu và chỉ nếu Z(LF) = E+R .
Trong [5] người ta đã chỉ ra rằng nếu cho một
hệ Sperner không rỗng tuỳ ý K thì tồn tại một quan
hệ r để K = Kr.
Bây giờ, chúng ta đưa ra một định nghĩa dưới
đây
Định nghĩa 15.
Cho trước quan hệ r và hệ Sperner K trên R.
Chúng ta nói rằng r thể hiện K nếu Kr = K.
30
Định nghĩa 16.
Cho F là một họ f trên R, và (A,B) là một phần
tử của F. Chúng ta nói (A,B ) là một phụ thuộc có vế
phải cực đại của F nếu với mọi B' ( B B' ) và ( A,B'
) ∈ F kéo theo B = B'.
Chúng ta kí pháp M(F) là tập tất cả các phụ
thuộc có vế phải cực đại của F. Chúng ta nói rằng B
là vế phải cực đại của F nếu có A sao cho (A,B) ∈
M(F). Kí pháp I(F) là tập tất cả các vế phải cực đại
của F.
Dưới đây chúng ta cho một điều kiện cần và
đủ để một quan hệ thể hiện một hệ Sperner.
Định lý 17.
Giả sử K là một hệ Sperner không rỗng, r là một
là một quan hệ trên R. Khi đó r thể hiện K nếu và
chỉ nếu K-1 = Mr, ở đây Mr là hệ bằng nhau cực đại
của r.
Lời giải: Có thể xem như là nếu K là một hệ
Sperner không rỗng thì K-1 tồn tại. Mặt khác, K và K-1
là xác định duy nhất. Cho nên, chúng ta có Kr = K
nếu và chỉ nếu Kr-1 = K-1.
Bây giờ chúng ta có thể chỉ cần chứng minh
rằng K-r1 = Mr. Rõ ràng, Fr là một họ f trên R. Đầu
tiên chúng ta có thể giả thiết rằng A là một phản
khoá của Kr. Rõ ràng A ≠ R. Nếu có một B sao cho
31
A ⊂ B và A → B, thì bằng định nghĩa của phản khoá,
chúng ta có B → R và A → R. Đây là một điều phi lý.
Vì vậy A ∈ I(Fr). Nếu có một B' sao cho B' ≠ R, B' ∈
I(Fr) và A ⊂ B', thì B' là một khoá của r. Đây là một
điều mâu thuẫn B' ≠ R. Do đó A ∈ I(Fr) - R và
không tồn tại B' (B' ∈ I(Fr) - R) để A ⊂ B'.
Mặt khác, theo định nghĩa của một quan hệ, R ∉
Mr. Rõ ràng, Eij ∈ I(Fr). Như vậy chúng ta có Mr ⊆
I(Fr). Nếu Dlà một tập sao cho ∀C ∈ Mr : D ⊆ C , thì
D là một khoá của r. Bởi vậy, Mr là tập phần tử rời
nhau cực đại của I(FR). Vì vậy chúng ta có A ∈ Mr
Ngược lại, nếu A ∈ Mr, thì theo định nghĩa của
quan hệ và Mr Chúng ta có A → R. Có nghĩa là ∀ K ∈
Kr : K ⊆ A. Mặt khác, bởi vì A là một phần tử của
tập bằng nhau cực đại, cho nên đối với tất cả D(A
⊂ D) chúng ta có D → R. Đồng thời theo định nghĩa
của các phản khoá A ∈ K-1r.
Cho trước s = là một sơ đồ quan hệ trên
R, Ks là tập tất cả các khoá tối tiểu của s. Kí pháp
Ks-1 là tập các phản khoá của s. Từ Định lí 17 chúng
ta có kết quả sau.
Hệ quả 18.
Cho trước s = là một sơ đồ quan hệ và r
là một quan hệ trên R. Khi đó Kr = Ks nếu và chỉ nếu
Ks-1 = Mr , ở đây Mr là hệ bằng nhau cực đại của r.
32
Chúng ta đưa ra một kết quả liên quan đến cả
K-1 và K.
Định lý 19.
Giả sử K là một hệ Sperner trên R. Giả sử s(K)
= min{m:K=Kr, |r|=m, r là quan hệ trên R}. Khi đó
−1
2K
2 ≤ s(K) ≤ |K-1|+1.
Đánh giá này chỉ ra mối quan hệ giữa kích cỡ
của quan hệ tối tiểu mà thể hiện một hệ Sperner (ở
đây hệ này đóng vai trò là một hệ khoá tối tiểu) cho
trước với lực lượng của hệ phản khoá tương ứng
của nó.
Cho F là một họ f trên R. Theo Định nghĩa 16 thì
dễ thấy I(F) là một nửa dàn giao. Khi đó
NI(F) = {A ∈ I ( F ) : A ≠ ∩ {A' ∈ I : A ⊂ A'}}.
Trên cơ sở này chúng ta có định lí sau đánh giá
quan hệ Armstrong nhỏ nhất (minimal Armstrong
relation) của một họ f.
Định lý 20.
Giả sử F là một họ f trên R. Đặt
s(F) = min{m:F=Fr, |r|=m, r là quan hệ trên R}.
2N
≤ s(F) ≤ |NI(F)|+1.
I(F )
Khi đó
33
Đánh giá này cho chúng ta mối quan hệ giữa
kích thước của quan hệ Armstrong nhỏ nhất của họ
F với lực lượng của hệ sinh nhỏ nhất của I(F).
Bây giờ, chúng ta đánh giá sâu hơn kích thước
của các quan hệ Armstrong nhỏ nhất trên R, cũng
như các quan hệ nhỏ nhất mà thể hiện một hệ
Sperner K cho trước.
Chúng ta đặt
P(n) = max { s(K) : K là hệ Sperner tùy ý trên R
= {a1,..., an } }
và Q(n) = max { s(F) : F là họ f tùy ý trên R =
{a1,..., an } }
Khi đó chúng ta có
Định lý 21.
- 1/n2 . C [n/2]n ≤ P(n) ≤ C [n/2]n + 1
- 1/n2 . C [n/2]n ≤ Q(n) ≤ ( 1 + C ( 1/n1/2 )).C [n/2]n
Đánh giá này cho toàn bộ các hệ Sperner (ở đây
hệ này đóng vai trò là một hệ khoá tối tiểu) và các họ
f có thể có trên R.
Định nghĩa 22.
Giả sử r là một quan hệ trên R và Kr là tập của
tất cả các khoá tối tiểu của r. Chúng ta nói rằng a là
34
một thuộc tính cơ bản của r nếu tồn tại một khoá tối
tiểu K (K ∈ Kr) để a là một phần tử của K.
Nếu a không thoả mãn tính chất trên thì a là
thuộc tính thứ cấp.
Trong chương 3 chúng ta có thể thấy các thuộc
tính cơ bản và thứ cấp đóng một vai trò quan trọng
trong việc chuẩn hoá các sơ đồ quan hệ và các quan
hệ.
Trong [24] đã chứng minh kết quả sau
Định lí 23.
Cho trước một sơ đồ quan hệ s = và một
thuộc tính a. Bài toán xác định a là thuộc tính cơ bản
hay không là bài toán NP- đầy đủ.
Có nghĩa rằng cho đén nay không có một thuật
toán có độ phức tạp thời gian đa thức để giải quyết
bài toán này.
Tuy vậy, chúng ta chỉ ra rằng đối với quan hệ thì
bài toán này được giải bằng một thuật toán thời gian
đa thức.
Trước tiên chúng ta chứng minh kết quả sau.
Định lý 24.
Giả sử K là một hệ Sperner trên R. thì
∪K = R - ∩K-1.
35
Lời giải:
Nếu c ∈ ∪K, thì tồn tại một khoá tối tiểu K sao
cho c ∈ K. Đặt H = K- c. Rõ ràng H không chứa một
khoá nào. Như vậy, tồn tại một phản khoá B để B
chứa H. Có thể thấy c không là phần tử của B, vì
ngược lại chúng ta có B chứa K. Điều này là vô lí. Vì
thế chúng ta có
c ∈ R - B ⊆ R - ∩ K-1.
Bây giờ chúng ta giả thiết c ∉ ∪K và B ∈ K-1.
Có thể thấy c ∈ B. Vì ngược lại c ∉ B, thì {c} ∪ B
hình thành một khoá chứa khoá tối tiểu K ( K ∈ K ).
Như vậy K ⊆ B, và chúng ta có c ∈ K. Điều này là
vô lý.
Trên cơ sở của Định lý 17 và Định lí 24 chúng ta
chỉ ra rằng đối với một quan hệ, thì vấn đề về thuộc
tính cơ bản có thể là giải quyết bằng một thuật toán
thời gian đa thức.
Đầu tiên chúng ta xây dựng một thuật toán xác
định tập các thuộc tính cơ bản của quan hệ cho
trước.
Thuật toán 25.
Vào: r = {h1, ..., hm }là một quan hệ trên R
Ra: V là tập tất cả thuộc tính cơ bản của r
36
Bước 1: Từ r chúng ta xây dựng một tập Er = {Ei
j : m ≥ j > i ≥ 1} và Ei j = { a ∈ R : hj(a) = hj(a) }
Bước 2 : Từ Er chúng ta xây dựng tập
M = {B ∈P(R) : Tồn tại Ei j ∈Er : Ei j = B}
Bước 3: Từ M xây dựng tập Mr = { B ∈ M :
Với mọi B' ∈ M : B ⊄ B'}
Có thể thấy rằng Mr tính được bằng một thuật
toán thời gian đa thức.
Bước 4: Xây dựng tập V = R - ∩Mr .
Rõ ràng m.(m+1)/2 ≥ Er ≥ M ≥ Mr .
Bởi vậy thời gian tính của Thuật toán 25 là một đa
thức theo số hàng và số cột của r.
Từ các Định lý 17, 24 và Thuật toán 25 chúng ta
có hệ quả sau.
Hệ quả 26.
Tồn tại thuật toán đối với một quan hệ r cho
trước, xác định một thuộc tính bất kì là cơ bản hay
không với thời gian tính đa thức theo số hàng và cột
của r.
Một vấn đề thường xuyên hay xảy ra là đối với
một sơ đồ quan hệ cho trước s = , và một phụ
thuộc hàm A → B, chúng ta muốn biết A → B có là
phần tử của F+ hay không. Để trả lời câu hỏi này
37
chúng ta cần tính bao đóng F+ của tập các phụ thuộc
hàm F. Tuy nhiên tính F+ trong trường hợp tổng quát
là rất khó khăn và tồn kém thời gian vì tập các phụ
thuộc hàm thuộc F+ là rất lớn cho dù F có thể là nhỏ.
Chẳng hạn F ={A → B1, A → B2 ,.. A → Bn}, F+ khi đó
còn bao gồm cả những phụ thuộc hàm A → Y với Y
⊆{B1 ∪ B2. ∪... ∪ Bn}. Như vậy sẽ có 2n tập con Y .
Trong khi đó, việc tính bao đóng của tập thuộc tính A
lại không khó. Theo kết quả đã trình bày ở trên việc
kỉêm tra A → B ∈ F+ không khó hơn việc tính A+.
Ta có thể tính bao đóng A+ qua thuật toán sau:
Thuật toán 27
Vào: s = , ở đây R ={ a1 ,...., an } tập hữu
hạn các thuộc tính, F tập các phụ thuộc hàm, A ⊆ R
Ra: A+ bao đóng của A đối với F
Thuật toán thực hiện như sau: Tính các tập
thuộc tính A0, A1... theo qui tắc:
1) A0 = A
2) Ai = Ai-1 ∪{a} sao cho ∃ (C → D) ∈ F,{a} ∈
Y và C ⊆ Ai-1
Vì A = A0 ⊆ ... ⊆ Ai ⊆ R, và R hữu hạn nên tồn
tại một chỉ số i nào đó mà Ai = Ai+1, khi đó thuật toán
dừng và A+ = Ai
38
Chúng ta có thể thấy độ phức tạp thời gian của
thuật toán này là đa thức theo kích thước của s.
Để tiện kí pháp chúng ta thay a ∪ b bởi viết ab.
Ví dụ: s = , ở đâyR = { a,b,c,d,e,g }, F
bao gồm 8 phụ thuộc hàm
ab → c d → eg
c →a be → c
bc → d cg→ bd
acd → b ce → ag
và A = bd.
Dùng Thuật toán 27 chúng ta có thể thấy
A0 = bd,
A1 = bdeg,
A2 = bcdeg,
A3 = abcdeg,
A+ = abcdeg.
Để chứng minh tính đúng đắn của Thuật toán
27 chúng ta có thể dùng phương pháp quy nạp để chỉ
ra rằng nếu a thuộc Ai thì a cũng thuộc A+.
39
Việc chỉ ra điều ngược lại cũng bằng qui nạp
nhưng khó khăn hơn là nếu a nằm trong A+ thì a nằm
trong một số Ai nào đó.
Định lý 28.
Thuật toán 27 tính chính xác A+.
Như vậy, để xác định một phụ thuộc hàm A →
B có thuộc F+ hay không chúng ta chỉ cần kiểm tra B
⊆ A+ ?.
Bây giờ, chúng ta đi tìm thuật toán tìm bao đóng
cho một tập các thuộc tính trên một quan hệ bất kì
Đối với một quan hệ bất kì theo Định lí 13 chúng
ta đã chúng minh với mọi A ⊆ R
∩ E i j nếu tồn tại E i j ∈ Er : A ⊆ E i j,
LFr(A) = A ⊆ E ij
R ngược lại.
Có thể thấy LFr (A) = Ar+ . Do vậy chúng ta có
ngay thuật toán sau để tính bao đóng cho một tập bất
kì trên quan hệ r.
Thuật toán 29
Vào: r = {h1, ..., hm } là một quan hệ trên R
Ra: V là tập tất cả thuộc tính cơ bản của r
40
Bước 1: Từ r chúng ta xây dựng một tập Er = {Ei
j : m ≥ j > i ≥ 1} và Ei j = { a ∈ R : hj(a) = hj(a) }
Bước 2: Từ Er chúng ta xây dựng một tập M =
{B ∈P(R) : Tồn tại Ei j ∈Er : Ei j = B}
Bước 3:
∩ B nếu tồn tại B ∈ M : A ⊆ B,
Ar+ = A⊆ B
R ngược lại.
Dễ thấy, độ phức tạp thời gian của thuật toán
này là một đa thức theo kích thước của r.
Định nghĩa 30
Giả sử s = , t = là hai sơ đồ quan
hệ trên R. Khi đó chúng ta nói s tương đương với t
nếu F+ = G+ . Nếu s và t tương đương thì đôi khi
chúng ta có thể nói rằng s là một phủ của t hoặc t là
một phủ của s.
Dễ dàng kiểm tra rằng s và t có tương đương
với nhau không.
Mỗi phụ thuộc hàm Y → Z ở trong F chúng ta
kiểm tra lại Y → Z ở trong G+ bằng vi ệc sử dụng
Thuật toán 27 để tính Y+ và kiểm tra Z ⊆ Y+ . Nếu
có phụ thuộc hàm Y → Z không nằm trong G+ hoặc
ngược lại nếu có phụ thuộc hàm X → W ở trong G
41
nhưng không ở trong F + thì điều chắc chắn là F+
khác G+ . Nếu mỗi phụ thuộc hàm ở trong F thì cũng
nằm trong G+ và mỗi phụ thuộc hàm nằm trong G
thì cúng nằm trong F+, khi đó chúng ta có s và t là
tương đương với nhau.
Hiện nay chúng ta cho định nghĩa sau nói về sự
tương đương của hai quan hệ.
Định nghĩa 31
Giả sử r và v là hai quan hệ trên R. Khi đó ta nói
r và v tương đương với nhau nếu Fr = Fv .
Chúng tôi trình bày định lí sau liên quan đến sự
tương đương của hai quan hệ.
Định lí 32
Giả sử r và v là hai quan hệ trên R. Khi đó s
tương đương với v khi và chỉ khi Nr = Nv.
Trên cơ sở Định lí 32 chúng ta đưa ra một thuật
toán kiểm tra xem r có tương đương với v hay không.
Thuật toán 33
Vào: r và t là hai quan hệ trên R
Ra: r có tương đương với v hay không
Bước 1: Từ r tính Nr,
Bước 2: Từ v tính Nv
Bước 3 : So sánh Mr với Mv.
42
Bây giờ, chúng ta quay lại với sơ đồ quan hệ.
Chúng ta muốn gọt giũa các phụ thuộc hàm của sơ
đồ quan hệ để có tập phụ thuộc hàm tốt hơn.
Định nghĩa 34
Chúng ta nói một sơ đồ quan hệ s = là
chính tắc nếu
1. Vế phải của mỗi phụ thuộc hàm trong F là
thuộc tính đơn.
2. Không có X → a nào ở trong F để F- {X → a}
tương đương với F.
3. Không có X → a và một tập con Z của X để
F-{X → A} ∪ {Z → a} tương đương với F.
Chúng ta sẽ chỉ ra rằng có thuật toán để tìm một
phủ chính tắc cho một sơ đồ quan hệ bất kì.
Trước tiên chúng ta đưa ra mệnh đề sau
Mệnh đề 35:
Mỗi một sơ đồ quan hệ s = đều có một
phủ tương đương t = sao cho vế phải của
mỗi phụ thuộc hàm trong G không có hơn một thuộc
tính.
Chứng minh: Đặt G là tập phụ thuộc hàm có
dạng X → a, với X → Y nằm trong F và a là một
43
phần tử của Y. Trên cơ sở hệ tiên đề của Armstrong,
chúng ta dễ thấy t tương đương với s.
Chúng ta trình bày thuật toán dưới đây để tìm
phủ chính tắc cho một sơ đồ quan hệ cho trước
Thuật toán 36
Vào: s= , F = { A1 → B1,..., Am → Bm }
Ra: t = là chính tắc và tương đương với s
Do Mệnh đề 35 chúng ta có thể coi s thoả mãn
điều kiện 1.
Bước 1: Đặt F0 = F, với i = 1, ..., m
Fi = Fi-1 - { Ai → Bi } nếu Fi-1 - { Ai → Bi
} tương đương với Fi . Trong trương hợp ngượi lại
thì Fi = Fi-1.
Bước 2: Nhờ thuật toán tính bao đóng, từ Fm
chúng ta lần lượt loại bỏ các thuộc tính thừa trong
mỗi vế trái của từng phụ thuộc hàm thuộc Fm.
Kết quả nhận đước chính là G.
Dễ thấy rằng thuật toán trên có độ phức tạp
thời gian là đa thức theo kích thước của s.
Chúng ta đưa ra một khái niệm sau
Định nghĩa 37
44
Giả sử s = là một sơ đồ quan hệ trên R.
Khi đó chúng ta nói rằng s là sơ đồ quan hệ tối tiểu
nếu với mọi sơ đồ quan hệ t = < R,G> tương đương
với s có | F | < |G|, ở đây |F| là số lượng các phụ
thuộc hàm trong F.
David Maier [25] đã chứng minh định lí sau
Định lí 38
Tồn tại một thuật toán có độ phức tạp thời gian
đa thức để tìm phủ tối tiểu cho một sơ đồ quan hệ
cho trước.
Ví dụ:
Chúng ta xem xét tập các phụ thuộc hàm F trong
ví dụ minh hoạ Thuật toán 27. Ban đầu chúng ta
tách vế phải ra thành các thuộc tính đơn:
ab → c,
c → a,
bc → d,
acd→ b,
d → e,
d → g,
be → c,
cg→ b,
45
cg→ d,
ce→ a,
ce → g.
Rõ ràng ce → a là không cần thiết bởi vì nó suy ra
được từ c → a.
cg → b là dư thừa bởi vì có cg → d , c → a và acd
→ b. Ngoài ra không có một phụ thuộc hàm nào là
dư thừa nữa. Dễ thấy acd → b có thể thay thế bởi cd
→ b. Vậy chúng ta có một phủ chính tắc là :
ab →c,
c →a,
bc→d,
cd→b,
d→e,
d→g,
be→c,
cg→d,
ce→g.
2.3 Các mô tả tương đương của họ các phụ thuộc
hàm
46
Trong mục trên chúng ta đã định nghĩa hàm đóng.
Nó là một mô tả tương đương của họ các phụ thuộc
hàm. Trong mục này chúng tôi cung cấp cho bạn đọc
một số các mô tả tương đương khác của họ này.
Chúng chính là các công cụ để chúng ta có thể nghiên
cứu phong phú hơn nữa cấu trúc lôgic của họ các
phụ thuộc hàm.
Định nghĩa 1
Cho R là tập các thuộc tính và P(R) là tập các tập
con của R.
Một hàm C: P(R) → P(R) được gọi là một hàm
chọn trên R nếu với mọi A ∈ P( R ) thì C (A) ⊆ A.
Giả sử L là một hàm đóng trên R . Chúng ta đặt
C(A) = R - L(R-A) (*)
Dễ thấy C là một hàm chọn trên R
Trong [6] người ta đã chứng minh được kết quả
sau
Định lí 2
Tương ứng được xác định như (*) là tương ứng
1-1 giữa tập các hàm đóng và tập các hàm chọn thoả
mãn 2 điều kiện sau: với mọi A,B ⊆ R
(1) C(A) ⊆ B ⊆ A kéo theo C(A) = C(B)
(2) A ⊆ B kéo theo C(A) ⊆ C(B).
47
Chúng ta có hình vẽ sau thể hiện mối quan hệ
giữa lớp hàm đóng và lớp hàm chọn đặc biệt trên
• •
• •
• •
Lớp các hàm đóng Lớp các
hàm chọn đặc biệt
Định lí dưới đây chỉ ra một tương ứng 1-1 giữa
lớp các hàm đóng và lớp các nửa dàn giao trên R.
Định lí 4
Giả sử L là một hàm đóng trên R. Đặt Z( L ) =
{ A : A ∈ P(R) và L(A) = A }. Khi đó Z(L) là một nửa
dàn giao trên R.
Ngược lại, nếu I là một nửa dàn giao trên R, thì
tồn tại duy nhất một hàm đóng L sao cho Z(L) = I, ở
đây L(A) = ∩ {A' ∈ I : A ⊆ A'}.
48
• •
• •
• •
Lớp các hàm đóng
Lớp các nửa dàn giao
Như vậy, từ Định lí 6 mục trên và Định lí 4,
chúng ta thấy có một tương ứng 1-1 giữa lớp các nửa
dàn giao và lớp các họ các phụ thuộc hàm trên R .
Định nghĩa 5
Giả sử N ⊆ P(R). Khi đó N được gọi là tập
không giao nếu với mọi A ∈ N thì A ≠ ∩ {A' ∈ N :
A ⊂ A'}.
Định lí 6
Nếu I là nửa dàn giao, thì NI là tập không giao.
Ngược lại nếu N là tập không giao thì tồn tại duy
nhất một nửa dàn giao I sao cho NI = N.
Như vậy, chúng ta thấy có một tương ứng 1-1
giữa lớp các nửa dàn giao và lớp các tập không giao.
49
• •
• •
• •
Lớp các nửa dàn giao Lớp
các tập không giao
Từ Định lí 6 mục trên và các Định lí 4 và 6 chúng
ta rút ra kết luận là có một tương ứng 1-1 giữa lớp
các họ phụ thuộc hàm với lớp các tập không giao.
Như vậy, để nghiên cứu phân tích các đặc trưng
của họ các phụ thuộc hàm chúng ta có thể dùng công
cụ nửa dàn giao hoặc tập không giao.
Bây giờ chúng tôi đưa ra khái niệm họ cực đại
các thuộc tính. Đồng thời chúng ta chỉ ra rằng họ này
là một mô tả tương đương của họ phụ thuộc hàm.
Định nghĩa 7
Giả sử R là tập các thuộc tính. Họ M={(A,{a}):
A ⊂ R, a ∈ R} được gọi là họ cực đại các thuộc tính
trên R nếu nó thoả mãn các điều kiện sau
(1) a ∉ A,
50
(2) Đối với mọi (B, {b}) ∈ M, a ∉ B và A ⊆ B
kéo theo A = B.
(3) ∃ (B,{b}) ∈ M : a ∉ B, a ≠ b, và La ∪ B là
một hệ Sperner trên R, ở đây La = {A: (A, {a}) ∈ M}.
Nhận xét 8.
- Có thể có (A, {a}), (B, {b}) ∈ M mà a ≠ b,
nhưng A = B.
- Do (1) và (2) có thể thấy đối với a ∈ R chúng
ta có La là một hệ Sperner trên R. Đặc biệt có thể
La là một hệ Sperner rỗng.
- Trên cơ sở Định nghĩa 7 chúng ta có thể thấy
tồn tại một thuật toán thời gian tính đa thức để xác
định một tập Y ⊆ P(R) x P(R) có là một họ cực đại
các thuộc tính trên R hay không.
Giả sử H là một hàm đóng trên R. Đặt Z(H) =
{A : H(A) = A} và M(H) = {(A, {A}) : A ∉ A, A ∈
Z(H) và B ∈ Z(H), A ⊆ B, A ∉ B kéo theo A = B}.
Z(H) là họ các tập đóng của H. Dễ thấy, với mỗi
(A, {a}) ∈ M(H), A là tập đóng cực đại mà không
chứa a.
Có thể tồn tại (A, {a}), (B, {b}) ∈ M(H) mà a ≠
b, nhưng A = B.
51
Nhận xét 9.
Giả sử r là một quan hệ trên R và Fr là họ các
phụ thuộc hàm của r. Đặt Ar+ = {a: A → {a} ∈ Fr}
và Zr = {A: A = Ar+ } và Nr là hệ sinh cực tiểu của
nó. Có thể thấy Nr ⊆ Er với
Nr = {A ∈ Er : A ≠ ∩{B: B ∈ Er, A ⊂ B}}, ở đây
Er là hệ bằng nhau r.
Chúng ta cho định lí dưới đây chỉ ra rằng giữa
các hàm đóng và họ cực đạI các thuộc tính có tưong
ứng 1-1.
Định lí 10.
Giả sử H là một hàm đóng trên R. Khi đó M(H)
là họ cực đại các thuộc tính. Ngược lại, nếu M là họ
cực đạI các thuộc tính trên R thì tồn tại đúng một
hàm đóng H trên R để M(H) = M, ở đây với mọi B ∈
P(R).
∩ A if ∃ A ∈ L(M) : B ⊆ A,
H(B) = B ⊆ A
R ngược lại,
và L(M) = {A: (A, {a} ∈ M}.
Lời giải:
Giả sử H là hàm đóng trên R. Cơ sở trên định
nghĩa của M(H) ta có (1) và (2). Ta đặt L'a = { A : (A,
52
{a} ∈ M(H)}. Giả thiết có S (B, {b}) ∈ M(H) : a ≠
b, a ∉ B, L'a ∪ B là hệ Sperner trên R (*). Khi đó ta
chọn (B,{b}) ∈ M(H) sao cho B là lớn nhất cho (*).
Do (2) trong Định nghĩa 7 ta có La' là hệ Sperner trên
R. Do đó, không có một A nào mà A ∈ La' và B ⊆ A.
Phù hợp với định nghĩa của M(H) ta có (B,{a}) ∈
M(H). Như vậy, B ∈ La'. Điều này là vô lí. Từ đó ta
có (3) trong Định nghĩa 7. Có nghĩa là M(H) là họ cực
đại các thuộc tính trên R.
Ngược lại, giả sử M là họ cực đại các thuộc
tính trên R. Đặt L(M) = {A : (A, {a}) ∈ M}. Đầu tiên
ta chứng tỏ rằng L(M) là tập không giao trên R. Đối
với bất kì (A, {a}) ∈ M do Nhận xét 2.2 ta có A ≠ A'
∩ A" và A ≠ A' ∩ B, ở đây A', A" ∈ La và B ∈
L(M) : A ≠ B.
Nếu tồn tại (B, {b}), (C, {c}) ∈ M sao cho b ≠
a, c ≠ a, A ⊂ B, A ⊂ C thì bởi (2) trong Định nghĩa
2.1 ta có a ∈ B, a ∈ C. Từ đó, A ⊂ B ∩ C. Như vậy,
đối với A,B,C, ∈ L(M) nếu A = B ∩ C thì A = B
hoặc A = C. Do đó, L(M) là hệ không giao trên R.
Chúng ta biết rằng các họ không giao và các hàm
đóng xác định duy nhất lẫn nhau. Mặt khác phù hợp
với Nhận xét 8 và Định lí 13 mục trên ta có H là một
hàm đóng trên R và L(M) là hệ sinh tối tiểu của
Z(H).
53
Hiện ta sẽ chứng minh M(H) = M. Nếu (A, {a})
∈ M thì A ∈ L(M). Giả thiết rằng đối với mỗi b ∉
A có B ∈ Z(H) : A ⊂ B, b ∉ B. Có thể thấy rằng A
là giao của những B như thế. Điều này mâu thuẫn
với A ∈ L(M). Nếu (A, {a}) ∈ M thì có b ∉ A để (A,
{b}) ∈ M(H) (**).
Nếu (A, {a}) ∈ M(H) thì phù hợp với định nghĩa
của M(H) B ∈Z(H), và A ⊂ B kéo theo a ∈ B. Vì a
∉ A, ta thấy A không là giao của các B như thế. Theo
cấu trúc của H ta có A ∈ L(M). Như vậy, nếu (A,
{a}) ∈ M(H) thì A ∈ L(M) (***).
Bây giờ ta giả thiết là (A,{a}) ∈ M, nhưng (A,
{a}) ∉ M(H). Vì A là tập đóng của H,a ∉ A và bởi
định nghĩa của M(H) thì tồn tại (B,{a}) ∈ M(H) sao
chot A ⊂ B. Do (***) ta có B ∈ L(M). Điều này mâu
thuẫn với điều kiện (2) của Định nghĩa 7. Từ đó, ta
có (A,{a}) ∈ M(H).
Giả thiết (A,{a}) ∈ M(H), nhưng (A,{a}) ∉ M.
Nếu có A' ∈ La để A ⊂ A' thì bởi (**) ta có A' là một
tạp đóng của H. Phù hợp với định nghĩa của M(H) ta
có (A,{a}) ∉ M. Điều này là vô lí. Nếu A' ⊂ A thì
do (***) ta có (A',{a}) ∉ M, nó cũng vô lí. Nếu A ∪
La là hệ Sperner trên R thì bởi (***) ta có thể thấy nó
trái với điều kiện (3) của Định nghĩa 7. Do đó tồn tại
54
một A' mà A' ∈ La và A =A'. Từ đó ta có M(H) =
M.
Nếu ta giả thiết rằng có H' mà M(H') = M. Đặt
L(H') = {A : (A,{a}) ∈ M(H'). Theo (**) và (***)
của chứng minh trên ta có L(H') là một hệ sinh nhỏ
nhất của Z(H'). Do M(H') = M(H) = M ta có L(H') =
L(M) = L(H). Vì các hàm đóng và các tập không giao
là xã định duy nhất lẫn nhau nên H = H'.
• •
• •
• •
Lớp các hàm đóng Lớp các họ
cực đại các thuộc tính
Vì các hàm đóng và các họ các phụ thuộc hàm
tương ứng xác định duy nhất lẫn mhau, từ Định lí 2.4
ta có
Hệ quả 11.
Tồn tại tương ứng 1-1 giữa lớp các họ cực đại
các thuộc tính và họ các phụ thuộc hàm.
2.4. Các thuật toán liên quan đến các khoá
55
Khi giải quyết các bài toán thông tin quản lí,
chúng ta thường sử dụng các hệ quản trị cơ sở dữ
liệu mà trong đó chứa cơ sở dữ liệu quan hệ. Các
phép xử lí đối với lớp bài toán này thường là tìm
kiếm bản ghi sau đó thay đổi nội dung bản ghi, thêm
bản ghi mới hoặc xoá bản ghi cũ. Trong các thao tác
trên việc tìm kiếm bản ghi là rất quan trọng. muốn
tìm được bản ghi trong một file dữ liệu chúng ta phải
xây dựng khoá cho file dữ liệu đó.
Việc xây dựng khoá ở đây chính là xây dựng
khoá tối tiểu. Vì thế trong mục này chúng tôi cung
cấp cho bạn đọc hai thuật toán tìm khoá tối tiểu.
2.4.1 Thuật toán tìm khoá tối tiểu của một sơ
đồ quan hệ
Vào : sơ đồ quan hệ s = < F, R> trong đó :
F là tập các phụ thuộc hàm và
R={ a1 ,...., an } là tập các thuộc tính
Ra : K là một khoá tối tiểu
Thuật toán thực hiện như sau:
Tính liên tiếp các tập thuộc tính K0, K1....., Kn
như sau:
Ko = R = { a1 ,...., an }
Ki-1 nếu Ki-1 - {ai} →R∉ F+,
K I=
Ki-1 -{ai} ngược lại
56
...
K = Kn là khoá tối tiểu
2.4.2. Thuật toán tìm một khoá tối tiểu của
một quan hệ
Cho trước r = {h1,.... hm} là một quan hệ trên tập
thuộc tính R = { a1 ,...., an }
Hệ bằng nhau của quan hệ r được định nghĩa ở
phần trên như sau:
Er ={Eij : 1≤ i ≤ j ≤ m}, ở đây Ei j = {a ∈ R : hi
(a) = hj (a)}.
Dễ dàng thấy rằng Er được tính bằng thời gian
đa thức từ r
Thuật toán tìm một khoá tối tiểu của một quan
hệ r:
Vào: r = {h1,.... hm} là một quan hệ trên tập thuộc
tính R= { a1 ,...., an }
Ra: K là một khoá tối tiểu của r
Thuật toán thực hiện như sau
Bước 1: Tính Er ={ A1 ....At}
Bước 2 : Tính Mr = { A : có Aj ∈ Er : A = Aj và
không có Ai : Ai∈Er: A ⊂ Ai }
57
Bước 3 : Lần lượt tính các tập thuộc K1, K2, ....Kn
tính theo qui tắc :
K0 = R= { a1 ,...., an } hoặc K0 = một khoá đã biết
Ki = Ki-1 - { ai } nếu không tồn tại A ∈ Mr sao
cho Ki-1 - {ai} ⊆ A hoặc Ki = Ki-1 trong trường hợp
ngược lại
Bước 4: Đặt K = Kn , khi đó K là khoá tối tiểu
2.5. Mối quan hệ giữa quan hệ Armstrong và sơ
đồ quan hệ
Việc xây dựng quan hệ Armstrong của một sơ
đồ quan hệ cho trước và ngược lại từ quan hệ cho
trước ta xây dựng một SĐQH sao cho quan hệ cho
trước này là quan hệ Armstrong của nó có vai trò rất
quan trọng trong việc phân tích cấu trúc lôgic của mô
hình dữ liệu quan hệ cả trong thiết kế lẫn trong ứng
dụng. Đã có nhiều tác giả nghiên cứu vấn đề này.
Trong mục này chúng tôi trình bày hai thuật toán giải
quyết bài toán trên và đưa ra việc đánh giá các thuật
toán này cũng như đánh giá độ phức tạp của bài toán
trên.
Trước tiên, chúng ta cho một thuật toán tìm tập
tất cả các phản khoá của hệ Spernner cho trước.
Thuật toán 1 ( Tìm tập phản khoá )
58
Vào: K = {B1,...,Bn} là hệ Sperner trên R.
Ra: K-1.
Bước 1: Ta đặt K1 = {R - {a}: a ∈ B1}. Hiển
nhiên K1 = {B1}-1.
Bước q + 1: (q < m). Ta giả thiết rằng Kq = Fq ∪
{X1... X tq}, ở đây X1,....,Xtq chứa Bq+1 và Fq = { A ∈ Kq
: Bq+1 ⊆ A }. Đối với mỗi I ( I = 1,..., tq ) ta tìm các
phản khoá của { Bq+1 } trên Xi tương tự như K1. Kí
pháp chúng là Ai1,..., Arii . Đặt
Kq+1 = Fq ∪ {Aip : A ∈ Fq kéo theo Aip ⊄ A,1 ≤ i
≤ tq. 1 ≤ p ≤ ri}
Cuối cùng ta đặt K-1 = Km
Định lí 2.
Với mọi q (1 ≤ q ≤ m), Kq = { B1,.... Bq}-1, có
nghĩa là Km = K-1.,
Rõ ràng, K và K-1 là xác định duy nhất lẫn nhau
và từ định nghĩa của K-1 có thể thấy thuật toán của
chúng ta không phụ thuộc vào thứ tự của dãy B1,...,
Bm. Đặt Kq = Fq ∪ {X1,..., Xtq} và lq ( 1 ≤ q ≤ m-1) là
số các phần tử của Kq. Khi đó ta có
Mệnh đề 3
Độ phức tạp thời gian tồi nhất của Thuật toán
2.1 là
m-1
59
O ( | R| 2 ∑ tq.uq).
q=1
ở đây lq - tq, nếu lq > tq,
uq =
1 nếu lq = tq
Rõ ràng trong mỗi bước thuật toán ta có Kq là
hệ Sperner trên R. Ta biết rằng[5] kích thước của hệ
Sperner bất kì trên R không vượt quá Cn[n/2], ở đây n =
| R| . Có thể thấy Cn[n/2] xấp xỉ bằng 2n+1/2/ (Π. n1/2). Từ
đó độ phức tạp thời gian tồi nhất của thuật toán trên
không nhiều hơn hàm số mũ theo n. Trong trường
hợp mà lq ≤ lm (q = 1,..., m-1), dễ thấy rằng độ phức
tạp thuật toán không lớn hơn O( | R| 2 | K| | K-1| 2 ). Như
vậy, trong các trường hợp này độ phức tạp của
Thuật toán 1 tìm K-1 là đa thức theo | R| , | K| , and | K-
1
| . Có thể thấy nếu số lượng các phần tử của K là
nhỏ thì Thuật toán 1 là rất hiệu quả. Nó chỉ đòi hỏi
thời gian đa thức theo |R|
Định nghĩa 4
Cho s = (R,F) là SĐQH trên R và a ∈ R. Đặt
Ka = { A ⊆ R:A → {a}, ∃ B: (B → {a})(B ⊂ A)}.
Ka được gọi là họ các tập tối tiểu của thuộc tính a.
Rõ ràng, R ∉ Ka, {a} ∈ Ka và Ka là hệ Sperner
trên R.
60
Thuật toán 5. (Tìm tập tối tiểu của thuộc tính a)
Vào: Cho s = (R = {a1,..., an}, F) là SĐQH, a = a1.
Ra: A ∈ Ka.
Bước 1: Ta đặt L(0) = R.
Bước i + 1: Đặt
L(i) - ai+1 nếu L(i) - ai+1 → {a},
L(i+1) =
L(i), ngược lại.
Khi đó A = L(n).
Bổ đề 6.
L(n) ∈ Ka
Lời giải: Bằng phương pháp chứng minh qui
nạp có thể thấy L(n) → {a}, và L(n) ⊆ ... ⊆ L(0) (1).
Nếu L(n) = a, thì bởi định nghĩa của tập tối tiểu của
thuộc tính a ta thu được L(n) ∈ Ka. Bây giờ ta giả
thiết là tồn tại một B sao cho B ⊂ L(n) và B ≠ 0.
Như vậy sẽ có aj sao cho aj ⊄ B, aj ∈ L(n). Theo các
xây dựng thuật toán này ta có L(j-1) - aj → {a}. Rõ
ràng bởi (1) ta thu được L(n) - aj ⊆ L(j-1) - aj (2).
Dễ thấy B ⊆ L(n) - aj.
Từ (1), (2) ta có B → {a}.
61
Dễ thấy, vì thuật toán xác định một phụ thuộc
hàm bất kì có phải là phụ thuộc hàm của một SĐQH
hay không là có độ phức tạp thời gian đa thức, nên
độ phức tạp của Thuật toán 5 là O(| R| 2 | F| ).
Bổ đề 7.
Cho s = (R,F) là SĐQH trên R và a ∈ R, Ka là họ
các tập tối tiểu của a, L ⊆ Ka, {a} ∈ L. Khi đó L ⊂
Ka nếu và chỉ nếu tồn tại C, A → B sao cho C ∈ L và
A → B ∈ F và ∀ E ∈ L => E ⊆ A ∪ ( C- B).
Lời giải. =>: Ta giả thiết rằng L ⊂ Ka. Do đó,
tồn tại D ∈ Ka - L. Bởi {a} ∈ L và Ka là hệ Sperner
trên R, chúng ta có thể xây dựng một tập cực đại Q
sao cho D ⊆ Q ⊂ U và L ∪ Q là hệ Spernner. Từ định
nghĩa của Ka, chúng ta thu được Q → {a} (1) và a ∉ Q
(2). Nếu A → B ∈ F kéo theo (A tb Q, B ⊆ Q) hoặc
A ⊆ Q thì Q+ = Q. Bởi (2) ta có Q → {a}. Điều này
mâu thuẫn với (1). Do đó, tồn tại một phụ thuộc hàm
A → B sao cho A ⊆ Q, B ⊆ Q. Từ cách xây dựng của
Q có C sao cho C ∈ L, A ⊆ Q, C - B ⊆ Q. Hiển nhiên
rằng A ∪ (C-B) ⊆ Q.
Rõ ràng, E ⊆ A ∪ (C-B) đối với mọi E ∈ L.
tiq hoặc ui q = 1 nếu li q = tiq
Trong trường hợp li q ≤ (∀ i, ∀ q : 1 ≤ q ≤ mi ),
độ phức tạp thuật toán của chúng ta là
n
∑
O(n i=1 Ka i (n F + Ka i F + n Ka-1 2)).
Như vậy, độ phức tạp thuật toán 2.11 là đa thức
theo R , F , Ka i , Ka-1 . Rõ ràng, trong các
trường hợp này nếu Kai và Ka-1 là đa thức (đặc
biệt nếu chúng là nhỏ) theo R và F , thì thuật
toán của chúng ta là hiệu quả.
Bây giờ chúng ta sử dụng thuật toán 11 để xây
dựng quan hệ Armstrong cho sơ đồ quan hệ trong ví
dụ dưới đây.
Ví dụ 13
66
Cho s = là một sơ đồ quan hệ, ở đây R
= {a,b,c,d} và F = {{a,d} → R, {a} → {a,b,c},{b,d} →
{b,c,d}}.
Bởi thuật toán 8, chúng ta thu được Ka = {a}.Kb =
{{a},{b}},Kc ={{a},{b,d},{c}}, Kd = {d}.
Trên cơ sở thuật toán 1, ta có Ka-1 = {b,c,d }, Kb-1
= {c,d}, Kc-1 = {{b},{d}}, K-1d = {a,b,c}.
Do đó, N(F) = {{a,b,c }, {b,c,d}, {c,d}, {b}, {d}}.
Khi đó ta xây dựng quan hệ r như sau:
a b c d
0 0 0 0
0 0 0 1
2 0 0 0
3 3 0 0
4 0 4 4
5 5 5 0
Bây giờ chúng ta xây dựng một thuật toán tìm
một sơ đồ quan hệ s từ một quan hệ cho trước sao
cho quan hệ này là quan hệ Armstrong của s.
Thuật toán 14 (Tìm một khoá tối thiểu từ tập
các phản khoá).
67
Vào: Cho K là một hệ Sperner, H là một hệ
Sperner, và C = {b1,...,bm} ⊆ R sao cho H-1 = K và ∃
B ∈ K : B ⊆ C.
Ra : D ∈ H
Bước 1: Đặt T(0) = C
Bước i+1: Đặt T = T(i) - bi+1
T nếu ∀ B ∈ K : T ∉ B
T( i+1) =
T(i) ngược lại
Cuối cùng đặt D = T(m)
Bổ đề 15. Nếu K là tập các phản khoá thì T(m)
∈ H.
Bổ đề 16. Cho H là một hệ Sperner trên R, và H-
1
= { B1,...,Bm} là tập các phản khoá của H, T ⊆
H .Khi đó T ⊂ H, T ≠ ∅ nếu và chỉ nếu tồn tại B
⊆ U sao cho B ∈ T-1 , B ∉ Bi ( ∀ i : 1 ≤ i ≤ m).
Cơ sở trên bổ đề 16 và thuật toán 14 chúng ta
xây dựng thuật toán sau.
Thuật toán 17. Tìm tập các khoá tối thiểu từ tập
các phản khoá.
Vào: Cho K = {B1,...,Bk } là một hệ Sperner trên
R
Ra: H mà H-1 = K
68
Bước 1: Nhờ thuật toán 2.14 chúng ta tính A1,
đặt K(1) = A1
Bước i+1: Nếu có B ∈ Ki-1 sao cho B ∉ Bj ( ∀ j:
1≤ j ≤ k), thì bởi Thuật toán 2.14 chúng ta tính A i+1 ,
ở đây A i+1 ∈ H , A i+1 ⊆ B. Đặt K(i+1) = K(i) ∪ A i+1
. Trong trường hợp ngược lại ta đặt H=K(i).
Mệnh đề 18. Độ phức tạp của Thuật toán 17 là
m −1
∑
O( n ( q=1 ( k lq + n tq uq) + k2 + n))
ở đây R = n, K = k, H = m, ý nghĩa của lq
, tq, uq, xem trong mệnh đề 3.
Rõ ràng , trong các trường hợp mà lq ≤ k (∀ q :
1≤ q ≤ m-1) độ phức tạp thời gian của thuật toán là
O ( R 2 K 2 H ). Dễ thấy trong các
trường hợp này thuật toán 2.17 tìm tập các khoá tối
tiểu có độ phức tạp thời gian là đa thức trong kích
thước của R, K, H.
Nếu H là đa thức theo R và K , thì thuật
toán là hiệu quả. Có thể thấy rằng nếu số lượng các
phần tử của H là nhỏ thì thuật toán 17 là rất hiệu
quả.
Bổ đề 19.
Cho F là một họ f trên R, a ∈R. Đặt LF(A) = {a
∈ R: ( A , {a}) ∈ F}, ZF = {A : LF (A) = A}. Rõ ràng,
69
R ∈ ZF, A,B ∈ ZF → A ∩ B ∈ ZF. Kí pháp NF là hệ
sinh tối tiểu ZF . Đặt Ma = { A ∈ NF : a ∉ A, ∃ B ∈
NF: a ∉ B,A ⊂ B}. Khi đó Ma = MAX (F,a), ở đây
MAX(F,a) = {A ⊆ U : A là một tập cực đại không
rỗng mà (A,{a}) ∉ F}.
Lời giải:
Biết rằng [27] MAX(F,a) ⊆ NF (1). Giả thiết
rằng A ∈ Ma. Bởi A ∈ NF, có nghĩa là LF (A) = A, và a
∉ A , ta thu được ( A, {a}) ∉ F. Từ (1) và phù hợp
với định nghĩa của Ma ta có A ∈ MAX(F,a).
Ngược lại, Nếu A ∈ MAX (F,a) thì do (1) ta có
A ∈ NF (2). Do (A,{a}]) ∉ F và từ (2) ta thu được a ∉
A. Phù hợp với định nghĩa của MAX(F,a) ta có A ∈
Ma .
Trên cơ sở Thuật toán 17 và Bổ đề 19, ta xây
dựng thuật toán dưới đây để tìm SĐQH s =
cho một quan hệ r cho trước sao cho F+ = Fr.
Thuật toán 20. (Tìm SĐQH)
Vào: r là quan hệ trên R
Ra: s = mà F+ = FR
Bước1: Từ r ta tính hệ bằng nhau Er
Bước 2: Đặt Nr = { A ∈ Er : A ≠ ∩ { B ∈ Er :
A ⊂ B}}
70
Bước 3: Với mỗi a ∈ R ta xây Na = {A ∈ Nr : a
∉ A ∃ B ∈ Nr : a ∉ B , A ∈ B } . Sau đó, bởi Thuật
toán 17 ta xây họ Ha( Ha-1= Na)
Bước 4: Xây s = , ở đây F = {A → {a} :
∀ a ∈ R , A ∈ Ha,A ≠ {a}}
Mệnh đề 21.
FR = F+
Lời giải: Vì FR là một họ f trên R, có thể thấy
NF r ⊂ Er, ở đây NFr là hệ sinh nhỏ nhất của ZFr. Do
định nghĩa của hệ sinh nhỏ nhất ta có Nr = NFr. Do đó
ta có Na = Ma. Từ định nghĩa của tập phản khoá và
định nghĩa của tập Ka ta có Ha= Ka. Tù đó ta thu được
F+ ⊆ FR .
Ngược lại, nếu A → B = {b1,...,bt} ∈ FR thì bởi
việc xây dựng của F ta thu được A → {bi} ∈ F+ với
mỗi i=l,...,t. Vì không có phụ thuộc hàm tầm thường
{a} → {a} trong F, dễ thấy với mọi i=1,...,t, nếu
không có phụ thuộc hàm B → {bi} ∈ F , ở đây B ⊆
U - bi, thì bi ∈ A. Từ đó ta có A → B ∈ F+.
Có thể thấy Er, Nr, Na với a ∈ R được xây trong
thời gian đa thức theo kích thước của r. Rõ ràng, việc
xây dựng F phụ thuộc vào kích thước của Ha( ∀ a ∈
R). Do đó, độ phức tạp thời gian tồi nhất của Thuật
toán 20 là
71
n mi - 1
n m i−1
∑ ∑
O ( n i=1 ( q=1 (kili q + nti q ui q ) + ki2 + n))
ở đây R = { a1,..., an}, Nai = ki , Hai = mi, ý nghĩa
của các li q, ti q, ui q xem các Mệnh đề 3 và 18.
Dễ thấy, nếu li q ≤ ki ( ∀ i, ∀ q : 1≤ q ≤ mi -
1), thì độ phức tạp thời gian của thuật toán của
chúng ta là
n
∑
O (n i=1 ki2 mi )
2
Bởi vì ki là đa thức theo kích thước của r, trong
các trường hợp nếu is mi là đa thức theo kích thước
của r, thì thuật toán của chúng ta là hiệu quả. Lúc đó
độ phức tạp của nó là đa thức theo kích thước của r.
Nếu Ha là nhỏ thì thuật toán của ta rất hiệu quả.
Bây giờ, nhờ Thuật toán 20 chúng ta xây dựng
SĐQH s = cho quan hệ sau đây.
Ví dụ 22 r là quan hệ sau đây trên R = {a, b, c, d}:
a b c d
6 6 6 0
0 2 0 2
0 0 0 0
0 0 0 3
4 4 0 0
5 0 5 5
1 0 0 0
72
Dễ thấy là
ER = {{a,b,c}, {b,c,d}. { a,c}, { b,c}, {c,d}.{b},
{c},{d}, ∅},
NR = {[a,b,c}, {b,c,d},{a,c},{c,d},{b},{d}},
Na = {b,c,d}, Nb= {{a,c},{c,d}},
Nc = {{b},{d}}, Nd ={a,b,c}
Ta có Ha = {a}, Hb = {{b}, {a,d}}, Hc = {{a},
{b,d},{c}}, Hd = {d}.
Ta xây dựng s = (R,F) như sau:
R = {a,b,c,d}, F = {{a,d} → {b},{a} → {c},{b,d}
→ {c}}.
Chúng ta trình bày hai kết quả cơ bản về độ
phức tạp thuật toán cho việc xây dựng quan hệ
Armstrong cho một SĐQH cho trước và ngược lại.
Định lí 23
Độ phức tạp thời gian cho việc tìm kiếm một
quan hệ Armstrong của một SĐQH cho trước là hàm
số mũ theo số lượng của các thuộc tính.
Định lí 24
Độ phức tạp thời gian cho việc tìm kiếm một
SĐQH s = từ một quan hệ r cho trước sao cho
Fr = F+ là hàm số mũ theo số lượng các thuộc tính.
73
Chương 3
Các dạng chuẩn
và các thuật toán liên quan
Việc chuẩn hoá các quan hệ cũng như các sơ đồ
quan hệ đóng một vai trò cực kì quan trọng trong
việc thiết kế các hệ quản trị cơ sở dữ liệu trên mô
hình dữ liệu của Codd. Nhờ có chuẩn hoá các quan
hệ và các sơ đồ quan hệ chúng ta tránh được việc dư
thừa dữ liệu và tăng tốc độ của các phép toán xử lí
quan hệ.
3.1 Các khái niệm cơ bản
Chúng ta định nghĩa các dạng chuẩn như sau.
Cho r = {h1,...,hm} là quan hệ trên R = {a1 ...., an}
Định nghĩa 1. (Dạng chuẩn 1 - 1NF):
r là dạng chuẩn 1 nếu các phần tử của nó là sơ
cấp.
74
Khái niệm sơ cấp hiểu ở đây là giá trị hi(aj)
(i=1,...,m; j=1,...,n) không phân chia được nữa.
Định nghĩa 2 (Dạng chuẩn 2 - 2NF)
r là dạng chuẩn 2 nếu:
- r là dạng chuẩn 1
- A → {a} ∉ Fr đối với mọi khoá tối thiểu K, A
⊂ K và a là thuộc tính thứ cấp.
Định nghĩa 3. ( Dạng chuẩn 3 - 3NF):
r là dạng chuẩn 3 nếu:
A → {a} ∉ Fr đối với A mà A+ ≠ R, a ∉ A, a
∉∪ K
Có nghĩa rằng :
- K là một khoá tối tiểu
- a là thuộc tính thứ cấp
- A không là khoá
- A → {a} không đúng trong r
Định nghĩa 4. (Dạng chuẩn Boye-Codd - BCNF)
r là dạng chuẩn của Boye-Codd nếu:
A → {a} ∉ Fr đối với A mà A+ ≠ R, a ∉ A
Nhận xét 5
Qua định nghĩa, ta có thể thấy dạng chuẩn
75
BCNF là 3NF và 3NF là 2NF. Tuy vậy, chúng ta có
thể đưa ra các ví dụ chứng tỏ có quan hệ là 2NF
nhưng không là 3NF và có quan hệ là 3NF nhưng
không là BCNF.
Nói cách khác là lớp các quan hệ BCNF là lớp
con thực sự của lớp các quan hệ 3NF và lớp các quan
hệ 3NF này lại là lớp con thực sự của lớp các quan
hệ 2NF.
Đối với s = thì các dạng chuẩn 2NF,
3NF, BCNF trong đó ta thay Fr bằng F+.
Chú ý là đối với sơ đồ quan hệ ta không có dạng
1NF.
Nhận xét 5 cũng đúng cho các dạng chuẩn của
sơ đồ quan hệ. Chúng ta xem ví dụ sau
Ví dụ 6.
Cho s = , s' = '210397' (doanh số)) và in ra
bảng sau:
115
Ngày tháng Tổng
220397 6 000
230397 15 000
- Chúng ta muốn biết các tên hàng và số lượng
đã bán trong ngày 21 tháng 03 năm 1997.
Π Tên hàng, số lượng ( δ Ngày tháng='210397' (Khối lượng)
Hàng)
Tên hàng Số lượng
Radio 1
TV 2
Xe đạp 1
- Tìm các ngày mà trong các ngày đó doanh số
bán ra ít nhất là 10.000.000đ
Π Ngày tháng ( δ Tổng'≥ '10 000' (doanh số))
Ngày tháng
210197
230397
116
- In ra các mã và tên hàng mà đơn giá của nó nhỏ
hơn 3.000.000đ
Π Tên hàng, Mã hàng ( δ Đơn giá' < Π Mã
hàng, Đơn giá (Hàng Mặt Hàng).
Mã hàng Đơn giá
M1 1000
M4 5000
M9 2000
- Tìm tên, đơn giá của mã hàng M1 và số lượng
bán ra của mặt hàng này trong ngày 23 tháng 03 năm
1997
117
Π Tên hàng, Đơn giá, Số lượng (Π Mã hàng, Số lượng (δ Ngày tháng =
'230397' ∧Mã hàng = M1 (khối lượng) > < hàng Mặt hàng).
Tên hàng Đơn giá Số lượng
Radio 1000 3
Ví dụ: Cho 2 quan hệ
r1 =
Chuyến bay Máy bay
83 727
83 747
84 727
84 747
109 707
r2 =
Phi công Máy bay
118
Tuấn 707
Tuấn 727
Thành 747
Thắng 727
Thắng 747
Chúng ta cần in ra một bảng chỉ ra các phi công
có thể lái cho mỗi chuyến bay. Khi đó chúng ta chỉ
cần thực hiện phép nối tự nhiên giữa r1 và r2.
r3 = r1 r2
Chuyến bay Máy bay Phi công
83 727 Tuấn
83 727 Thắng
83 747 Thành
83 747 Thắng
119
84 727 Tuấn
84 727 Thắng
84 747 Thành
84 747 Thắng
109 707 Tuấn
Đơn giản hơn ta thực hiện
Π Chuyến bay, Phi công (r3)
Chuyến bay Phi công
83 Tuấn
83 Thắng
83 Thành
84 Tuấn
84 Thắng
84 Thành
120
109 Tuấn
Chương 5
Một số áp dụng mô hình
dữ liệu trong các hệ quản trị CSDL
hiện có
5.1. Mô tả chung
Chương này mô tả việc áp dụng các khái niệm
của chương 2, 3 trong các hệ QTCSDL hiện có trên
thị trường. Các khái niệm này bao gồm thực thể,
121
thuộc tính, khoá , quan hệ, phụ thuộc hàm, các dạng
chuẩn.
5.2. Những khái niệm cơ bản
Trong phần này chúng tôi nêu lại một vài khái
niệm đã được trình bày sơ bộ ở chương 2.
5.2.1. Thực thể
Thực thể là một hình ảnh tượng trưng cho một
đối tượng cụ thể hay một khái niệm trừu tượng
nhưng có mặt trong thế giới thực.
Ví dụ:
Dự án, con người, sản phẩm, ...
Thông thường khi xây dựng mô hình dữ liệu các
thực thể được biểu diễn bằng những hình chữ nhật
ví dụ như
Sản phẩm
5.2.2. Thuộc tính
Trong một hệ thông tin, ta cần lựa chọn một số
tính chất đặc trưng để diễn tả một thực thể, các tính
chất này được gọi là thuộc tính của thực thể được
mô tả và đây cũng chính là các loại thông tin dữ liệu
cần quản lí.
Ví dụ:
122
Họ tên, địa chỉ, ngày sinh của thực thể 'sinh viên'
Nhãn hiệu, giá của thực thể 'sản phẩm'
Giá trị các thuộc tính của một thực thể cho phép
diễn tả một trường hợp cụ thể của thực thể, gọi là
một thể hiện của thực thể đó .
Ví dụ:
('Trần Văn Sơn', '204 Triệu Việt Vương - Hà
Nội', 12-5-1975) là một thể hiện của 'sinh viên'
('Máy vi tính ACER', 1349) là một thể hiện của
'sản phẩm'
Một thuộc tính là sơ cấp khi ta không cần phân
tích nó thành nhiều thuộc tính khác, tuỳ theo nhu cầu
xử lí trong hệ thông tin đối với một thực thể.
Thông thường một thực thể tương ứng với một
bảng (hay một quan hệ của Codd).
Mỗi thực thể phải có ít nhất một thuộc tính mà
mỗi giá trị của nó vừa đủ cho phép nhận diện một
cách duy nhất một thể hiện của thực thể, gọi là
thuộc tính nhận dạng hay là khoá. Có nhiều trường
hợp chúng ta phải dùng một tập các thuộc tính để
nhận diện thực thể. Khi một thực thể có nhiều khoá,
người ta chọn một trong số đó làm khoá chính (khóa
123
tối tiểu). Giá trị của một khoá luôn luôn được xác
định.
Ví dụ:
Số hoá đơn là thuộc tính nhận dạng của thực thể
"Hoá đơn".
Không thể có hai hay nhiều hoá đơn có cùng số
hoá đơn trong cùng một hệ thông tin.
Ví dụ:
Hoá Đơn
Số Hoá Đơn
Khách Hàng
Giá Tiền
5.2.3. Quan hệ
Khái niệm quan hệ ở mục này (khác với khái
niệm quan hệ của Codd) được dùng để nhóm họp 2
hay nhiều thực thể với nhau nhằm biểu hiện một
mối liên quan tồn tại trong thế giới thực giữa các
thực thể này. Kích thước của một quan hệ là số thực
thể đã cấu thành nên quan hệ, và có thể là một số
124
nguyên bất kỳ. Tuy vậy, trong thực tiễn, người ta
luôn tìm cách tránh dùng đến những quan hệ có kích
thước lớn hơn 3.
Trong một mô hình dữ liệu các quan hệ được
biểu diễn bằng những hình tròn hoặc elipse. Trong
một số trường hợp, mối quan hệ cũng có thể có
những thuộc tính riêng.
Ví dụ:
Hoá đơn dùng để thanh toán một số sản phẩm
bán ra. Mỗi dòng hoá đơn cho biết tổng giá của mỗi
sản phẩm.Đây là một quan hệ có kích thước là 2, còn
gọi là quan hệ nhị nguyên.
Hoá đơn Dòng hoá đơn Sản phẩm
- Tổng giá sản phẩm
Người ta đưa ra khái niệm những vai trò khác
nhau của cùng một thực thể để có thể biểu diễn mối
quan hệ giữa thực thể này với chính nó. Vì loại quan
hệ này ít dùng nên trong Giáo trình này chúng tôi
không trình bày loại quan hệ đó.
125
5.2.4. Phân loại các quan hệ
Xét R là một tập quan hệ và E là một thực thể
cấu thành của R, mỗi cặp (E,R) được biểu thị trên sơ
đồ khái niệm dữ liệu bằng một đoạn thẳng. Với
thực thể E, ta có thể xác định được:
- X là số tối thiểu các thể hiện tương ứng với E
mà R có thể có trong thực tế.
Giá trị của X như vậy chỉ có thể bằng 0 hay 1.
- Y là số tối đa các thể hiện tương ứng với E mà
R có thể có trong thực tế.
Giá trị của Y có thể bằng 1 hay một số nguyên N
>1.
Cặp số (X, Y) được định nghĩa là bản số của
đoạn thẳng (E,R) và có thể lấy các giá trị sau: (0,1),
(1,1), (0,N) hay (1,N), với N > 1.
Đối với loại quan hệ nhị nguyên R liên kết giữa
hai thực thể A và B, ta phân thành ba loại quan hệ cơ
bản sau:
- Quan hệ 1-1 (một - một): mỗi thể hiện của
thực thể A được kết hợp với 0 hay 1 thể hiện của B
và ngược lại.
X,1 R Y,1
A B
X và Y có thể lấy các giá trị 0 và 1
126
Ví dụ:
Mỗi độc giả ở một thời điểm chỉ được đọc một
quyển sách.
1,1 0,1
Độc giả Đọc Cuốn sách
- Quan hệ 1 - N (một - nhiều): Mỗi thể hiện của
thực thể A được kết hợp với 0,1 hay nhiều thể hiện
của B và mỗi thể hiện của B được kết hợp với một
thể hiện duy nhất của A. Đây là một loại quan hệ
thông dụng và đơn giản nhất.
X,N 1,1
A R B
X có thể lấy các giá trị 0 và 1
Ví dụ:
Một khách hàng có thể có nhiều hoá đơn
Một hoá đơn chỉ có thể mang tên một khách
hàng.
0, n 1, 1
Dòng hoá đơn
Khách hàng Hoá đơn
127
- Quan hệ N - P (nhiều - nhiều): Mỗi thể hiện
của một thực thể A được kết hợp với 0, 1 hay nhiều
thể hiện của B và ngược lại, mỗi thể hiện của B
được kết hợp 0, 1 hay nhiều thể hiện của A
X, N Y, N
A R B
X và Y có thể lấy các giá trị 0 hoặc 1
Ví dụ:
Một hoá đơn dùng để thanh toán một hay nhiều
sản phẩm
Một sản phẩm có thể xuất hiện trong 0, 1 hay
nhiều hoá đơn.
Thông thường quan hệ N - P chứa các thuộc tính.
Chúng ta biến đổi loại quan hệ này thành thực thể và
thực thể này cần được nhận dạng bởi một khoá
chính.
5.3. Các dạng chuẩn trong các hệ QTCSDL hiện
có
Trong mục này chúng tôi trình bày một số ý
nghĩa của phụ thuộc hàm và mối liên hệ của nó với
việc chuẩn hoá trong thực tiễn
5.3.1. Một số phụ thuộc hàm đặc biệt
128
Trên cơ sở của định nghĩa phụ thuộc hàm đã
trình bày ở chương 2 chúng ta có thể thấy:
- Nếu B phụ thuộc hàm vào A (A→ B), thì với
mỗi giá trị của A tương ứng với một giá trị duy nhất
của B. 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 A đến tập hợp những
giá trị của B.
Ví dụ: Trong một hoá đơn bao gồm các thuộc
tính 'số hoá đơ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'
Chúng ta có thể mở rộng khái niệm phụ thuộc
hàm khi cho phép A hoặc B là một thực thể hoặc là
một quan hệ.
Ví dụ: Ta có hai thực thể 'Hoá đơn' và 'Khách
hàng'
Khi đó: Thực thể 'Hoá đơn' → 'Thuộc tính 'Tên
khách hàng'
Thực thể 'Hoá đơn' → thực thể 'Khách hàng'
Thuộc tính 'Số hoá đơn' → thực thể 'Khách hàng'
129
Trong chương 3 ta trình bày phụ thuộc hàm hoàn
toàn và phụ thuộc hàm trực tiếp. Hai loại phụ thuộc
hàm này đóng vai trò quan trong các dạng chuẩn.
Các dạng chuẩn được đề ra với mục đích để
đảm bảo tính nhất quán và tránh việc trùng lặp các
thông tin. Trong mục này chúng ta sẽ quay trở lại với
các dạng chuẩn. Các dạng chuẩn này có những biến
đổi điều kiện ràng buộc đơn giản hơn so với các
dạng chuẩn đã trình bày trong chương 3.
5.3.2. Dạng chuẩn 1
Chúng ta nói rằng một thực thể hay quan hệ ở
dạng chuẩn 1 nếu tất cả giá trị các thuộc tính của nó
là sơ cấp. Điều kiện ràng buộc giống như 1NF của
chương 3. Định nghĩa của dạng chuẩn 1 mang tính
mô tả. Thông thường giá trị các thuộc tính là các dãy
kí tự hoặc là các số như trong FOXPRO, khi đó
chúng ta cho các giá trị này là sơ cấp
Để minh họa ta đưa ra thực thể sau đã trình bày
trong mục 4.3.
Bán hàng
Ngày Mã Tên Đơn Số Tổng Thanh
tháng hàn hàng giá lượ toán
g ng
2103 M1 Radio 1 1 10 6 000
97 000 000
130
2103 M3 TV 4 2 10 6 000
97 000 000
2103 M6 Xe 1 1 10 6 000
97 đạp 000 000
2203 M2 Máy 3 2 6 000 2 000
97 giặt 000
2303 M1 Radio 1 3 15 11 000
97 000 000
2303 M4 Video 5 2 15 11 000
97 000 000
2303 M9 Máy 2 1 15 11 000
97 ảnh 000 000
Chúng ta chọn khoá chính (nó là một khoá tối
tiểu) cho thực thể bán hàng là tập {Ngày tháng, Mã
hàng}
5.3.3. Dạng chuẩn 2
Một thực thể hay quan hệ là 1NF được xem là
dạng chuẩn 2 nếu tất cả các phụ thuộc hàm giữa
khoá chính và các thuộc tính khác của nó đều là hoàn
toàn .
Chú ý rằng định nghĩa dạng chuẩn 2 trong
chương 2 chặt hơn vì điều kiện phụ thuộc hoàn toàn
liên quan đến mọi khoá tối tiểu, chứ không chỉ liên
131
quan đến một khoá tối tiểu được chọn làm khoá
chính.
Trong ví dụ trên, thực thể Bán hàng đã là 1NF, ta
nhận thấy đối với khoá chính {số phiếu, mã vật tư}
các thuộc tính Tổng và Thanh toán phụ thuộc hàm
vào thuộc tính Ngày tháng, các thuộc tính Tên hàng,
Đơn giá phụ thuộc hàm vào thuộc tính Mã hàng.
Ngày tháng, Mã hàng là hai thuộc tính của khóa chính.
Do đó dẫn đến trùng lặp dữ liệu. Thực thể Bán hàng
không là 2NF. Để thoả dạng chuẩn 2NF, ta phải tách
nó thành 3 thực thể riêng biệt:
hàng hoá
Mã hàng Tên hàng Đơn giá
M1 Radio 1 000
M2 Máy giặt 3 000
M3 TV 4 000
M4 Video 5 000
M6 Xe đạp 1 000
M9 Máy ảnh 2 000
Ta chọn khoá chính của thực thể hàng hoá là Mã
hàng
khối lượng
132
Ngày tháng Mã hàng Số lượng
210397 M1 1
210397 M3 2
210397 M6 1
220397 M2 2
230397 M1 3
230397 M4 2
230397 M9 1
Ta chọn khoá chính (nó là khoá tối tiểu) cho thực
thể Khối lượng là Ngày tháng, Mã hàng
Doanh số
Ngày tháng Tổng Thanh toán
210397 10000 6000
220397 6000 2000
230397 15000 11000
Khoá chính là Ngày tháng
Có thể thấy thực thể Khối lượng → thực thể
Hàng hoá
Ta có biểu diễn sau:
1, n 1,1
Hàng hóa Khối lượng
133
R
5.3.4. Dạng chuẩn 3 (3NF)
Một thực thể (hay quan hệ) đã là 2NF được xem
là dạng chuẩn 3NF nếu tất cả các phụ thuộc hàm
giữa khoá chính và các thuộc tính khác của nó đều là
trực tiếp.
Hay nói cách khác, mọi thuộc tính không nằm
trong khoá chính đều không phụ thuộc hàm vào một
thuộc tính không phải là khóa chính. Ta có thể rút ra
nhận xét: Một thực thể có nhiều khoá nhận dạng
không thể thoả mãn dạng chuẩn 3NF. Mặt khác định
nghĩa 3NF trong chương 2 chặt hơn vì điều kiện phụ
thuộc hoàn toàn và phụ thuộc trực tiếp liên quan đến
mọi khoá tối tiểu, chứ không chỉ liên quan đến một
khoá tối tiểu được chọn làm khoá chính.
Trong thực thể Hàng hoá là 2NF ở trên, ta thấy
trên đồ thị của các phụ thuộc hàm có hai con đường
để đi từ ‘Mã hàng’ đến ‘Đơn giá’ hoặc đi qua thuộc
tính ‘Tên hàng’
Mã hàng Tên hàng
Đơn giá
134
Điều này chứng tỏ thực thể chưa là 3NF, dẫn
đến trùng lặp đơn giá của tên hàng. Để là dạng 3NF,
ta tách nó thành hai thực thể riêng biệt:
Hàng
Mã hàng Tên hàng
M1 Radio
M2 Máy giặt
M3 TV
M4 Video
M6 Xe đạp
M9 Máy ảnh
Khoá chính là Mã hàng
Mặt hàng
Tên hàng Đơn giá
Radio 1000
Máy giặt 3000
TV 4000
135
Video 5000
Xe đạp 1000
Máy ảnh 2000
Khoá chính là Tên hàng
Có thể thấy thực thể Hàng → thực thể Mặt
hàng
Tổng hợp với phần trên, ta có sơ đồ sau:
1, n 1,1
Hàng R Khối lượng
1,1 0, n
R1 Mặt hàng
5.3.5. Dạng chuẩn của Boyce - Codd (BCNF)
Dạng chuẩn 3NF cho phép một thuộc tính thành
phần của khoá chính phụ thuộc hàm vào một thuộc
tính không phải là khoá
Ví dụ :
136
Lớp Môn Thầy
12 Toán A
11 Toán D
10 Toán A
12 Địa C
11 Địa C
10 Địa D
Thực thể này thoả dạng 3NF. Khoá chính của nó
gồm các thuộc tính 'Lớp' và 'Môn'.
Nhưng do qui tắc 'Mỗi thầy chỉ dạy một môn', ta
thấy có sự phụ thuộc hàm của Môn (Là một thành
phần của khoá chính) vào Thầy (Là một thuộc tính
bình thường):
'Thầy' → 'Môn'
Ta nói rằng thực thể thoả mãn dạng chuẩn
Boyce-Codd (BCNF) khi tất cả các phụ thuộc hàm
của nó đều thuộc dạng K → a, trong đó K là khoá
chính và a là một thuộc tính bất kỳ.
Để thoả dạng BCNF, ta có thể tách thực thể trên
thành hai thực thể riêng biệt như sau:
Thực thể 'Lớp':
137
Lớp
12
11
10
Thực thể 'Thầy':
Thầy Môn
A Toán
B Toán
C Sử Địa
D Sử Địa
Chúng ta có biểu diễn sau:
1, n 1, n
Thầy R Lớp
5.3.6. Nhận xét về việc chuẩn hoá
138
Khi không có yêu cầu gì đặc biệt, người ta
thường tìm cách chuẩn hoá mô hình dữ liệu nhằm
tăng hiệu hiệu năng và giảm sơ xuất trong các giai
đoạn phát triển hệ thông tin về sau.
Tuy vậy, việc chuẩn hoá không phải lúc nào
cũng đạt đến mức tối đa. Thông thường chúng ta
chuẩn hoá đến dạng chuẩn 2NF và 3NF.
139
Chương 6
Một số công đoạn xây dựng các dự án
thiết kế tổng thể các hệ thống cơ sở
dữ liệu hiện nay
6.1. Mô tả chung
Trong dự án thiết kế tổng thể người ta thường
trình bày một số vấn đề cơ bản sau:
- Hiện trạng và tiềm lực CNTT của cơ quan chủ
trì dự án.
- Hiện trạng về việc thu thập, lưu trữ và xử lí
các dữ liệu liên quan hệ cơ sở dữ liệu cần xây dựng,
- Ước đoán khối lượng lưu trữ và trao đổi thông
tin trong hệ cơ sở dữ liệu,
- Phân tích thiết kế hệ CSDL,
- Thiết kế hạ tầng kĩ thuật,
- Chuẩn hoá, bảo mật và an toàn thông tin,
- Tính pháp lí về quyền và nghĩa vụ trong việc
thu thập, cập nhật, khai thác và bảo vệ thông tin
trong hệ CSDL,
140
- Nội dung, đối tượng và kế hoạch triển khai
công tác đào tạo,
- Tổng hợp và cân đối kinh phí
- Các biện pháp tổ chức thực hiện .
Một trong các phần quan trọng nhất của dự án là
khâu phân tích thiết kế.
Thông thường để thực hiện việc phân tích thiết
kế khi xây dựng dự án người ta sử dụng một số
phương pháp phân tích thiết kế, ví dụ như phương
pháp phân tích thiết kế có cấu trúc (Structured
Analysis and Design), phương pháp GALASCI,
phương pháp phân tích MCX, phương pháp phân tích
MERISE (Methode pour Rassembler les Idees Sans
Effort)...
Trong các phương pháp phân tích thiết kế trên
MERISE có đặc tính là khi phân tích nó tách rời xử lí
với dữ liệu, tổ chức theo nhiều mức, đi từ phân tích
tổng thể đến chi tiết một cách tuần tự theo chiều
tăng dần của mức độ phức tạp. MERISE được
nhiều người xử dụng và đặc biệt tốt cho việc phân
tích thiết kế cho các hệ thông tin lớn. Tại Việt Nam
một số cơ quan đã được trang bị công cụ phân mềm
MEGA tuân theo các chuẩn của phương pháp phân
tích MERISE. Cho đến nay nhiều dự án "Thiết kế
141
tổng thể hệ thống cơ sở dữ liệu" đã được xây dựng
trên cơ sở phương pháp phân tích MERISE.
Dựa trên phương pháp MERISE, khi phân tích
thiết kế tổng thể, chúng ta tiến hành các công đoạn
sau :
Mô tả qui trình nghiệp vụ bằng lời:
Trong công đoạn này chúng ta mô tả đầy đủ,
mạch lạc bằng lời qui trình nghiệp vụ của bài toán
cần thiết kế. Công đoạn này thường phân biệt
những yếu tố nghiệp vụ hay thay đổi với những yếu
tố nghiệp vụ tương đối bất biến trong khoảng thời
gian dài. Những yếu tố bất biến này thường được
tập trung mô tả kĩ hơn. Trong công đoạn mô tả bằng
lời này, chúng ta không chỉ mô tả những yếu tố
nghiệp vụ hiện có mà còn mô tả các kiến nghị sửa
đổi, các dự báo tương lai phù hợp với quá trình phát
triển của hệ thống thông tin. Công đoạn này phân rã
mỗi lĩnh vực nghiệp vụ thành các chức năng nghiệp
vụ, và mỗi chức năng nghiệp vụ được phân rã thành
các thao tác xử lí. Toàn bộ các yếu tố này đều được
mô tả rõ ràng.
Xây dựng các mô hình
142
Sau khi mô tả các qui trình nghiệp vụ một cách
rõ ràng và mạch lạc, chúng ta tiến hành xây dựng các
mô hình. Các mô hình này được phân chia theo 4 mức
độ khái quát khác nhau. Đó là :
- Mức khái niệm: Mức này mô tả sự hoạt động
của đơn vị theo một cấu trúc khái quát nhất. Trong
mức này các chức năng hoạt động được mô tả độc
lập với những bộ phận, vị trí hay nhân viên thực
hiện chúng.
- Mức tổ chức: Mức này thể hiện các mục tiêu
đã được khái niệm hóa lên thực tế của đơn vị trong
đó có tính đến những điều kiện ràng buộc về mặt tổ
chức.
- Mức lôgic: Mức này qui định các công cụ tin
học mà các công cụ này được người dùng trong các
thao tác xử lí.
- Mức vật lí: Mức này liên quan chặt chẽ với các
trang thiết bị tin học cụ thể.
Trong mỗi mức chúng ta có 3 mô hình. Đó là mô
hình trao đổi thông tin, mô hình xử lí và mô hình dữ
liệu.
Cụ thể chúng ta có:
143
*Mô hình khái niệm trao đổi (MCC modele
conceptuel de communication):
MCC phân rã lĩnh vực nghiệp vụ thành các chức
năng nghiệp vụ. MCC mô tả sự trao đổi thông tin
giữa các chức năng nghiệp vụ nằm trong bài toán và
sự trao đổi thông tin giữa các lĩnh vực nghiệp vụ với
các lĩnh vực nghiệp vụ khác và các đối tượng bên
ngoài.
MCC cho ta một cái nhìn tổng thể về một lĩnh
vực nghiệp vụ và các chức năng nghiệp vụ của nó
cũng như các nhu cầu thông tin của nó.
*Mô hình khái niệm xử lí (MCT modele
conceptuel de traitements):
MCT dùng để mô tả một lĩnh vực, qui trình,
chức năng, thao tác.
MCT phân rã một chức năng nghiệp vụ thành
các thao tác xử lí . Mỗi thao tác xử lí có thể được
xem như một phép biến đổi thông tin. Một thao tác
có thể có điều kiện khởi động là các sự kiện, các
thông báo mà khi xuất hiện chúng thao tác bắt đầu
được thực hiện . Trong quá trình thực hiện, thao tác
cần phải truy nhập đến các thông tin đã được lưu
giữ , biến đổi chúng và cập nhật lại theo một số qui
luật tính toán và ràng buộc nhất định.
144
* Mô hình khái niệm dữ liệu (MCD modele
conceptuel de donneees):
Việc mô tả dữ liệu trong mô hình MCD thông
qua ngôn ngữ " Thực thể / Quan hệ " cùng với các
thuộc tính của các thực thể và các quan hệ . Trên mô
hình này, khóa chính, các thuộc tính chính được khai
báo và lưu trữ trong hệ thống.
MCD được xây dựng cho một lĩnh vực nghiệp
vụ nhằm xác định đầy đủ những dữ liệu đòi hỏi khi
thực hiện các chức năng , trong đó đặc biệt là những
dữ liệu cần thiết cho việc trao đổi .
* Mô hình tổ chức trao đổi (MOC):
MOC mô tả một lĩnh vực nghiệp vụ, đơn vị tổ
chức.
Mô hình này mô tả các vị trí làm việc và việc
luân chuyển thông tin trong đơn vị.
* Mô hình tổ chức xử lí (MOT):
MOT là mô hình tổ chức để thực hiện các thao
tác của một chức năng nghiệp vụ đã được mô tả
trong MCT. MOT thể hiện qui trình làm việc , trong
đó nhấn mạnh tính tuần tự của các thao tác và nêu rõ
những ràng buộc về thời điểm bắt đầu xử lí hay
truyền thông tin. Một thao tác trong MCT có thể ứng
vối nhiều thao tác trong MOT và ngược lại một thao
145
tác trong MOT cũng có thể ứng với nhiều thao tác
trong MOT tuỳ theo các hoàn cảnh cụ thể .
* Mô hình tổ chức dữ liệu (MOD):
MOD mô tả dữ liệu cần ghi nhớ trong từng địa
điểm, cho từng vị trí thực hiện.
Trong khi MCD chỉ định nghĩa các khái niệm dữ
liệu, thì MOC cụ thể hóa những điều kiện có thể
xảy ra để một thực thể thuộc vào mô hình.
* Mô hình lôgic trao đổi (MLC):
MLC xác định sự trao đổi giữa người với người
(thông qua các mẫu biểu), giữa người với máy
(thông qua giao diện) và giữa các phần mềm với
nhau.
* Mô hình lôgic xử lí (MLT): Thường để mô tả
công cụ tin học.
* Mô hình lôgic dữ liệu (MLD):
Nhờ MLD, chúng ta có thể chuyển các MOD
sang dạng quen thuộc cho các chuyên gia tin học.
Thông thường, chúng ta chuyển từ ngôn ngữ thực
thể - quan hệ sang dạng biểu báo.
Các mô hình vật lí trao đổi (MPC), mô hình vật lí
xử lí (MPT), mô hình vật lí dữ liệu (MPD) gắn liền
với các trang thiết bị tin học cụ thể.
146
Các mức và mô hình của MERISE có thể tóm tắt
như sau:
Mức Trao đổi Chức năng Dữ liệu
Khái niệm MCC MCT MCD
Tổ chức MOC MOT MOD
Lôgic MLC MLT MLD
Vật lí MPC MPT MPD
Quan trọng nhất trong các mô hình trên là các mô
hình liên quan đến dữ liệu vì nó làm nền tảng cho
việc xây dựng các mô hình khác.
Trong phạm vi Giáo trình này chúng tôi trình bày
việc xây dựng mô hình khái niệm dữ liệu. Đó là mô
hình dữ liệu thường có trong các dự án thiết kế tổng
thể các hệ thống thông tin.
Quá trình xây dựng mô hình khái niệm dữ liệu có
thể được chia thành các giai đoạn sau đây:
A. Khảo sát thực tế
- Thu thập và trình bày thông tin.
147
B. Thiết kế mô hình dữ liệu
- Kiểm kê các dữ liệu.
- Xác định các phụ thuộc hàm.
- Xây dựng mô hình khái niệm:
- Xác định tập hợp các khoá chính.
- Nhận diện các thực thể.
- Nhận diện các quan hệ.
- Phân bổ các thuộc tính còn lại.
- Vẽ sơ đồ khái niệm dữ liệu.
C. Kiểm soát và chuẩn hoá mô hình
6.2. Khảo sát thực tế
6.2. Khảo sát thực tế
Mục tiêu của giai đoạn này là qua quá trình quan
sát, phỏng vấn, tìm hiểu và phân tích, chúng ta mô tả
đầy đủ hiện trạng, các bài toán nghiệp vụ và các nhu
cầu của người sử dụng mà hệ thống thông tin cần
phải thoả mãn. Do đó, nó không chỉ giới hạn trong
việc xây dựng mô hình dữ liệu mà còn là nguồn gốc
các thông tin cần thiết cho việc xây dựng mô hình xử
lí.
Để đạt mục tiêu này, ta cần thu thập và trình bày
tất cả những thông tin dù thuộc phương diện dữ liệu
148
hay chức năng có thể hữu ích cho việc thiết kế hệ
thông tin về sau. Các thông tin này cần được quan sát
dưới dạng: tĩnh (dữ liệu sơ cấp, tài liệu, quảng cáo,
đơn vị, vị trí làm việc..), dạng động (luồng luân
chuyển các thông tin, tài liệu, chu kì, thời lượng), và
dạng biến đổi của chúng (thủ tục, qui tắc quản lí,
công thức tính toán,..).
Các thông tin thu thập được phải đầy đủ và
chính xác vì chúng là nền tảng của hệ thông tin
tương lai. Nhưng cũng không nên đi quá sâu vào chi
tiết và phải biết gạn bỏ những thông tin không cần
thiết, để không làm chệch hướng và gây khó khăn
nặng nề cho việc phân tích thiết kế.
Công việc khảo sát không chỉ tập trung hoàn toàn
vào giai đoạn đầu của quá trình phân tích thiết kế,
mà có thể chạy dài trong suốt quá trình này để thu
thập thêm thông tin, đào sâu vấn đề hay kiểm chứng
một giả thiết cùng với người sử dụng khi hệ thông
tin cần xây dựng quá lớn và phức tạp, ta nên chia nó
thành nhiều tiểu hệ. Mỗi tiểu hệ có thể được khảo
sát, phân tích hay thiết kế độc lập với nhau, trước
khi được tập hợp lại .
Để chia một hệ thông tin thành nhiều tiểu hệ,
người ta thường sử dụng một trong hai phương pháp
tiếp cận sau đây:
149
- Phương pháp 1: Các tiểu hệ độc lập được định
ra, dựa trên cơ sở những bài toán , chức năng nghiệp
vụ chủ yếu của tổ chức. Đôi khi dựa trên một kế
hoạch thực hiện theo thứ tự ưu tiên hay để thoả
những yêu cầu về thời gian.
- Phương pháp 2: Một cuộc khảo sát tổng quát
sơ khởi sẽ cho phép nhận diện những tiểu hệ tương
đối độc lập với nhau.
Tiếp theo đó chúng ta tiến hành thu thập thông
tin về hệ thống cần xây dựng
Công việc này chủ yếu là tham khảo tài liệu và
tiếp xúc với những người sử dụng, đòi hỏi những
khả năng như óc quan sát, kinh nghiệm, tài giao tiếp
và ứng biến... Các phương pháp gò bó, cứng nhắc sẽ
chẳng đem lại kết quả mong muốn. Do đó, phần này
chỉ liệt kê và phân loại các thông tin có thể gặp
được trong quá trình khảo sát, xem như để trợ giúp
trí nhớ.
Trong quá trình thu thập thông tin thông thường
ta tập hợp các dữ liệu sau
- Dữ liệu về hệ thông tin hiện tại bao gồm các
dữ liệu liên quan trực tiếp đến hệ thông tin theo mọi
dạng (tĩnh, động, biến đổi) và thông tin về môi
trường làm việc
150
- Dữ liệu về hệ thống tương lai bao gồm các
nhu cầu, mong muốn cho hệ thông tin của ta. Trong
các dữ liệu này ta cần phân biệt những vấn đề đã
được nhận thức và phát biểu rõ ràng, những vấn đề
được nhận thức nhưng chưa được công nhận, những
vấn đề còn chưa nhận thức và còn đang tranh luận.
Với mỗi loại dữ liệu cần thu thập đã nêu trên,
nếu cần ta còn có thể tìm hiểu thêm về một số khía
cạnh khác như: số lượng, độ chính xác cần có, ai là
người có trách nhiệm...
Nhận xét:
- Nếu có thể, các cuộc phỏng vấn phải được
tiến hành tuần tự theo cấu trúc phân cấp của tổ chức
theo từng bộ phận, lĩnh vực, chức năng hay đi từ cấp
lãnh đạo qua cấp quản lí đến những người thừa
hành.
- Phải luôn nhớ sao chụp mẫu các hồ sơ, tài liệu,
để có được cấu trúc chính xác các thông tin làm căn
bản cho việc xây dựng mô hình dữ liệu sau này.
- Cần thiết nhất là luôn phân biệt những thông
tin nói về hệ thông tin đang xây dựng với những
thông tin thuộc về hệ này
Các thông tin thu thập, sau khi được tổng hợp sẽ
được trình bày dưới hai dạng:
151
a. Mô tả các bài toán nghiệp vụ, các chức năng
và tổ chức của cơ quan, các nhu cầu và mong muốn
của người sử dụng một cách đầy đủ, nhưng ngắn
gọn và mạch lạc, bằng một ngôn ngữ thông thường,
gần gũi với mọi người.
b. Minh hoạ và hệ thống hoá phần trình bày trên
bằng một ngôn ngữ hình thức, thường là dưới dạng
phiếu mô tả, danh sách và đồ hoạ.
Trên thực tế có nhiều phương pháp trình bày
thông dụng khác nhau,
6.3. Thiết kế mô hình dữ liệu
Thiết kế một mô hình khái niệm dữ liệu là liệt
kê và định nghĩa chính xác những dữ liệu có liên quan
đến các chức năng, hoạt động của một tổ chức. Sau
đó ta nhóm chúng lại thành thực thể và quan hệ giữa
các thực thể, rồi dùng một số qui ước đã định trước
để trình bày dưới dạng mô hình khái niệm.
6.3.1. Kiểm kê dữ liệu
Danh sách này chủ yếu được rút từ những thông
tin thu thập được trong giai đoạn khảo sát ban đầu;
tài liệu thu thập được; nhu cầu, giải thích của người
sử dụng.
Có thể phân biệt hai kiểu dữ liệu:
152
- Loại dữ liệu xuất hiện trực tiếp trên các tài
liệu, màn hình, tập tin thu thập được.
- Loại dữ liệu không xuất hiện nhưng cần thiết
để chứa kết quả trung gian, các thông tin đang chờ
đựơc xử lý, hay để tính toán các dữ liệu thuộc loại
thứ nhất.
Một công cụ thông dụng, hữu ích cho giai đoạn
này là bảng, dùng để phân tích các tài liệu thu thập
và liệt kê ra danh sách các dữ liệu. Trong bảng này, ta
trình bày mỗi cột là một tài liệu và mỗi hàng là một
loại dữ liệu. Tại mỗi ô giao điểm, ta đánh dấu khi
loại dữ liệu có xuất hiện trên tài liệu. Nên dùng hai
loại dấu khác nhau để phân biệt loại dữ liệu trực
tiếp với loại được tính toán thành.
Khi xây dựng bảng này, ta nên bắt đầu bằng
những tài liệu cơ bản, quan trọng nhất và chỉ cần
trình bày một loại tài liệu khi nó cho phép nhận dạng
ít nhất một loại dữ liệu mới.
Ví dụ: Trong một công ty có:
- Kho hàng làm nhiệm vụ lưu giữ và quản lí
hàng hoá và khi cần thì đề nghị mua thêm hàng
- Phòng đặt hàng có nhiệm vụ làm đơn đặt hàng
gửi cho các công ty cung cấp
- Phòng kế toán lưu bản sao đơn đặt hàng để
kiểm tra hàng.
153
Ta dùng 1 để đánh dấu dữ liệu trực tiếp và 2 cho
dữ liệu được tính toán.
Tài liệu Phiếu Đơn Phiếu Tệp tin
Loại dữ đề nghị đặt giao về nhà
liệu đặt hàng hàng cung cấp
hàng
Tên kho 1
Địa chỉ kho 1
Ngày đề 1
nghị đặ t
hàng
Số lượng 1
hàng cần
đặt
Mã số sản 1 1 1
phẩm
Nhãn hiệu 1 1 1
sản phẩm
Mã số của 1 1 1
công ty
cung cấp
Tên công ty 1 1 1
cung cấp
154
Địa chỉ công 1 1 1
ty cung cấp
Đơn giá sản 1 1 1
phẩm
Ngày đặ t 1
hàng
Số lượng 1
hàng đặt
mua
Tổng giá 2
đơn đặ t
hàng
Ngày giao 1
hàng
Số lượng 1
hàng được
giao
Tổng giá 2
hàng được
giao
Từ danh sách này, người ta cần kiểm tra bằng
một số công tác thanh lọc như sau:
155
- Bỏ bớt các dữ liệu đồng nghĩa nhưng khác tên,
chỉ giữ lại một.
Ví dụ: Mã số sản phẩm = danh mục mặt hàng
- Phân biệt các dữ liệu cùng tên nhưng khác
nghĩa thành nhiều loại dữ liệu khác nhau.
Ví dụ: Giá bán của một cửa hiệu khác với giá
bán của công ty sản xuất.
- Nhập chung các loại dữ liệu luôn luôn xuất
hiện đồng thời với nhau trên mọi loại tài liệu thành
một loại dữ liệu sơ cấp.
Ví dụ: số nhà và tên đường; ngày, tháng và năm
sinh.
- Loại bỏ những loại dữ liệu có thể được xác
định một cách duy nhất từ các loại dữ liệu khác,
hoặc bằng công thức tính toán, hoặc do các qui luật
của tổ chức
Ví dụ: Tổng giá đơn đặt hàng = Số lượng hàng*
Đơn giá
Giả sử do qui luật của tổ chức, mọi đề nghị mua
hàng phải được giải quyết nội trong ngày, ta suy ra:
Ngày đề nghị mua hàng = Ngày đặt hàng.
6.3.2. Định các phụ thuộc hàm giữa các dữ liệu
156
Từ danh sách dữ liệu đã được thanh lọc của hệ
thông tin đạt được qua giai đoạn trên, ta phải định ra
tất cả các phụ thuộc hàm có giữa chúng .
Cụ thể, ta phải tự đặt câu hỏi: Mỗi giá trị của
một loại dữ liệu A có tương ứng với một giá trị duy
nhất của loại dữ liệu B hay không?
Nếu câu trả lời là "Có" thì B phụ thuộc hàm vào
A: A → B
Ngoài các phụ thuộc hàm có vế trái A là một loại
dữ liệu sơ cấp ( gọi là phụ thuộc hàm sơ cấp) tương
đối dễ xác định, ta còn phải nhận diện cả các phụ
thuộc hàm trong đó vế trái A là một tập hợp của
nhiều loại dữ liệu (gọi là phụ thuộc hàm đa phần).
Trong trường hợp này, ta nên tự đặt câu hỏi: Cần ấn
định giá trị của những loại dữ liệu nào để có thể suy
ra một giá trị duy nhất của loại dữ liệu B? Các phụ
thuộc hàm sẽ được trình bày dưới dạng một bảng
như sau:
Loại dữ liệu Phụ thuộc hàm Phụ
thuộc hàm
157
sơ cấp
đa phần
Mã số của công ty cung
cấp ...............................................................................
Tên công ty cung
cấp..................................................................................
...........
Địa chỉ công ty cung
cấp..................................................................................
.....
Tên
kho ..................................................................................
.................................
Địa chỉ
kho...................................................................................
............................
Ngày đề nghi đặt
hàng ................................................................................
..........
Ngày đặt
hàng ................................................................................
........................
Ngày giao
hàng ................................................................................
......................
158
Đơn giá sản
phẩm ..............................................................................
....................
Mã số sản
phẩm ..............................................................................
.......................
Nhãn hiệu sản
phẩm...............................................................................
...............
Số lượng hàng cần
đặt ..................................................................................
........
Số lượng hàng đặ t
mua .................................................................................
.......
Số lượng hàng được
giao .................................................................................
....
6.3.3. Xây dựng mô hình dữ liệu
Giai đoạn này bao gồm 5 động tác:
- Định tập hợp các khoá chính
- Nhận diện các thực thể
- Nhận diện các quan hệ
159
- Phân bổ các thuộc tính còn lại
- Vẽ sơ đồ khái niệm dữ liệu
6.3.3.1. Xác định tập hợp các khoá chính
Tập hợp K của những khoá chính là tập hợp tất
cả những loại dữ liệu đóng vai trò nguồn (thuộc vế
trái ) trong ít nhất một phụ thuộc hàm.
Trong ví dụ trên ta có : K =
{'Mã số công ty cung cấp'
'Tên kho'
'Ngày đề nghi đặt hàng'
'Ngày đặt hàng'
'Ngày giao hàng'
'Mã số sản phẩm'}
6.3.3.2 Nhận diện các thực thể
Mỗi phần tử của tập hợp K sẽ là khoá chính của
một thực thể
Trong ví dụ trên, ta nhận ra được 4 thực thể:
'Nhà cung cấp' với khoá chính là 'Mã số của công
ty cung cấp'
'Kho' với khoá chính là 'Tên kho'
'Lịch' với khoá chính là 'Ngày'
160
(các thực thể 'Lịch đặt hàng', 'Lịch đề nghi mua
hàng' và 'Lịch giao hàng' hoàn toàn tương đương với
nhau nên được gộp thành một thực thể duy nhất là
'Lịch')
'Sản phẩm' với khoá chính là 'Mã số sản phẩm'
6.3.3.3 Nhận diện các quan hệ
Có 2 trường hợp :
a. Nếu gốc của một phụ thuộc hàm bao gồm ít
nhất 2 phần tử thuộc tập hợp K thì nó tương ứng với
một quan hệ N - P giữa các thực thể có khoá chính là
các phần tử này.
Trong ví dụ trên, ta nhận ra được 4 quan hệ :
'Đơn giá của nhà cung cấp'
'Dòng đề nghị mua hàng'
'Dòng đơn đặt hàng'
'Dòng phiếu giao hàng'
b. Một phụ thuộc hàm giữa 2 phần tử của tập
hợp K xác định một quan hệ nhị nguyên kiểu 1-N
giữa hai thực thể có khoá chính là các phần tử này.
6.3.3.5. Vẽ sơ đồ khái niệm dữ liệu
Từ các thực thể và quan hệ đã nhận diện, ta có
thể vẽ lên một sơ đồ khái niệm dữ liệu sau:
161
Lịch
0,n
Nhà cung cấp Kho
0,n 1,n 1,n 1,n
1,n
1,n 0,n
Dòng đơn Giá Dòng đơn
Dòng đề nghị
giao hàng cung cấp đặt hàng
mua hàng
1,n 1,n 1,n 1,n
1,n
162
Sản phẩm
6.3.4 Xây dựng mô hình dữ liệu bằng trực giác
Phương pháp phân tích hệ thống nêu trên là một
công cụ hữu hiệu và chuẩn xác để xây dựng phần
lớn các loại mô hình dữ liệu. Nhưng nếu áp dụng
hoàn toàn trong một hệ thông tin cỡ lớn sẽ đòi hỏi
nhiều thời gian và công sức. Trong thực tế, các thiết
kế viên kinh nghiệm, sau khi đã nhận thức được vấn
đề qua khảo sát thường chọn cách xây dựng trực tiếp
một mô hình sơ khởi rồi đi thẳng vào giai đoạn sau
để kiểm soát và chuẩn hoá mô hình .
Phương pháp trực giác này có ưu điểm là ít tốn
thời gian và đôi khi tạo ra những mô hình đơn giản
và gần thực tế hơn. Nhưng ngược lại, nó chứa nhiều
rủi ro hơn.
6.4. Kiểm soát và chuẩn hoá mô hình
Để đơn giản hoá và đồng thời đảm bảo tính
nhất quán của mô hình dữ liệu, ta cần kiểm soát lại
mô hình vừa xây dựng bằng một số qui tắc thực tiễn
sau đây:
6.4.1 Chuẩn hoá mô hình
Chú ý việc chuẩn hoá toàn bộ mô hình dữ liệu
thành các dạng BCNF không phải là bắt buộc. Tuy
163
vậy các dạng 1FN, 2FN, 3NF nên luôn được thực
hiện.
6.4.2 Tạo thêm một thực thể
Việc tạo thêm một thực thể là cần thiết khi có ít
nhất một quan hệ đang được xử lý liên quan tới nó.
Việc tạo thêm một thực thể là hợp lí khi:
a) Thuộc tính sẽ được chọn làm khoá chính của
thực thể này là một loại dữ liệu thông dụng trong
hoạt động của tổ chức đang khảo sát.
b) Ngoài khoá chính này, quan hệ còn có chứa
những thuộc tính khác .
6.4.3. Biến một quan hệ thành thực thể
Một quan hệ có kích thước lớn hơn 3 nên được
biến thành thực thể để đơn giản hoá.
Có thể biến một quan hệ thành thực thể khi hội
đủ các điều kiện sau:
- Quan hệ này có một khoá chính độc lập
- Quan hệ này tương ứng với một khái niệm
quen thuộc, thông dụng trong hoạt động của tổ chức.
1,n 1,n
Thầy R Môn học
0,n
Ngày giờ
164
Quan hệ R được biến thành thực thể 'Thời khoá
biểu':
1,n 1,1 1,1
1,n
Thời khoá
Thầy R1 biểu R2 Môn học
1,1
R3
0,n
Ngày giờ
6.4.4 Xoá một quan hệ
Một quan hệ 1 - N phải được loại bỏ khỏi mô
hình dữ liệu nếu nó là tổng hợp của 2 hay nhiều
quan hệ 1 - N khác.
1,n 1,1 1,n
1,1
165
Trường
Gồm
Học sinh
Học lớp Môn học
1,n
1,1
Học trường
Ta loại bỏ quan hệ Học trường
6.4.5 Phân tách một quan hệ phức tạp
Xét một quan hệ có kích thước lớn hơn hoặc
bằng 3. Quan hệ có thể được phân tách thành nhiều
quan hệ khác với kích thước nhỏ hơn mà không mất
thông tin nếu tồn tại ít nhất một phụ thuộc hàm giữa
các thực thể cấu thành quan hệ.
6.4.5.1 Trường hợp phụ thuộc hàm ẩn
Trong trường hợp này, một trong các bản số của
quan hệ bằng (1,1) hoặc (0,1). Điều này chứng tỏ sự
tồn tại của một số phụ thuộc hàm ẩn.
Ví dụ:
Bác sỹ Bệnh nhân Toa thuốc
0,n 0,n
1,1
166
Khám bệnh
Sơ đồ 1
1,n 1,1
Bác sỹ Bệnh nhân Dùng Toa thuốc
1,n
1,1
Cho toa
Sơ đồ 2
Chúng ta chọn sơ đồ 2
6.4.5.2. Trường hợp phụ thuộc hàm hiện
Cho một quan hệ R giữa 3 thực thể A, B, và
C. Nếu tồn tại một hàm phụ thuộc A →B thì R có
thể được phân thành quan hệ giữa A với B và
giữa B với C.
Trong ví dụ sau đây, phụ thuộc hàm Hoá đơn
→ Khách hàng (mỗi hoá đơn chỉ liên quan đến
một khách hàng duy nhất) cho phép ta đưa vào
một quan hệ mới để diễn tả sự phụ thuộc này
và đơn giản hoá mô hình.
Sản phẩm Khách hàng Hoá đơn
167
0,n 0,n
1,n
Dòng hoá đơn
Sơ đồ 1
0,n 1,1
Sản phẩm Khách hàng Liên quan Hoá đơn
0,n
1,n
Dòng hoá đơn
Sơ đồ 2
Chúng ta chọn sơ đồ 2 đơn giản hơn.
Chương 7
Thuật toán và độ phức tạp
7.1. Khái niệm thuật toán
Nếu cho trước một bài toán, thì một cách giải
bài toán được phân định ra thành một số hữu
hạn bước, có kết thúc cuối cùng gọi là thuật
toán.
168
Khi giải bài toán sẽ nẩy sinh ra các vấn đề
sau:
- Độ phức tạp bài toán. Mỗi bài toán có độ
phức tạp khác nhau.
- Một bài toán có nhiều thuật toán giải nó.
- Dùng nhiều ngôn ngữ lập trình để cài đặt
phần mềm cho một thuật toán
- Có thể dùng nhiều cấu trúc dữ liệu cho một
thuật toán.
Một số sai sót cơ bản khi giải bài toán:
- Hiểu sai bài toán.
- Tìm sai thuật toán.
- Do không hiểu ngôn ngữ lập trình nên có
nhầm lẫn.
- Bản thân dữ liệu quét không hết trường
hợp.
- Yêu cầu giải quyết bài toán.
- Phần mềm dễ sử dụng .
- Tốc độ tính toán nhanh .
- Bộ nhớ phù hợp .
Trong đó tính dễ sử dụng là một yêu cầu cơ
bản nhất.
169
7.2. Độ phức tạp thuật toán
Khái niệm thuật toán chính xác liên quan đến
các khái niệm máy Turing, hàm đệ qui, thuật toán
Marcop, ngôn ngữ hình thức của N.Chomsky.
Những khái niệm này không nằm trong khuôn
khổ Giáo trình này. Chúng tôi trình bày một khái
niệm quan trọng liên quan trực tiếp đến thuật
toán. Đó là độ phức tạp thuật toán. Nhờ có khái
niệm này chúng ta có thể đánh giá và so sánh
được các thuật toán với nhau. Hay nói một cách
khác, chúng ta có thể có công cụ đo, để lựa chọn
một thuật toán tốt cho lời giải bài toán cần giải
quyết. Thông thường chúng ta có hai loại đánh
giá: Một là độ phức tạp về thời gian tính của
thuật toán, hai là độ phức tạp về phạm vi bộ
nhớ dùng cho thuật toán. Đối với một thuật toán,
thời gian tính và phạm vi bộ nhớ cần dùng
thường mâu thuẫn nhau. Có nghĩa là, nếu thời
gian tính của thuật toán là ngắn thì thông thường
phạm vi bộ nhớ dùng cho thuật toán đó lại lớn.
Mà chúng ta lại muốn chọn một thuật toán thời
gian tính thì ngắn và bộ nhớ dùng cũng nhỏ. Như
vậy, trong từng trường hợp cụ thể, chúng ta sẽ
quyết định chọn lựa thuật toán nào. Trong phạm
vi Giáo trình này chúng ta chỉ trình bày về độ
phức tạp thời gian tính. Đó là độ phức tạp
thường được đề cập nhiều nhất. Đồng thời,
170
trong phạm vi giới hạn của giáo trình, chúng ta
cũng chỉ trình bày độ phức tạp của thuật toán
theo góc độ tin học.
Giả sử T là thuật toán giải quyết bài toán A.
Chúng ta gọi T(n) là độ phức tạp thời gian của
thuật toán T. Thông thường T(n) được biểu diễn
dưới dạng sau: T(n) = O(g(n)). Trong đó hàm g(n)
là cấp của T(n); n là độ dài thông tin đưa vào.
Ví dụ: T(n) = O(n2)
Chúng ta hiểu f(n) = O(g(n)), nếu ∃ hằng số
C và số nguyên n0.
Sao cho:
∀n ≥ n0 ta luôn có: f(n) ≤ Cg(n)
(Nói cách khác là g(n) là hàm chặn trên của
f(n) từ một chỉ số nào đó trở đi).
Rõ ràng, trong quá trình đánh giá thuật toán,
nếu có g(n) nhỏ nhất thì đó là sự đánh giá chính
xác nhất.
Có thể thấy rằng, bài toán tìm g(n) nhỏ nhất
khá phức tạp.
Bây giờ, chúng ta đưa ra độ phức tạp thời
gian là hàm nhiều biến. Giả sử T(n1,... , nk ) là độ
phức tạp thời gian của thuật toán T và T(n1,... ,
nk) = O(g(n1,....nk)). Khi đó chúng ta hiểu rằng tồn
171
tại các số C , n01...n0k sao cho với mọi n1 ≥ n01, ....,
nk ≥ n0k
T(n1,...,nk) ≤ Cg(n1,..., nk)
Ví dụ: Đầu vào là R = {a1,....., an},
r = {h1,..., hm}
Chúng ta có T(n,m) = O(g(n,m))
Trong trường hợp có nhiều đối số thì phức
tạp thời gian được tính theo đối số có giá trị lớn
nhất.
Ví dụ: T(n,m) = O(n2+2m). Khi đó độ phức
tạp thời gian của thuật toán T là hàm số mũ.
Việc đánh giá như trên gọi là độ phức tạp
thời gian tồi nhất.
Trong thực tế có nhiều cách đánh giá độ
phức tạp thời gian. Ví dụ như độ phức tạp thời
gian trung bình. Độ phức tạp này gắn với nhiều
độ đo khác nhau (độ đo xác suất). Giáo trình này
đánh giá độ phức tạp thời gian theo cách tồi nhất
(tìm g(n) chặn trên).
- Giả sử một độ phức tạp thuật toán chia làm
nhiều đoạn, mỗi đoạn có độ phức tạp tương ứng
là T1(n),...,Tq(n).
Khi đó chúng ta đặt T(n) = O (max(T1(n),...,
Tq(n)).
172
- Nếu Ti là hàm nhiều biến: T1 (n1,...,nm), ...,
Tq(n1,...,nm), thì lúc đó T1(n1,..., nm) = O
(max(T1(n1,..., nm),..., Tq(n1,..., nm)).
- Giả sử T là thuật toán giải quyết bài toán A.
Ta chia hai khúc T1 và T2 và T2 lồng trong T1.
Khi đó T(n) = O(T1(n). T2(n)).
Ví dụ: x:= 3;
x:= x + 1.
Dễ thấy độ phức tạp T(n) = O(c) ( hay O(1)).
Ví dụ: x:= 3;
For i:= 1 to n do x:= x+1
Thì: T(n) = O(cn).
Ví dụ: For i: = 1 to n do
For j: = 1 to n do x:= x+1
T(n) = O(c.n.n) = O (c.n2)
Trong trường hợp thuật toán có các đoạn
lồng thắt vào nhau thì độ phức tạp là tích (Thể
hiện bài toán có những toán tử lặp chu trình).
- Trong thuật toán chia thành nhiều đoạn. Có
đoạn lồng thắt của đoạn khác: tính tích, có đoạn
rời rạc: tính max.
173
Thông thường người ta chia các bài toán
thành ba lớp. Đó là lớp bài toán được giải quyết
bằng một thuật toán có độ phức tạp là hàm mũ,
lớp bài toán NP - đầy đủ và lớp bài toán được
giải quyết bằng một thuật toán có độ phức tạp
là hàm đa thức.
- Đối với lớp bài toán được giải bằng thuật
toán là hàm mũ và lớp bài toán NP - đầy đủ
(Thường gọi là các bài toán không khả thi) thực
tế trong tin học các bài toán này không có khả
năng thực hiện vì thời gian tính quá lớn. Khi đó,
chúng ta phải tách bài toán thành các dạng riêng
biệt, và cố gắng đưa nó về lớp bài toán có độ
phức tạp là hàm đa thức.
- Đối với các bài toán được giải bằng thuật
toán có độ phức tạp là hàm đa thức, chúng ta cố
gắng giảm số mũ k xuống (gần sát tuyến tính
(mũ 1)).
Để hạ k (tăng tốc độ) thông thường người ta
dùng cấu trúc dữ liệu, sử dụng ngôn ngữ gần
ngôn ngữ máy.
Thông thường người ta coi các thông số vào
(input) bình đẳng với nhau.
174
Tài liệu tham khảo
[1] Armstrong W.W. Dependency Structures of
Database Relationships. Information Processing 74,
Holland publ. Co. (1974), 580-583.
[2] Beeri C. Bernstein P.A. Computational
problems related to the design of normal form
relational schemas. ACM trans on Database Syst. 4.1
(1979), 30-59
[3] Beeri C. Dowd M., Fagin R.. Staman R. On the
structure of Armstrong relations for Functional
Dependencies . J.ACM 31,1 (1984), 30-46.
[4] Codd E. F. A relational model for large
shared data banks. Communications ACM 13 (1970 ),
377-387.
175
[5] Demetrovics J., Logical and structural
Investigation of Relational Datamodel. MTA -
SZTAKI Tanulmanyok, Budapest, 114 (1980), 1-97.
[6] Demetrovics J., Libkin, L. Functional
dependencies in relational databases : A Lattice point
of view. Discrete Aplied Mathematics 40 (1992), 155-
185.
[7] Demetrovics J., Thi V.D. Some results about
functional dependencies. Acta Cybernetica 8,3 (1988),
273-278.
[8] Demetrovics J., Thi V.D. Relations and
minimal keys. Acta Cybernetica 8,3 (1988), 279-285.
[9] Demetrovics J., Thi V.D. On keys in the
Relational Datamodel. Inform. Process Cybern. EIK
24, 10 (1988), 515 - 519
[10] Demetrovics J., Thi V.D. Algorithm for
generating Armstrong relations and inferring functional
dependencies in the relational datamodel. Computers
and Mathematics with Applications. Great Britain.
26,4(1993), 43 - 55.
[11] Demetrovics J., Thi V.D. Some problems
concerning Keys for relation Schemes and Relationals
in the Relational Datamodel. Information Processing
Letters. North Holland 46,4(1993),179-183
176
[12] Demetrovics J., Thi. V.D. Some
Computational Problems Related to the functional
Dependency in the Relational Datamodel. Acta
Scientiarum Mathematicarum 57, 1 - 4 (1993), 627 -
628.
[13] Demetrovics J., Thi V.D. Armstrong
Relation, Functional Dependencies and Strong
Dependencies. Comput. and AI. (submited for
publication).
[14] Demetrovics J., Thi V.D. Keys, antikeys and
prime attributes. Ann. Univ. Scien. Budapest Sect.
Comput. 8 (1987), 37 - 54.
[15] Demetrovics J., Thi V.D. On the Time
Complexity of Algorithms Related to Boyce-Codd
Normal Forms. J. Serdica, the Bulgarian Academy of
Sciencies, No.19 (1993), 134 - 144.
[16] Demetrovics J., Thi V.D. Generating
Armstrong Relations for Relation schemes and
Inferring Functional Dependencies from Relations.
International Jounal on Information Theories and
Applications, ITA-93, 1, 4 (1993), 3 - 12.
[17] Demetrovics J., Thi V.D. Some problems
concerning Armstrong relations of dual schemes and
177
relation schemes in the relational datamodel. Acta
Cybernetica 11, 1-2 (1993), 35 - 47.
[18] Demetrovics J., Thi V.D. Normal Forms and
Minimal Keys in the Relational Datamodel. Acta
Cybernetica Vol. 11,3 ( 1994), 205 - 215.
[19] Demetrovics J., Thi, V.D. Some results about
normal forms for functional dependency in the
relational datamodel. Discrete Aplied Mathematics 69
(1996), 61 - 74.
[20] Garey M.R., Johnson D.S Computers and
Intractability: A Guide to theory of NP - Completeness.
Bell Laboratories. W.H Freeman and Company. San
Francisco 1979.
[21] Gottlob G. Libkin L. Investigations on
Armstrong relations dependency inference, and
excluded functional dependencies. Acta Cybernetica
Hungary IX/4 (1990), 385 - 402.
[22] Jou J.H, Fischer P.C. The complexity of
recognizing 3NF relation schemes . IPL 14 (1982),
187 - 190.
[23] * Libkin L. Direct product decompositions of
lattices, closures and relation schemes. Discrete
Mathematics, North-Holland, 112 (1993), 119-138.
178
[24] Lucchesi C.L., Osborn S.L. Candidate keys
for relations. J. Comput. Syst. Scien 17,2 (1978), 270 -
279
[25] Maier D. Minimum covers in the relational
database model. JACM 27,4 (1980), 664 - 674.
[26] * Mannila H., Raiha K.J. Algorithms for
inferring functional dependencies from relations. Data
and Knowledge Engineering, North - Holland, V. 12,
No. 1 ( 1994 ), 83 - 99.
[27] * Mannila H., Raiha K.J. On the complexity
of inferring functional dependencies. Discrete Applied
Mathematics, North - Holland, 40 ( 1992 ), 237 - 243.
[28] * Thalheim B. The number of keys in
relational and nested relational databases. Discrete
Applied Mathematics, North - Holland, 40 (1992), 265
- 282.
[29] Thi V.D. Investigation on Combinatorial
Characterizations Related to Functional Dependency in
the Relational Datamodel. MTA-SZTAKI
Tanulmanyok. Budapest, 191 (1986), 1 - 157. Ph.D.
dissertation.
[30] Thi V.D. Minimal keys and Antikeys. Acta
Cybernetica 7.4 (1986), 361 - 371
[31] Thi V.D. Minimal keys and Antikeys. Acta
Cybernetica 7, 4 (1986), 361 - 371.
179
[32] Thi V.D. Strong dependencies and s-
semilattices. Acta Cybernetica 7, 2 (1987), 175 - 202.
[33] Thi V.D. Logical dependencies and
irredundant relations. Computers and Artificial
Intelligence 7 (1988), 165 - 184.
[34] Thi V.D., Anh N.K. Weak dependencies in
the relational datamodel. Acta Cybernetica 10, 1-2
(1991), 93 - 100.
[35] Thi V.D., Thanh L.T. Some remark on
Functional Dependencies in the relational Datamodel J.
Acta Cybernetica, Hungary Vol. 11, 4 (1994), 345 -
352.
[36] Thi V.D. On the equivalent descriptions of
family of functional dependencies in the relational
datamodel. J. Computer Science and Cybernetic,
Hanoi Vietnam, Vol 11, 4 (1995), 40 - 50.
[37] Thi V.D. Some Computational problems
related to normal forms. J. Computer Science and
Cybernetic, Hanoi Vietnam, Vol 13, 1 (1997), 53 - 65.
[38] Thi V.D. On the nonkeys. J. Computer
Science and Cybernetic, Hanoi Vietnam, Vol 13, 1
(1997), 11 - 15.
[39] Thi V.D. Some results about hypergraph. J.
Computer Science and Cybernetic, Hanoi Vietnam,
Vol 13, 2 (1997), 8 - 15.
180
[40] Tsou D.M., Fischer P.C. Decomposition of a
relation scheme into Boyce-Codd normal form.
SIGACT NEWS 14 (1982), 23 - 29.
[41] Ullman J.D. Principles of database and
knowledgw base systems. Computer Science Press,
Second Edition (1992).
[42] Yannakakis M., Paradimitriou C. Algebraic
dependencies. J. Comp. Syst. Scien. 25 (1982), 2 - 41.
[43] Yu C.T., Johnson D.T. On the complexity of
finding the set of candidate keys for a given set of
functional dependencies. IPL 5, 4 (1976), 100 - 101.
[44] Zaniolo C. Analysis and design of relational
schemata for database systems. Ph. D. UCLA (1976).
[45] Collongues A., Hugues J., Laroche B.
MERISE - Phương pháp thiết kế hệ thống thông tin
tin học hoá phục vụ quản lí doanh nghiệp (Bản
dịch ). Nhà xuất bản Khoa học kĩ thuật, 1994.
[46] Hồ Sĩ Khoa. Các phương pháp xây dựng các
mô hình khái niệm dữ liệu
[47] Các tài liệu hướng dẫn sử dụng hệ MEGA
[48] Demetrovics J., Denev. , Pavlov R. Cơ sở
toán của khoa học tính toán. Hungary, 1985.
181
Mục lục
Trang
Chương mở đầu 9
Chương 2
Các kiến thức cơ bản về cơ sở dữ liệu
2.1. Khái quát về mô hình dữ liệu
2.2. Các khái niệm cơ bản và hệ tiên đề Armstrong
2.3. Họ phụ thuộc hàm và các mô tả tương đương
2.4. Các thuật toán liên quan đến các khoá
2.5. Mối liên hệ giữa quan hệ Armstrong và sơ đồ
quan hệ
Chương 3
Các dạng chuẩn
và các thuật toán liên quan
3.1. Các khái niệm chung
182
3.2. Dạng chuẩn 2 ( 2NF )
3.3. Dạng chuẩn 3 ( 3NF )
3.4. Dạng chuẩn Boyce - Codd ( BCNF )
3.5. Các thuật toán liên quan
3.6. Dạng chuẩn của các hệ khoá
3.7. Ví dụ
Chương 4
Các phép toán xử lí bảng
4.1. Các phép toán cơ bản
4.2. Các phép toán khác
4.3. Các ví dụ
Chương 5
Một số áp dụng mô hình dữ liệu trong các hệ quản
trị cơ sở dữ liệu ( QTCSDL) hiện có
5.1. Mô tả chung
5.2. Những khái niệm cơ bản
5.3. Mối quan hệ giữa các thực thể
5.4. Các dạng chuẩn trong các hệ QTCSDL hiện có
Chương 6
183
Một số công đoạn xây dựng
các dự án thiết kế tổng thể các hệ thống
cơ sở dữ liệu hiện nay
6.1. Khảo sát thông tin
6.2. Thiết kế mô hình dữ liệu
6.3. Kiểm soát và chuẩn hoá mô hình
Chương 7
Thuật toán và độ phức tạp
7.1. Khái niệm thuật toán
7.2. Độ phức tạp thuật toán
Tài liệu tham khảo
184
Top Download Cơ Sở Dữ Liệu
-
-
57p 435 211
-
Giáo trình: Cơ sở dữ liệu quan hệ (Phạm Đức Nhiệm)
101p 11662 3743
-
-
-
Tổng hợp những câu lệnh SQL cơ bản
16p 452 252
-
Giáo Trình Cơ Sở Dữ Liệu - Phan Tấn Quốc
114p 1461 869
-
-
23p 337 222
-
Giáo trình cơ sở dữ liệu - Vũ Đức Thi
180p 788 638
Tài Liệu Cơ sở dữ liệu Mới Xem thêm » Tài Liệu mới cập nhật Xem thêm »

markdown:
180 trang
Lượt xem: 971
Download: 376
# Giáo trình cơ sở dữ liệu - PGS.TS. Vũ Đức Thi
Chia sẻ:
[khuongthan0081](http://tailieu.vn/user/khuongthan0081)
Trong bài giảng này chúng tôi cung cấp cho sinh viên những kiến thức cơ bản nhất về cơ sở dữ liệu. Mục tiêu chính là với số kiến thức cơ bản này sinh viên có thể ứng dụng các kiến thức về cơ sở dữ liệu vào thực tiễn và tiếp tục nghiên cứu học tập được các môn tin học khác.
![](images/graphics/blank.gif)
![](images/graphics/blank.gif)
## Thể loại:
[Công Nghệ Thông Tin](http://tailieu.vn/cong-nghe-thong-tin/)» [Cơ sở dữ liệu](http://tailieu.vn/cong-nghe-thong-tin/co-so-du-lieu/)
## Chủ đề liên quan:
**Nội dung Text: Giáo trình cơ sở dữ liệu - PGS.TS. Vũ Đức Thi**
Giáo trình cơ sở dữ liệu
Bài Giảng
Hà Nội
5
Lời nói đầu
Cơ sở dữ liệu là một lĩnh vực phát triển mạnh
của công nghệ thông tin. Cùng với sự phát triển công
nghệ thông tin ở nước ta, việc sử dụng các kiến thức
về cơ sở dữ liệu vào thực tiễn ngày càng trở lên cần
thiết.
Trong bài giảng này chúng tôi cung cấp cho sinh
viên những kiến thức cơ bản nhất về cơ sở dữ liệu.
Mục tiêu chính là với số kiến thức cơ bản này sinh
viên có thể ứng dụng các kiến thức về cơ sở dữ
liệu vào thực tiễn và tiếp tục nghiên cứu học tập
được các môn tin học khác.
Giáo trình gồm 4 chương chính (Ngoài chương
mở đầu và tài liệu tham khảo ).
Chương 2 cung cấp cho sinh viên những kiến
thức cơ bản về cơ sở dữ liệu, mà cụ thể là về cơ sở
dữ liệu quan hệ. Trong chương này, chúng tôi trình
bày những khái niệm cơ bản nhất của cơ sở dữ liệu
quan hệ, cũng như những thuật toán thiết kế chúng.
Chương 3 trình bày các kiến thức liên quan đến
các dạng chuẩn.
Chương 4 giới thiệu các phép toán xử lí các bảng
( quan hệ ).
Chương 5 và chương 6 là các chương trình bày
các ứng dụng của cơ sở dữ liệu vào thực tiễn.
6
Trong chương 5 chúng tôi nêu một số các ứng dụng
của cơ sở dữ liệu trong các hệ quản trị cơ sở dữ liệu
hiện có. Trong đó có những vấn đề liên quan đến các
thực thể, các khoá, các dạng chuẩn trong các hệ
quản trị cơ sở dữ liệu.
Chương 6 trình bày một số các công đoạn xây
dựng các dự án thiết kế tổng thể các hệ thống thông
tin.
Trong chương 7, chúng tôi trình bày một số các
kiến thúc cơ bản về thuật toán và độ phức tạp thuật
toán. Những kiến thức này giúp cho bạn đọc tiếp thu
các kiến thức của các chương trên.
Giáo trình này phục vụ cho các sinh viên ngành
công nghệ thông tin hoặc các cán bộ đang công tác
trong lĩnh vực tin học muốn bổ xung kiến thức cho
mình.
Tại tất cả các trường đại học có giảng dạy về
tin học, cơ sở dữ liệu là môn học chính cho các sinh
viên khoa công nghệ thông tin. Vì thế giáo trình này
có thể làm tư liệu học tập cho sinh viên hệ cử nhân
tin học, cử nhân cao đẳng tin học, kĩ sư tin học, hoặc
có thể làm tài liệu tham khảo cho các học viên cao
học, nghiên cứu sinh và các giảng viên tin học.
PGS.TS. Vũ Đức Thi
7
Chương mở đầu
Cơ sở dữ liệu (CSDL) là một trong những lĩnh
vực được tập trung nghiên cứu và phát triển của
công nghệ thông tin, nhằm giải quyết các bài toán
quản lí, tìm kiếm thông tin trong những hệ thống lớn,
đa dạng, phức tạp cho nhiều người sử dụng trên máy
tính điện tử. Cùng với sự ứng dụng mạnh mẽ công
nghệ thông tin vào đời sống xã hội, kinh tế, quốc
phòng ...Việc nghiên cứu CSDL đã và đang phát triển
ngày càng phong phú và hoàn thiện. Từ những năm
70, mô hình dữ liệu quan hệ do E.F. Codd đưa ra với
cấu trúc hoàn chỉnh đã tạo lên cơ sở toán học cho các
vấn đề nghiên cứu lí thuyết về CSDL. Với ưu điểm
về tính cấu trúc đơn giản và khả năng hình thức hoá
phong phú, CSDL quan hệ dễ dàng mô phỏng các hệ
thống thông tin đa dạng trong thưc tiễn, tạo điều
kiện lưu trữ thông tin tiết kiệm, có tính độc lập dữ
liệu cao, dễ sửa đổi, bổ sung cũng như khai thác dữ
liệu. Mặt khác, việc khai thác và áp dụng các kĩ thuật
tổ chức và sử dụng bộ nhớ cho phép việc cài đặt các
CSDL quan hệ đưa lại hiệu quả cao và làm cho
CSDL quan hệ chiếm ưu thế trên thị trường.
Nhiều hệ quản trị CSDL đã được xây dựng và
đưa vào sử dụng rộng rãi như : DBASE, FOXBASE,
8
FOXPRO, PARADOX, ORACLE, MEGA, IBM DB2,
SQL for WINDOWS NT...
Mô hình dữ liệu quan hệ đặt trọng điểm hàng
đầu không phải là khai thác các tiềm năng của máy
mà ở sự mô tả trực quan dữ liệu theo quan điểm của
người dùng, cung cấp một mô hình dữ liệu đơn giản,
trong sáng, chặt chẽ, dễ hiểu và tạo khả năng tự
động hoá thiết kế CSDL quan hệ. Có thể nói lí
thuyết thiết kế và cài đặt CSDL, nhất là mô hình dữ
liệu quan hệ đã phát triển ở mức độ cao và đạt được
những kết quả sâu sắc. Hàng loạt vấn đề đã được
nghiên cứu giải quyết như:
- Lí thuyết thiết kế CSDL, các phương pháp tách
và tổng hợp các lược đồ quan hệ theo tiêu chuẩn
không tổn thất thông tin hay bảo toàn tính nhất thể
của các ràng buộc trên dữ liệu .
- Các loại ràng buộc dữ liệu, cấu trúc và các tính
chất của chúng, ngữ nghĩa và khả năng áp dụng phụ
thuộc dữ liệu ví dụ như phụ thuộc hàm, phụ thuộc
đa trị, phụ thuộc kết nối, phụ thuộc lôgic...
- Các vấn đề tối ưu hoá: ở mức vật lí trong việc
tổ chức quản lí các tệp; ở mức đường truy nhập với
các tệp chỉ số hay các danh sách sắp xếp; ở mức
lôgic trên cơ sở rút gọn các biểu thức biểu diễn các
câu hỏi, ...vv
....................
9
Trong Giáo trình này sẽ trình bày một số kiến
thức cơ bản nhất về CSDL bao gồm các kiến thức
liên quan đến phụ thuộc hàm, khoá và dạng chuẩn,
các thuật toán nhận dạng và thiết kế chúng, việc xây
dựng các khái niệm này trong các hệ CSDL lớn như
MEGA, ORACLE...., việc nghiên cứu và áp dụng
chúng để xây dựng các dự án thiết kế tổng thể các
hệ thống CSDL hiện nay.
10
Chương 2
Các kiến thức cơ bản
về cơ sở dữ liệu
2.1. Khát quát về mô hình dữ liệu
Thông thường đối với việc thiết kế và xây dựng
các hệ thông tin quản lí, chúng ta cần xử lí các file dữ
liệu. Những file này bao gồm nhiều bản ghi (record)
có cùng một cấu trúc xác định (loại bản ghi). Đồng
thời, mỗi bản ghi được phân chia thành các trường
dữ liệu (fild). Một cơ sở dữ liệu là một hệ thống
các file dữ liệu, mỗi file này có cấu trúc bản ghi khác
nhau, nhưng về mặt nội dung có quan hệ với nhau.
Một hệ quản trị cơ sở dữ liệu là một hệ thống quản
lí và điều hành các file dữ liệu. Nói chung một hệ
quản trị cơ sở dữ liệu thường có những đặc tính
sau :
- Có tính độc lập với các công cụ lưu trữ,
- Có tính độc lập với các chương trình phần
mềm của người sử dụng (có nghĩa là các ngôn ngữ
lập trình khác nhau có thể được dùng trong hệ này),
- Có khả năng tại một thời điểm truy nhập vào
nhiều nơi trong hệ này ,
- Có khả năng khai thác tốt tiềm năng của máy,
11
- Người dùng với kiến thức tối thiểu cúng có
thể xử dụng được hệ này,
- Bảo đảm an toàn dữ liệu và bảo mật dữ liệu,
- Thuận lợi và mềm dẻo trong việc bổ xung,
loại bỏ, thay đổi dữ liệu
- Giảm bớt sự dư thừa dữ liệu trong lưu trữ,
Trong quá trình thiết kế và xây dựng các hệ
quản trị cơ sở dữ liệu, người ta tiến hành xây dựng
các mô hình dữ liệu. Mô hình dữ liệu phải thể hiện
được các mối quan hệ bản chất của các dữ liệu mà
các dữ liệu này phản ánh các mối quan hệ và các
thực thể trong thế giới hiện thực. Có thể thấy mô
hình dữ liệu phản ánh khía cạnh cấu trúc lôgic mà
không đi vào khía cạnh vật lí của các cơ sở dữ liệu.
Khi xây dựng các mô hình dữ liệu cần phân biệt các
thành phần cơ bản sau :
- Thực thể (Entity): Đó là đối tượng có trong
thực tế mà chúng ta cần mô tả các đặc trưng của nó.
- Thuộc tính: Đó là các dữ liệu thể hiện các đặc
trưng của thực thể.
- Ràng buộc: Đó là các mối quan hệ lôgic của các
thực thể.
Tuy vậy, ba thành phần cơ bản trên được thể
hiện ở hai mức :
12
- Mức loại dữ liệu (Type): Đó là sự khái quát hoá
các ràng buộc, các thuộc tính, các thực thể cụ thể.
- Mức thể hiện: Đó là một ràng buộc cụ thể,
hoặc là các giá trị thuộc tính, hoặc là một thực thể
cụ thể
Thông thường chúng ta sẽ nhận được các loại
dữ liệu (Type) của các đối tượng cần khảo sát trong
quá trình phân tích các thể hiện cụ thể của chúng.
yếu tố quan trọng nhất của cấu trúc cơ sở dữ
liệu là dạng cấu trúc dữ liệu mà trong đó các mối
quan hệ giữa các dữ liệu lưu trữ được mô tả. Có
thể thấy rằng loại dữ liệu nền tảng của việc mô tả
các mối quan hệ là loại bản ghi (Record type). Bởi
vì các ràng buộc giữa các loại bản ghi tạo ra bản
chất cấu trúc của cơ sở dữ liệu. Vì thế, dựa trên
việc xác định các ràng buộc giữa các loại dữ lịêu
được cho như thế nào mà chúng ta phân loại các mô
hình dữ liệu. Có nghĩa là từ cách nhìn của người xử
dụng việc mô tả các dữ liệu và các ràng buộc giữa
các dữ liệu được thực hiện như thế nào. Trên thực
tế chúng ta phân biệt hai loại mô hình dữ liệu:
- Mô hình dữ liệu mạng: Trong đó chúng ta thể
hiện trực tiếp các ràng buộc tuỳ ý giữa các loại bản
ghi,
13
- Mô hình dữ liệu quan hệ: Trong mô hình này
các ràng buộc trên được thể hiện qua các quan hệ
(bảng).
Mô hình dữ liệu quan hệ là một công cụ rất tiện
lợi để mô tả cấu trúc lôgic của các cơ sở dữ liệu.
Như vậy, ở mức lôgic mô hình này bao gồm các file
được biểu diễn dưới dạng các bảng. Do đó đơn vị
của CSDL quan hệ là một bảng (Một quan hệ được
thể hiện trong Định nghĩa 1), trong đó các dòng của
bảng là các bản ghi dữ liệu cụ thể (Đó là các thể
hiện cụ thể của loại bản ghi), còn tên các cột là các
thuộc tính.
Theo cách nhìn của người xử dụng thì một cơ
sở dữ liệu quan hệ là một tập hợp các bảng biến đổi
theo thời gian.
2.2. Các khái niệm cơ bản và hệ tiên đề
Armstrong:
Trong mục này, chúng ta trình bày những khái
niệm cơ bản nhất về mô hình dữ liệu quan hệ của
E.F. Codd. Những khái niệm cơ bản này gồm các
khái niệm về quan hệ, thuộc tính, phụ thuộc hàm, hệ
tiên đề Armstrong, khóa, dạng chuẩn....
14
Những khái niệm này đóng vai trò rất quan trọng
trong mô hình dữ liệu quan hệ. Chúng được áp dụng
nhiều trong việc thiết kế các hệ quản trị cơ sở dữ
liệu hiện nay.
Những khái niệm này có thể tìm thấy trong
[1,2,3,4,7,9,10,15,16,17].
Định nghĩa 1. (Quan hệ)
Cho R = {a1, ... , an} là một tập hữu hạn và không
rỗng các thuộc tính. Mỗi thuộc tính ai có miền giá trị
là Dai. Khi đó r là một tập các bộ {h1, ..., hm} được
gọi là một quan hệ trên R với hj (j = 1,...m ) là một
hàm :
hj : R → ∪ Dai
ai ∈ R
sao cho: hj ( ai) ∈ Dai
Chúng ta có thể biểu diễn quan hệ r thành bảng
sau:
a1 a2 an
h1 h1(a1) h1(a2) .............. h1(an)
h2 h2(a1) h2(a2) .............. h2(an)
. ...................................................
15
.
.
hm hm(a1) hm(a2) .............. hm(an)
Ví dụ: Trong một cơ quan, chúng ta quản lý nhân
sự theo biểu gồm các thuộc tính sau:
Nhân sự
Số Họ tên Giới Nă Trình Lương
TT tính m độ đào
sinh tạo
001 Nguyễn Văn Na 197 Đại 300000
A m 0 học
002 Nguyễn Nữ 197 Trung 210000
Kim Anh 1 cấp
003 Trần Văn Na 196 Đại 500000
ánh m 9 học
004 Trần Bình Na 196 PTS 450000
m 5
........................................................................................
........................................
120 Trần Thị Nữ 196 PTS 455000
yến 7
Chúng ta quy định kích thước cho các thuộc tính
(các trường) như sau:
16
Tên thuộc tính Kiểu Kích thước
STT Kí tự 3
HOTEN Ký tự 30
GIOITINH Ký tự 3
NAMSINH Số 4
TRINHDO Ký tự 10
LUONG Số 7
Có nghĩa là qui định cho thuộc tính STT là các
dãy gồm 3 kí tự, thuộc tính HOTEN là các dãy gồm
30 kí tự, ....., cho thuộc tính LUONG là các số có
nhiều nhất 7 chữ số.
Như vậy chúng ta có tập thuộc tính
NHANSU = {STT, HOTEN, GIOITINH,
NAMSINH, TRINHDO, LUONG}
ở đây DSTT là tập các dãy gồm 3 kí tự,...., DLUONG
là tập các số có nhiều nhất 7 chữ số.
Khi đó chúng ta có quan hệ r = {h1, h2,..., h120}, ở
đây ví dụ như đối với bản ghi thứ 2 (dòng thứ 2)
chúng ta có:
h2 (STT) = 002, h2 (HOTEN) = Nguyễn Kim ánh
h2 (GIOITINH) = Nữ, h2 (NAMSINH) = 1971
h2 (TRINHDO) = Trung cấp, h2 (LUONG) =
240000
17
Định nghĩa 2. ( Phụ thuộc hàm )
1. Cho R = {a1,...,an} là tập các thuộc tính, r =
{h1,...,hm} là một quan hệ trên R, và A, B ⊆ R.
2. Khi đó chúng ta nói A xác định hàm cho B hay
f
B phụ thuộc hàm vào A trong r (Kí pháp A r > B)
nếu
(∀ hi,hj ∈ r)(( ∀ a ∈ A)(hi(a)= hj(a)) ⇒ (∀ b ∈ B)
(hi(b)=hj(b)))
f
Đặt Fr = { (A,B): A,B ⊆ R, A r > B }. Lúc đó Fr
được gọi là họ đầy đủ các phụ thuộc hàm của r.
Khái niệm phụ thuộc hàm miêu tả một loại ràng
buộc (phụ thuộc dữ liệu) xảy ra tự nhiên nhất giữa
các tập thuộc tính. Dù hiện nay đã có nhiều loại phụ
thuộc dữ liệu được nghiên cứu, xong về cơ bản các
hệ quản trị cơ sở dữ liệu lớn sử dụng phụ thuộc
hàm.
Định nghĩa 3.
Phụ thuộc hàm (PTH) trên tập các thuộc tính R là
một dãy kí tự có dạng A → B, ở đây A,B ⊆ R. Chúng
18
f
ta nói PTH A → B đúng trong quan hệ r if A r >
B. Chúng ta cũng nói rằng r thoả mãn
A → B.
Dễ thấy, Fr là tập tất cả các PTH đúng trong r.
Chú ý: Trong giáo trình này chúng ta có thể viết
f
(A,B) hoặc A → B thay cho A r > B mà không bị
lẫn về mặt kí pháp.
Định nghĩa 4. (Hệ tiên đề của Armstrong )
Giả sử R là tập các thuộc tính và kí pháp P(R) là
tập các tập con của R. Cho Y ⊆ P(R) x P(R). Chúng
ta nói Y là một họ f trên R nếu đối với mọi A, B, C,
D⊆ R
(1) (A,A) ∈ Y,
(2) (A,B) ∈ Y, (B,C) ∈ Y ⇒ (A,C) ∈ Y,
(3) (A,B) ∈ Y, A ⊆ C, D ⊆ B → (C,D) ∈ Y,
(4) (A,B) ∈ Y, (C,D) ∈ Y ⇒ (A ∪ C, B ∪ D) ∈
Y.
Rõ ràng, Fr là một họ f trên R.
Trong [l] A. A. Armstrong đã chứng minh một
kết quả rất quan trọng như sau : Nếu Y là một họ f
19
bất kì thì tồn tại một quan hệ r trên R sao cho Fr =
Y.
Kết quả này cùng với định nghĩa của phụ thuộc
hàm chứng tỏ rằng hệ tiên đề Armstrong là đúng
đắn và đầy đủ.
Mặt khác, hệ tiên đề này cho ta những đặc
trưng của họ các phụ thuộc hàm, mà các đặc trưng
này không phụ thuộc vào các quan hệ (bảng) cụ thể .
Nhờ có hệ tiên đề này các công cụ của toán học
đựơc áp dụng để nghiên cứu làm sáng tỏ cấu trúc
lôgic của mô hình dữ liệu quan hệ. Đặc biệt chúng ta
xử dụng công cụ thuật toán để thiết kế các công
đoạn xây dựng các hệ quản trị cơ sở dữ liệu.
Chúng ta đưa ra ví dụ chỉ ra có nhiều quan hệ
khác nhau xong các họ đầy đủ các phụ thuộc hàm
của chúng lại như nhau.
Cho r1 và r2 là các quan hệ sau:
a b a b
0 0 0 0
r1 = 1 1 r2 = 1 1
2 1 2 1
3 2 3 1
Có thể thấy r1 và r2 khác nhau nhưng Fr1 = Fr2.
20
Như vậy, tương quan giữa lớp các quan hệ với
lớp các họ phụ thuộc hàm có thể được thể hiện
bằng hình vẽ sau.
Lớp các quan hệ Lớp
các phụ thuộc hàm
Định nghĩa 5.
Một hàm L : P(R) → P(R) được gọi là một hàm
đóng trên R nếu với mọi A, B ∈ P( R ) thì :
- A ⊆ L(A),
- Nếu A ⊆ B thì L(A) ⊆ L(B),
- L(L(A)) = L(A).
21
Địnhlí 6.
Nếu F là một họ f và chúng ta đặt
LF = {a : a ∈ R và (A, {a}) ∈ F}
thì LF là một hàm đóng. Ngược lại, nếu L là một
hàm đóng thì tồn tại duy nhất một họ f F trên R sao
cho L = LF , ở đây
F = { (A,B) : A, B ⊆ R , B ⊆ L(A) }.
Như vậy, chúng ta thấy có một tương ứng 1-1
giữa lớp các hàm đóng và lớp các họ f . Chúng ta có
hình vẽ sau
Lớp các họ phụ thuộc hàm
Lớp các hàm đóng
22
Định lí 6 chỉ ra rằng để nghiên cứu phân tích các
đặc trưng của họ các phụ thuộc hàm chúng ta có thể
dùng công cụ hàm đóng.
Sau này trong mục 2.3 chúng tôi sẽ trình bày
nhiều công cụ nữa để nghiên cứu cấu trúc lôgic của
họ các phụ thuộc hàm.
Định nghĩa 7. (Sơ đồ quan hệ)
Chúng ta gọi sơ đồ quan hệ (SĐQH) s là một
cặp , ở đâ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í pháp F+ là tập tất cả
các PTH được dẫn xuất từ F bằng việc áp dụng các
qui tắc trong Định nghĩa 4.
Đặ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+.
f
Tương tự chúng ta đặt A r
+
= {a : A r > {a} }.
Ar+ được gọi là bao đóng của A trên r.
Theo [1] chúng ta có thể thấy nếu s = là
sơ đồ quan hệ thì có quan hệ r trên R sao cho Fr=F+.
Quan hệ r như vậy chúng ta gọi là quan hệ
Armstrong của s.
23
Trong trường hợp này hiển nhiên các PTH của s
đúng trong r.
Định nghĩa 8. (Khoá)
Giả sử r là một quan hệ , s = là một sơ
đồ quan hệ, Y là một họ f trên R, và A ⊆ R. Khi
đó A là một khoá của r (tương ứng là một khoá của
f
s, một khoá của Y) nếu A r > R (A → R ∈ F+,
(A,R) ∈ Y). Chúng ta gọi A là một khoá tối tiểu
của r (tương ứng của s, của Y) nếu
- A là một khoá của r (s, Y),
- Bất kì một tập con thực sự của A không là
khoá của r (s, Y).
Chúng ta kí pháp Kr, (Ks, Ky) tương ứng là tập tất
cả các khoá tối tiểu của r (s, Y).
Chúng ta gọi K ( ở đây K là một tập con của
P(R) ) là một hệ Sperner trên R nếu với mọi A,B ∈ K
kéo theo A ⊆ B).
Có thể thấy Kr,Ks, Ky là các hệ Sperner trên R.
Định nghĩa 9.
Giả sử K là một hệ Sperner trên R. Chúng ta
định nghĩa tập các phản khoá của K, kí pháp là K-1,
như sau:
24
K-1 = {A ⊂ R : (B ∈ K) ⇒ (B ⊆ A) and (A ⊂ C)
⇒ (∃ B ∈ K)(B ⊆ C)}
Dễ thấy K-1 cũng là một hệ Sperner trên R.
Tập phản khoá đóng vai trò rất quan trọng trong
quá trình nghiên cứu cấu trúc lôgic của các họ phụ
thuộc hàm, khóa, dạng chuẩn, quan hệ Armstrong,
đặc biệt đối với các bài toán tổ hợp trong mô hình
dữ liệu quan hệ.
Trong [5] người ta đã nêu ra rằng nếu s =
là một sơ đồ quan hệ trên R, thì Ks là hệ Sperner trên
R. Ngược lại, nếu K là một hệ Sperner bất kì trên R,
thì tồn tại một sơ đồ quan hệ s sao cho Ks = K.
Ví dụ: Cho K = { A1,.....,Am } là một hệ Sperner.
Khi đó s = , ở đây F = { A1 →R, ... , Am → R}
là sơ đồ quan hệ mà Ks = K.
Nhận xét :
- Có thể cho ví dụ chỉ ra rằng có nhiều sơ đồ
quan hệ khác nhau nhưng tập các khoá tối tiểu của
chúng giống nhau. Có nghĩa là tồn tại
s1 = , ..., st = ( 2 ≤ t ) mà F1+
≠ .... ≠ Ft+ , nhưng
Ks1 = ... = Kst .
Tất nhiên, nếu F1 = F2 thì Ks1 = Ks2.
Mối quan hệ giữa lớp họ phụ thuộc hàm và lớp
các hệ Sperner thể hiện qua hình vẽ sau
25
•
•
•
Lớp các họ phụ thuộc hàm
Lớp các hệ Sperner
- Nếu K đóng vai trò là một tập các khoá tối tiểu
của một sơ đồ quan hệ nào đó, thì theo định nghĩa K-1
là tập tất cả các tập không phải khoá lớn nhất.
Trong Giáo trình này, chúng ta qui ước rằng nếu
hệ Sperner đóng vai trò là tập các khoá tối tiểu (tập
các phản khoá), thì hệ này không rỗng (không chứa R
).
Định nghĩa 10.
Cho I ⊆ P(R). Khi đó I được gọi là nửa dàn giao
nếu
R ∈ I và A,B ∈ I ⇒ A ∩ B ∈ I .
Giả sử M ⊆ P(R). Đặt M+ = {∩ M' : M' ⊆ M}.
Khi đó chúng ta nói rằng M là một hệ sinh của I
nếu M+ = I.
Chú ý rằng R ∈ M+ nhưng R không là một phần
tử của M, bởi vì chúng ta theo thông lệ cho R là giao
của một tập rỗng các tập con của M.
26
Kí pháp NI = {A ∈ I : A ≠ ∩ {A' ∈ I : A ⊂ A'}}.
Trong [4] người ta đã chỉ ra rằng NI là hệ sinh
nhỏ nhất và duy nhất của I. Có nghĩa là đối với mọi
hệ sinh N' của I chúng ta có NI ⊆ N'.
Định nghĩa 11.
Cho r là một quan hệ trên R. Chúng ta đặt Er =
{Eij : 1 ≤ i ≤ j ≤ |r|}, ở đây Eij = {a ∈ R: hi(a) = hj(a)}.
Er được gọi là hệ bằng nhau của r.
Đặt Mr = { A ∈ P(R) : ∃ Eij = A, ∃ Epq: A ⊂ Epq}.
Khi đó chúng ta gọi Mr là hệ bằng nhau cực đại của
r.
Sau này ta sẽ thấy hệ bằng nhau và hệ bằng
nhau cực đại được dùng rất nhiều trong các thuật
toán thiết kế.
Mối quan hệ giữa lớp các quan hệ và lớp các
phụ thuộc hàm đóng một vai trò quan trọng trong quá
trình nghiên cứu cấu trúc lôgic của lớp các phụ thuộc
hàm.
Định nghĩa 12.
Cho trước r là một quan hệ r và F là một họ f
trên R. Chúng ta nói rằng r là thể hiện họ F nếu Fr =
F. Chúng ta cũng có thể nói r là một quan hệ
Armstrong của F.
27
Bây giờ, chúng ta đưa ra một điều kiện cần và
đủ để một quan hệ là thể hiện một họ f cho trước.
Định lý 13.
Giả sử r = {h1 ,..., hm } là một quan hệ, F là một
họ f trên R thì r thể hiện F nếu và chỉ nếu với mọi
A⊆ R
∩ E i j nếu tồn tại E i j ∈ Er : A ⊆ E i j,
LF(A) = A ⊆ E i j
R ngược lại.
ở đây L F (A) = {a ∈ R : (A, {a}) ∈ F } và Er là hệ
bằng nhau của r.
Lời giải: Đầu tiên chúng ta chứng minh rằng
trong một quan hệ r bất kì với mọi A ⊆ R
∩ E i j nếu tồn tại E i j ∈ Er : A ⊆ E i j,
LFr(A) = A ⊆ E i j
R ngược lại.
Giả sử đầu tiên chúng ta công nhận rằng A là
một tập mà không có E i j ∈ Er với A ⊆ E i j với mọi
hi , hj ∈ r , a∈A : hi (a) = hj (a). Theo định nghĩa của
phụ thuộc hàm điều này kéo theo A → R và bởi định
nghĩa của LF r ta thu được LF(A) = R. Rõ ràng là
LFr (∅) = ∩ Ei j
28
Eij ∈ Er
Nếu A≠ ∅ và có một Ei j ∈ Er mà A ⊆ Ei j thì
chúng ta đặt
V = { Eij : A ⊆ Eij, Eij ∈ E r }
và E = ∩ Ei j
Eij ∈ V
Dễ dàng nhận thấy rằng A ⊆ E . Nếu V = Er thì
chúng ta nhận thấy rằng (A,E) ∈ F r nếu V ≠ Er thì
có thể coi như với mọi E i j ∈ V chúng ta có
(Với mọi a ∈ A) (hi(a) = hj (a)) → (Với mọi b ∈
B) (hi(b) = hj(b)) và với mọi E i j ∉ V có một a ∈ A
mà hi (a) ≠ hj(a). Như vậy, ( A, E) ∈ Fr.
Từ định nghĩa của LFr ta có E ⊆ LFr(A). bởi vì r là
một quan hệ trên R, chúng ta có E ⊂ R. Sử dụng A ⊆
E ⊆ LFr(A) ta thu được (E, LFr(A)) ∈ Fr.
Bây giờ, ta giả sử rằng c là một thuộc tính mà c
∉ E. Khi đó có một E i j ∈ V mà c ∉ E i j . Điều này
kéo theo sự tồn tại của một cặp hi , hj ∈ r mà với mọi
b ∈ E: hi (b) = hj (b) nhưng hi (c) ≠ hj (c). Có thể
thấy rằng theo định nghĩa phụ thuộc hàm ( E ∪ {c})
không phụ thuộc vào E. Như vậy, với mọi thuộc tính
c ∉ E ta có ( E, E ∪ {c}) ∉ Fr. Bằng định nghĩa của
LFr ta thu được :
29
LFr (A) = ∩ Ei j
Eij ∈ V
Trên cơ sở Định lí 6 chúng ta dễ dàng thấy rằng
Fr = F nếu và chỉ nếu LFr = LF .
Giả sử L là một hàm đóng. Đặt Z (L) = {A ⊆ R :
L (A) = A}.
Rõ rằng, Z(L) là tập đóng với phép giao.
Có thể thấy là với mọi Ei i (Ei i ∈ Er ), chúng ta
có Ei i ∈ Z(LFr), có nghĩa là E+r ⊆ Z(LFr)
Nhờ Định lý 13 chúng ta có Z(LFr) ⊆ E+R . Như
vậy chúng ta có
Hệ quả 14.
Giả sử r quan hệ, F là một họ ƒ trên R. Khi đó r
thể hiện F nếu và chỉ nếu Z(LF) = E+R .
Trong [5] người ta đã chỉ ra rằng nếu cho một
hệ Sperner không rỗng tuỳ ý K thì tồn tại một quan
hệ r để K = Kr.
Bây giờ, chúng ta đưa ra một định nghĩa dưới
đây
Định nghĩa 15.
Cho trước quan hệ r và hệ Sperner K trên R.
Chúng ta nói rằng r thể hiện K nếu Kr = K.
30
Định nghĩa 16.
Cho F là một họ f trên R, và (A,B) là một phần
tử của F. Chúng ta nói (A,B ) là một phụ thuộc có vế
phải cực đại của F nếu với mọi B' ( B B' ) và ( A,B'
) ∈ F kéo theo B = B'.
Chúng ta kí pháp M(F) là tập tất cả các phụ
thuộc có vế phải cực đại của F. Chúng ta nói rằng B
là vế phải cực đại của F nếu có A sao cho (A,B) ∈
M(F). Kí pháp I(F) là tập tất cả các vế phải cực đại
của F.
Dưới đây chúng ta cho một điều kiện cần và
đủ để một quan hệ thể hiện một hệ Sperner.
Định lý 17.
Giả sử K là một hệ Sperner không rỗng, r là một
là một quan hệ trên R. Khi đó r thể hiện K nếu và
chỉ nếu K-1 = Mr, ở đây Mr là hệ bằng nhau cực đại
của r.
Lời giải: Có thể xem như là nếu K là một hệ
Sperner không rỗng thì K-1 tồn tại. Mặt khác, K và K-1
là xác định duy nhất. Cho nên, chúng ta có Kr = K
nếu và chỉ nếu Kr-1 = K-1.
Bây giờ chúng ta có thể chỉ cần chứng minh
rằng K-r1 = Mr. Rõ ràng, Fr là một họ f trên R. Đầu
tiên chúng ta có thể giả thiết rằng A là một phản
khoá của Kr. Rõ ràng A ≠ R. Nếu có một B sao cho
31
A ⊂ B và A → B, thì bằng định nghĩa của phản khoá,
chúng ta có B → R và A → R. Đây là một điều phi lý.
Vì vậy A ∈ I(Fr). Nếu có một B' sao cho B' ≠ R, B' ∈
I(Fr) và A ⊂ B', thì B' là một khoá của r. Đây là một
điều mâu thuẫn B' ≠ R. Do đó A ∈ I(Fr) - R và
không tồn tại B' (B' ∈ I(Fr) - R) để A ⊂ B'.
Mặt khác, theo định nghĩa của một quan hệ, R ∉
Mr. Rõ ràng, Eij ∈ I(Fr). Như vậy chúng ta có Mr ⊆
I(Fr). Nếu Dlà một tập sao cho ∀C ∈ Mr : D ⊆ C , thì
D là một khoá của r. Bởi vậy, Mr là tập phần tử rời
nhau cực đại của I(FR). Vì vậy chúng ta có A ∈ Mr
Ngược lại, nếu A ∈ Mr, thì theo định nghĩa của
quan hệ và Mr Chúng ta có A → R. Có nghĩa là ∀ K ∈
Kr : K ⊆ A. Mặt khác, bởi vì A là một phần tử của
tập bằng nhau cực đại, cho nên đối với tất cả D(A
⊂ D) chúng ta có D → R. Đồng thời theo định nghĩa
của các phản khoá A ∈ K-1r.
Cho trước s = là một sơ đồ quan hệ trên
R, Ks là tập tất cả các khoá tối tiểu của s. Kí pháp
Ks-1 là tập các phản khoá của s. Từ Định lí 17 chúng
ta có kết quả sau.
Hệ quả 18.
Cho trước s = là một sơ đồ quan hệ và r
là một quan hệ trên R. Khi đó Kr = Ks nếu và chỉ nếu
Ks-1 = Mr , ở đây Mr là hệ bằng nhau cực đại của r.
32
Chúng ta đưa ra một kết quả liên quan đến cả
K-1 và K.
Định lý 19.
Giả sử K là một hệ Sperner trên R. Giả sử s(K)
= min{m:K=Kr, |r|=m, r là quan hệ trên R}. Khi đó
−1
2K
2 ≤ s(K) ≤ |K-1|+1.
Đánh giá này chỉ ra mối quan hệ giữa kích cỡ
của quan hệ tối tiểu mà thể hiện một hệ Sperner (ở
đây hệ này đóng vai trò là một hệ khoá tối tiểu) cho
trước với lực lượng của hệ phản khoá tương ứng
của nó.
Cho F là một họ f trên R. Theo Định nghĩa 16 thì
dễ thấy I(F) là một nửa dàn giao. Khi đó
NI(F) = {A ∈ I ( F ) : A ≠ ∩ {A' ∈ I : A ⊂ A'}}.
Trên cơ sở này chúng ta có định lí sau đánh giá
quan hệ Armstrong nhỏ nhất (minimal Armstrong
relation) của một họ f.
Định lý 20.
Giả sử F là một họ f trên R. Đặt
s(F) = min{m:F=Fr, |r|=m, r là quan hệ trên R}.
2N
≤ s(F) ≤ |NI(F)|+1.
I(F )
Khi đó
33
Đánh giá này cho chúng ta mối quan hệ giữa
kích thước của quan hệ Armstrong nhỏ nhất của họ
F với lực lượng của hệ sinh nhỏ nhất của I(F).
Bây giờ, chúng ta đánh giá sâu hơn kích thước
của các quan hệ Armstrong nhỏ nhất trên R, cũng
như các quan hệ nhỏ nhất mà thể hiện một hệ
Sperner K cho trước.
Chúng ta đặt
P(n) = max { s(K) : K là hệ Sperner tùy ý trên R
= {a1,..., an } }
và Q(n) = max { s(F) : F là họ f tùy ý trên R =
{a1,..., an } }
Khi đó chúng ta có
Định lý 21.
- 1/n2 . C [n/2]n ≤ P(n) ≤ C [n/2]n + 1
- 1/n2 . C [n/2]n ≤ Q(n) ≤ ( 1 + C ( 1/n1/2 )).C [n/2]n
Đánh giá này cho toàn bộ các hệ Sperner (ở đây
hệ này đóng vai trò là một hệ khoá tối tiểu) và các họ
f có thể có trên R.
Định nghĩa 22.
Giả sử r là một quan hệ trên R và Kr là tập của
tất cả các khoá tối tiểu của r. Chúng ta nói rằng a là
34
một thuộc tính cơ bản của r nếu tồn tại một khoá tối
tiểu K (K ∈ Kr) để a là một phần tử của K.
Nếu a không thoả mãn tính chất trên thì a là
thuộc tính thứ cấp.
Trong chương 3 chúng ta có thể thấy các thuộc
tính cơ bản và thứ cấp đóng một vai trò quan trọng
trong việc chuẩn hoá các sơ đồ quan hệ và các quan
hệ.
Trong [24] đã chứng minh kết quả sau
Định lí 23.
Cho trước một sơ đồ quan hệ s = và một
thuộc tính a. Bài toán xác định a là thuộc tính cơ bản
hay không là bài toán NP- đầy đủ.
Có nghĩa rằng cho đén nay không có một thuật
toán có độ phức tạp thời gian đa thức để giải quyết
bài toán này.
Tuy vậy, chúng ta chỉ ra rằng đối với quan hệ thì
bài toán này được giải bằng một thuật toán thời gian
đa thức.
Trước tiên chúng ta chứng minh kết quả sau.
Định lý 24.
Giả sử K là một hệ Sperner trên R. thì
∪K = R - ∩K-1.
35
Lời giải:
Nếu c ∈ ∪K, thì tồn tại một khoá tối tiểu K sao
cho c ∈ K. Đặt H = K- c. Rõ ràng H không chứa một
khoá nào. Như vậy, tồn tại một phản khoá B để B
chứa H. Có thể thấy c không là phần tử của B, vì
ngược lại chúng ta có B chứa K. Điều này là vô lí. Vì
thế chúng ta có
c ∈ R - B ⊆ R - ∩ K-1.
Bây giờ chúng ta giả thiết c ∉ ∪K và B ∈ K-1.
Có thể thấy c ∈ B. Vì ngược lại c ∉ B, thì {c} ∪ B
hình thành một khoá chứa khoá tối tiểu K ( K ∈ K ).
Như vậy K ⊆ B, và chúng ta có c ∈ K. Điều này là
vô lý.
Trên cơ sở của Định lý 17 và Định lí 24 chúng ta
chỉ ra rằng đối với một quan hệ, thì vấn đề về thuộc
tính cơ bản có thể là giải quyết bằng một thuật toán
thời gian đa thức.
Đầu tiên chúng ta xây dựng một thuật toán xác
định tập các thuộc tính cơ bản của quan hệ cho
trước.
Thuật toán 25.
Vào: r = {h1, ..., hm }là một quan hệ trên R
Ra: V là tập tất cả thuộc tính cơ bản của r
36
Bước 1: Từ r chúng ta xây dựng một tập Er = {Ei
j : m ≥ j > i ≥ 1} và Ei j = { a ∈ R : hj(a) = hj(a) }
Bước 2 : Từ Er chúng ta xây dựng tập
M = {B ∈P(R) : Tồn tại Ei j ∈Er : Ei j = B}
Bước 3: Từ M xây dựng tập Mr = { B ∈ M :
Với mọi B' ∈ M : B ⊄ B'}
Có thể thấy rằng Mr tính được bằng một thuật
toán thời gian đa thức.
Bước 4: Xây dựng tập V = R - ∩Mr .
Rõ ràng m.(m+1)/2 ≥ Er ≥ M ≥ Mr .
Bởi vậy thời gian tính của Thuật toán 25 là một đa
thức theo số hàng và số cột của r.
Từ các Định lý 17, 24 và Thuật toán 25 chúng ta
có hệ quả sau.
Hệ quả 26.
Tồn tại thuật toán đối với một quan hệ r cho
trước, xác định một thuộc tính bất kì là cơ bản hay
không với thời gian tính đa thức theo số hàng và cột
của r.
Một vấn đề thường xuyên hay xảy ra là đối với
một sơ đồ quan hệ cho trước s = , và một phụ
thuộc hàm A → B, chúng ta muốn biết A → B có là
phần tử của F+ hay không. Để trả lời câu hỏi này
37
chúng ta cần tính bao đóng F+ của tập các phụ thuộc
hàm F. Tuy nhiên tính F+ trong trường hợp tổng quát
là rất khó khăn và tồn kém thời gian vì tập các phụ
thuộc hàm thuộc F+ là rất lớn cho dù F có thể là nhỏ.
Chẳng hạn F ={A → B1, A → B2 ,.. A → Bn}, F+ khi đó
còn bao gồm cả những phụ thuộc hàm A → Y với Y
⊆{B1 ∪ B2. ∪... ∪ Bn}. Như vậy sẽ có 2n tập con Y .
Trong khi đó, việc tính bao đóng của tập thuộc tính A
lại không khó. Theo kết quả đã trình bày ở trên việc
kỉêm tra A → B ∈ F+ không khó hơn việc tính A+.
Ta có thể tính bao đóng A+ qua thuật toán sau:
Thuật toán 27
Vào: s = , ở đây R ={ a1 ,...., an } tập hữu
hạn các thuộc tính, F tập các phụ thuộc hàm, A ⊆ R
Ra: A+ bao đóng của A đối với F
Thuật toán thực hiện như sau: Tính các tập
thuộc tính A0, A1... theo qui tắc:
1) A0 = A
2) Ai = Ai-1 ∪{a} sao cho ∃ (C → D) ∈ F,{a} ∈
Y và C ⊆ Ai-1
Vì A = A0 ⊆ ... ⊆ Ai ⊆ R, và R hữu hạn nên tồn
tại một chỉ số i nào đó mà Ai = Ai+1, khi đó thuật toán
dừng và A+ = Ai
38
Chúng ta có thể thấy độ phức tạp thời gian của
thuật toán này là đa thức theo kích thước của s.
Để tiện kí pháp chúng ta thay a ∪ b bởi viết ab.
Ví dụ: s = , ở đâyR = { a,b,c,d,e,g }, F
bao gồm 8 phụ thuộc hàm
ab → c d → eg
c →a be → c
bc → d cg→ bd
acd → b ce → ag
và A = bd.
Dùng Thuật toán 27 chúng ta có thể thấy
A0 = bd,
A1 = bdeg,
A2 = bcdeg,
A3 = abcdeg,
A+ = abcdeg.
Để chứng minh tính đúng đắn của Thuật toán
27 chúng ta có thể dùng phương pháp quy nạp để chỉ
ra rằng nếu a thuộc Ai thì a cũng thuộc A+.
39
Việc chỉ ra điều ngược lại cũng bằng qui nạp
nhưng khó khăn hơn là nếu a nằm trong A+ thì a nằm
trong một số Ai nào đó.
Định lý 28.
Thuật toán 27 tính chính xác A+.
Như vậy, để xác định một phụ thuộc hàm A →
B có thuộc F+ hay không chúng ta chỉ cần kiểm tra B
⊆ A+ ?.
Bây giờ, chúng ta đi tìm thuật toán tìm bao đóng
cho một tập các thuộc tính trên một quan hệ bất kì
Đối với một quan hệ bất kì theo Định lí 13 chúng
ta đã chúng minh với mọi A ⊆ R
∩ E i j nếu tồn tại E i j ∈ Er : A ⊆ E i j,
LFr(A) = A ⊆ E ij
R ngược lại.
Có thể thấy LFr (A) = Ar+ . Do vậy chúng ta có
ngay thuật toán sau để tính bao đóng cho một tập bất
kì trên quan hệ r.
Thuật toán 29
Vào: r = {h1, ..., hm } là một quan hệ trên R
Ra: V là tập tất cả thuộc tính cơ bản của r
40
Bước 1: Từ r chúng ta xây dựng một tập Er = {Ei
j : m ≥ j > i ≥ 1} và Ei j = { a ∈ R : hj(a) = hj(a) }
Bước 2: Từ Er chúng ta xây dựng một tập M =
{B ∈P(R) : Tồn tại Ei j ∈Er : Ei j = B}
Bước 3:
∩ B nếu tồn tại B ∈ M : A ⊆ B,
Ar+ = A⊆ B
R ngược lại.
Dễ thấy, độ phức tạp thời gian của thuật toán
này là một đa thức theo kích thước của r.
Định nghĩa 30
Giả sử s = , t = là hai sơ đồ quan
hệ trên R. Khi đó chúng ta nói s tương đương với t
nếu F+ = G+ . Nếu s và t tương đương thì đôi khi
chúng ta có thể nói rằng s là một phủ của t hoặc t là
một phủ của s.
Dễ dàng kiểm tra rằng s và t có tương đương
với nhau không.
Mỗi phụ thuộc hàm Y → Z ở trong F chúng ta
kiểm tra lại Y → Z ở trong G+ bằng vi ệc sử dụng
Thuật toán 27 để tính Y+ và kiểm tra Z ⊆ Y+ . Nếu
có phụ thuộc hàm Y → Z không nằm trong G+ hoặc
ngược lại nếu có phụ thuộc hàm X → W ở trong G
41
nhưng không ở trong F + thì điều chắc chắn là F+
khác G+ . Nếu mỗi phụ thuộc hàm ở trong F thì cũng
nằm trong G+ và mỗi phụ thuộc hàm nằm trong G
thì cúng nằm trong F+, khi đó chúng ta có s và t là
tương đương với nhau.
Hiện nay chúng ta cho định nghĩa sau nói về sự
tương đương của hai quan hệ.
Định nghĩa 31
Giả sử r và v là hai quan hệ trên R. Khi đó ta nói
r và v tương đương với nhau nếu Fr = Fv .
Chúng tôi trình bày định lí sau liên quan đến sự
tương đương của hai quan hệ.
Định lí 32
Giả sử r và v là hai quan hệ trên R. Khi đó s
tương đương với v khi và chỉ khi Nr = Nv.
Trên cơ sở Định lí 32 chúng ta đưa ra một thuật
toán kiểm tra xem r có tương đương với v hay không.
Thuật toán 33
Vào: r và t là hai quan hệ trên R
Ra: r có tương đương với v hay không
Bước 1: Từ r tính Nr,
Bước 2: Từ v tính Nv
Bước 3 : So sánh Mr với Mv.
42
Bây giờ, chúng ta quay lại với sơ đồ quan hệ.
Chúng ta muốn gọt giũa các phụ thuộc hàm của sơ
đồ quan hệ để có tập phụ thuộc hàm tốt hơn.
Định nghĩa 34
Chúng ta nói một sơ đồ quan hệ s = là
chính tắc nếu
1. Vế phải của mỗi phụ thuộc hàm trong F là
thuộc tính đơn.
2. Không có X → a nào ở trong F để F- {X → a}
tương đương với F.
3. Không có X → a và một tập con Z của X để
F-{X → A} ∪ {Z → a} tương đương với F.
Chúng ta sẽ chỉ ra rằng có thuật toán để tìm một
phủ chính tắc cho một sơ đồ quan hệ bất kì.
Trước tiên chúng ta đưa ra mệnh đề sau
Mệnh đề 35:
Mỗi một sơ đồ quan hệ s = đều có một
phủ tương đương t = sao cho vế phải của
mỗi phụ thuộc hàm trong G không có hơn một thuộc
tính.
Chứng minh: Đặt G là tập phụ thuộc hàm có
dạng X → a, với X → Y nằm trong F và a là một
43
phần tử của Y. Trên cơ sở hệ tiên đề của Armstrong,
chúng ta dễ thấy t tương đương với s.
Chúng ta trình bày thuật toán dưới đây để tìm
phủ chính tắc cho một sơ đồ quan hệ cho trước
Thuật toán 36
Vào: s= , F = { A1 → B1,..., Am → Bm }
Ra: t = là chính tắc và tương đương với s
Do Mệnh đề 35 chúng ta có thể coi s thoả mãn
điều kiện 1.
Bước 1: Đặt F0 = F, với i = 1, ..., m
Fi = Fi-1 - { Ai → Bi } nếu Fi-1 - { Ai → Bi
} tương đương với Fi . Trong trương hợp ngượi lại
thì Fi = Fi-1.
Bước 2: Nhờ thuật toán tính bao đóng, từ Fm
chúng ta lần lượt loại bỏ các thuộc tính thừa trong
mỗi vế trái của từng phụ thuộc hàm thuộc Fm.
Kết quả nhận đước chính là G.
Dễ thấy rằng thuật toán trên có độ phức tạp
thời gian là đa thức theo kích thước của s.
Chúng ta đưa ra một khái niệm sau
Định nghĩa 37
44
Giả sử s = là một sơ đồ quan hệ trên R.
Khi đó chúng ta nói rằng s là sơ đồ quan hệ tối tiểu
nếu với mọi sơ đồ quan hệ t = < R,G> tương đương
với s có | F | < |G|, ở đây |F| là số lượng các phụ
thuộc hàm trong F.
David Maier [25] đã chứng minh định lí sau
Định lí 38
Tồn tại một thuật toán có độ phức tạp thời gian
đa thức để tìm phủ tối tiểu cho một sơ đồ quan hệ
cho trước.
Ví dụ:
Chúng ta xem xét tập các phụ thuộc hàm F trong
ví dụ minh hoạ Thuật toán 27. Ban đầu chúng ta
tách vế phải ra thành các thuộc tính đơn:
ab → c,
c → a,
bc → d,
acd→ b,
d → e,
d → g,
be → c,
cg→ b,
45
cg→ d,
ce→ a,
ce → g.
Rõ ràng ce → a là không cần thiết bởi vì nó suy ra
được từ c → a.
cg → b là dư thừa bởi vì có cg → d , c → a và acd
→ b. Ngoài ra không có một phụ thuộc hàm nào là
dư thừa nữa. Dễ thấy acd → b có thể thay thế bởi cd
→ b. Vậy chúng ta có một phủ chính tắc là :
ab →c,
c →a,
bc→d,
cd→b,
d→e,
d→g,
be→c,
cg→d,
ce→g.
2.3 Các mô tả tương đương của họ các phụ thuộc
hàm
46
Trong mục trên chúng ta đã định nghĩa hàm đóng.
Nó là một mô tả tương đương của họ các phụ thuộc
hàm. Trong mục này chúng tôi cung cấp cho bạn đọc
một số các mô tả tương đương khác của họ này.
Chúng chính là các công cụ để chúng ta có thể nghiên
cứu phong phú hơn nữa cấu trúc lôgic của họ các
phụ thuộc hàm.
Định nghĩa 1
Cho R là tập các thuộc tính và P(R) là tập các tập
con của R.
Một hàm C: P(R) → P(R) được gọi là một hàm
chọn trên R nếu với mọi A ∈ P( R ) thì C (A) ⊆ A.
Giả sử L là một hàm đóng trên R . Chúng ta đặt
C(A) = R - L(R-A) (*)
Dễ thấy C là một hàm chọn trên R
Trong [6] người ta đã chứng minh được kết quả
sau
Định lí 2
Tương ứng được xác định như (*) là tương ứng
1-1 giữa tập các hàm đóng và tập các hàm chọn thoả
mãn 2 điều kiện sau: với mọi A,B ⊆ R
(1) C(A) ⊆ B ⊆ A kéo theo C(A) = C(B)
(2) A ⊆ B kéo theo C(A) ⊆ C(B).
47
Chúng ta có hình vẽ sau thể hiện mối quan hệ
giữa lớp hàm đóng và lớp hàm chọn đặc biệt trên
• •
• •
• •
Lớp các hàm đóng Lớp các
hàm chọn đặc biệt
Định lí dưới đây chỉ ra một tương ứng 1-1 giữa
lớp các hàm đóng và lớp các nửa dàn giao trên R.
Định lí 4
Giả sử L là một hàm đóng trên R. Đặt Z( L ) =
{ A : A ∈ P(R) và L(A) = A }. Khi đó Z(L) là một nửa
dàn giao trên R.
Ngược lại, nếu I là một nửa dàn giao trên R, thì
tồn tại duy nhất một hàm đóng L sao cho Z(L) = I, ở
đây L(A) = ∩ {A' ∈ I : A ⊆ A'}.
48
• •
• •
• •
Lớp các hàm đóng
Lớp các nửa dàn giao
Như vậy, từ Định lí 6 mục trên và Định lí 4,
chúng ta thấy có một tương ứng 1-1 giữa lớp các nửa
dàn giao và lớp các họ các phụ thuộc hàm trên R .
Định nghĩa 5
Giả sử N ⊆ P(R). Khi đó N được gọi là tập
không giao nếu với mọi A ∈ N thì A ≠ ∩ {A' ∈ N :
A ⊂ A'}.
Định lí 6
Nếu I là nửa dàn giao, thì NI là tập không giao.
Ngược lại nếu N là tập không giao thì tồn tại duy
nhất một nửa dàn giao I sao cho NI = N.
Như vậy, chúng ta thấy có một tương ứng 1-1
giữa lớp các nửa dàn giao và lớp các tập không giao.
49
• •
• •
• •
Lớp các nửa dàn giao Lớp
các tập không giao
Từ Định lí 6 mục trên và các Định lí 4 và 6 chúng
ta rút ra kết luận là có một tương ứng 1-1 giữa lớp
các họ phụ thuộc hàm với lớp các tập không giao.
Như vậy, để nghiên cứu phân tích các đặc trưng
của họ các phụ thuộc hàm chúng ta có thể dùng công
cụ nửa dàn giao hoặc tập không giao.
Bây giờ chúng tôi đưa ra khái niệm họ cực đại
các thuộc tính. Đồng thời chúng ta chỉ ra rằng họ này
là một mô tả tương đương của họ phụ thuộc hàm.
Định nghĩa 7
Giả sử R là tập các thuộc tính. Họ M={(A,{a}):
A ⊂ R, a ∈ R} được gọi là họ cực đại các thuộc tính
trên R nếu nó thoả mãn các điều kiện sau
(1) a ∉ A,
50
(2) Đối với mọi (B, {b}) ∈ M, a ∉ B và A ⊆ B
kéo theo A = B.
(3) ∃ (B,{b}) ∈ M : a ∉ B, a ≠ b, và La ∪ B là
một hệ Sperner trên R, ở đây La = {A: (A, {a}) ∈ M}.
Nhận xét 8.
- Có thể có (A, {a}), (B, {b}) ∈ M mà a ≠ b,
nhưng A = B.
- Do (1) và (2) có thể thấy đối với a ∈ R chúng
ta có La là một hệ Sperner trên R. Đặc biệt có thể
La là một hệ Sperner rỗng.
- Trên cơ sở Định nghĩa 7 chúng ta có thể thấy
tồn tại một thuật toán thời gian tính đa thức để xác
định một tập Y ⊆ P(R) x P(R) có là một họ cực đại
các thuộc tính trên R hay không.
Giả sử H là một hàm đóng trên R. Đặt Z(H) =
{A : H(A) = A} và M(H) = {(A, {A}) : A ∉ A, A ∈
Z(H) và B ∈ Z(H), A ⊆ B, A ∉ B kéo theo A = B}.
Z(H) là họ các tập đóng của H. Dễ thấy, với mỗi
(A, {a}) ∈ M(H), A là tập đóng cực đại mà không
chứa a.
Có thể tồn tại (A, {a}), (B, {b}) ∈ M(H) mà a ≠
b, nhưng A = B.
51
Nhận xét 9.
Giả sử r là một quan hệ trên R và Fr là họ các
phụ thuộc hàm của r. Đặt Ar+ = {a: A → {a} ∈ Fr}
và Zr = {A: A = Ar+ } và Nr là hệ sinh cực tiểu của
nó. Có thể thấy Nr ⊆ Er với
Nr = {A ∈ Er : A ≠ ∩{B: B ∈ Er, A ⊂ B}}, ở đây
Er là hệ bằng nhau r.
Chúng ta cho định lí dưới đây chỉ ra rằng giữa
các hàm đóng và họ cực đạI các thuộc tính có tưong
ứng 1-1.
Định lí 10.
Giả sử H là một hàm đóng trên R. Khi đó M(H)
là họ cực đại các thuộc tính. Ngược lại, nếu M là họ
cực đạI các thuộc tính trên R thì tồn tại đúng một
hàm đóng H trên R để M(H) = M, ở đây với mọi B ∈
P(R).
∩ A if ∃ A ∈ L(M) : B ⊆ A,
H(B) = B ⊆ A
R ngược lại,
và L(M) = {A: (A, {a} ∈ M}.
Lời giải:
Giả sử H là hàm đóng trên R. Cơ sở trên định
nghĩa của M(H) ta có (1) và (2). Ta đặt L'a = { A : (A,
52
{a} ∈ M(H)}. Giả thiết có S (B, {b}) ∈ M(H) : a ≠
b, a ∉ B, L'a ∪ B là hệ Sperner trên R (*). Khi đó ta
chọn (B,{b}) ∈ M(H) sao cho B là lớn nhất cho (*).
Do (2) trong Định nghĩa 7 ta có La' là hệ Sperner trên
R. Do đó, không có một A nào mà A ∈ La' và B ⊆ A.
Phù hợp với định nghĩa của M(H) ta có (B,{a}) ∈
M(H). Như vậy, B ∈ La'. Điều này là vô lí. Từ đó ta
có (3) trong Định nghĩa 7. Có nghĩa là M(H) là họ cực
đại các thuộc tính trên R.
Ngược lại, giả sử M là họ cực đại các thuộc
tính trên R. Đặt L(M) = {A : (A, {a}) ∈ M}. Đầu tiên
ta chứng tỏ rằng L(M) là tập không giao trên R. Đối
với bất kì (A, {a}) ∈ M do Nhận xét 2.2 ta có A ≠ A'
∩ A" và A ≠ A' ∩ B, ở đây A', A" ∈ La và B ∈
L(M) : A ≠ B.
Nếu tồn tại (B, {b}), (C, {c}) ∈ M sao cho b ≠
a, c ≠ a, A ⊂ B, A ⊂ C thì bởi (2) trong Định nghĩa
2.1 ta có a ∈ B, a ∈ C. Từ đó, A ⊂ B ∩ C. Như vậy,
đối với A,B,C, ∈ L(M) nếu A = B ∩ C thì A = B
hoặc A = C. Do đó, L(M) là hệ không giao trên R.
Chúng ta biết rằng các họ không giao và các hàm
đóng xác định duy nhất lẫn nhau. Mặt khác phù hợp
với Nhận xét 8 và Định lí 13 mục trên ta có H là một
hàm đóng trên R và L(M) là hệ sinh tối tiểu của
Z(H).
53
Hiện ta sẽ chứng minh M(H) = M. Nếu (A, {a})
∈ M thì A ∈ L(M). Giả thiết rằng đối với mỗi b ∉
A có B ∈ Z(H) : A ⊂ B, b ∉ B. Có thể thấy rằng A
là giao của những B như thế. Điều này mâu thuẫn
với A ∈ L(M). Nếu (A, {a}) ∈ M thì có b ∉ A để (A,
{b}) ∈ M(H) (**).
Nếu (A, {a}) ∈ M(H) thì phù hợp với định nghĩa
của M(H) B ∈Z(H), và A ⊂ B kéo theo a ∈ B. Vì a
∉ A, ta thấy A không là giao của các B như thế. Theo
cấu trúc của H ta có A ∈ L(M). Như vậy, nếu (A,
{a}) ∈ M(H) thì A ∈ L(M) (***).
Bây giờ ta giả thiết là (A,{a}) ∈ M, nhưng (A,
{a}) ∉ M(H). Vì A là tập đóng của H,a ∉ A và bởi
định nghĩa của M(H) thì tồn tại (B,{a}) ∈ M(H) sao
chot A ⊂ B. Do (***) ta có B ∈ L(M). Điều này mâu
thuẫn với điều kiện (2) của Định nghĩa 7. Từ đó, ta
có (A,{a}) ∈ M(H).
Giả thiết (A,{a}) ∈ M(H), nhưng (A,{a}) ∉ M.
Nếu có A' ∈ La để A ⊂ A' thì bởi (**) ta có A' là một
tạp đóng của H. Phù hợp với định nghĩa của M(H) ta
có (A,{a}) ∉ M. Điều này là vô lí. Nếu A' ⊂ A thì
do (***) ta có (A',{a}) ∉ M, nó cũng vô lí. Nếu A ∪
La là hệ Sperner trên R thì bởi (***) ta có thể thấy nó
trái với điều kiện (3) của Định nghĩa 7. Do đó tồn tại
54
một A' mà A' ∈ La và A =A'. Từ đó ta có M(H) =
M.
Nếu ta giả thiết rằng có H' mà M(H') = M. Đặt
L(H') = {A : (A,{a}) ∈ M(H'). Theo (**) và (***)
của chứng minh trên ta có L(H') là một hệ sinh nhỏ
nhất của Z(H'). Do M(H') = M(H) = M ta có L(H') =
L(M) = L(H). Vì các hàm đóng và các tập không giao
là xã định duy nhất lẫn nhau nên H = H'.
• •
• •
• •
Lớp các hàm đóng Lớp các họ
cực đại các thuộc tính
Vì các hàm đóng và các họ các phụ thuộc hàm
tương ứng xác định duy nhất lẫn mhau, từ Định lí 2.4
ta có
Hệ quả 11.
Tồn tại tương ứng 1-1 giữa lớp các họ cực đại
các thuộc tính và họ các phụ thuộc hàm.
2.4. Các thuật toán liên quan đến các khoá
55
Khi giải quyết các bài toán thông tin quản lí,
chúng ta thường sử dụng các hệ quản trị cơ sở dữ
liệu mà trong đó chứa cơ sở dữ liệu quan hệ. Các
phép xử lí đối với lớp bài toán này thường là tìm
kiếm bản ghi sau đó thay đổi nội dung bản ghi, thêm
bản ghi mới hoặc xoá bản ghi cũ. Trong các thao tác
trên việc tìm kiếm bản ghi là rất quan trọng. muốn
tìm được bản ghi trong một file dữ liệu chúng ta phải
xây dựng khoá cho file dữ liệu đó.
Việc xây dựng khoá ở đây chính là xây dựng
khoá tối tiểu. Vì thế trong mục này chúng tôi cung
cấp cho bạn đọc hai thuật toán tìm khoá tối tiểu.
2.4.1 Thuật toán tìm khoá tối tiểu của một sơ
đồ quan hệ
Vào : sơ đồ quan hệ s = < F, R> trong đó :
F là tập các phụ thuộc hàm và
R={ a1 ,...., an } là tập các thuộc tính
Ra : K là một khoá tối tiểu
Thuật toán thực hiện như sau:
Tính liên tiếp các tập thuộc tính K0, K1....., Kn
như sau:
Ko = R = { a1 ,...., an }
Ki-1 nếu Ki-1 - {ai} →R∉ F+,
K I=
Ki-1 -{ai} ngược lại
56
...
K = Kn là khoá tối tiểu
2.4.2. Thuật toán tìm một khoá tối tiểu của
một quan hệ
Cho trước r = {h1,.... hm} là một quan hệ trên tập
thuộc tính R = { a1 ,...., an }
Hệ bằng nhau của quan hệ r được định nghĩa ở
phần trên như sau:
Er ={Eij : 1≤ i ≤ j ≤ m}, ở đây Ei j = {a ∈ R : hi
(a) = hj (a)}.
Dễ dàng thấy rằng Er được tính bằng thời gian
đa thức từ r
Thuật toán tìm một khoá tối tiểu của một quan
hệ r:
Vào: r = {h1,.... hm} là một quan hệ trên tập thuộc
tính R= { a1 ,...., an }
Ra: K là một khoá tối tiểu của r
Thuật toán thực hiện như sau
Bước 1: Tính Er ={ A1 ....At}
Bước 2 : Tính Mr = { A : có Aj ∈ Er : A = Aj và
không có Ai : Ai∈Er: A ⊂ Ai }
57
Bước 3 : Lần lượt tính các tập thuộc K1, K2, ....Kn
tính theo qui tắc :
K0 = R= { a1 ,...., an } hoặc K0 = một khoá đã biết
Ki = Ki-1 - { ai } nếu không tồn tại A ∈ Mr sao
cho Ki-1 - {ai} ⊆ A hoặc Ki = Ki-1 trong trường hợp
ngược lại
Bước 4: Đặt K = Kn , khi đó K là khoá tối tiểu
2.5. Mối quan hệ giữa quan hệ Armstrong và sơ
đồ quan hệ
Việc xây dựng quan hệ Armstrong của một sơ
đồ quan hệ cho trước và ngược lại từ quan hệ cho
trước ta xây dựng một SĐQH sao cho quan hệ cho
trước này là quan hệ Armstrong của nó có vai trò rất
quan trọng trong việc phân tích cấu trúc lôgic của mô
hình dữ liệu quan hệ cả trong thiết kế lẫn trong ứng
dụng. Đã có nhiều tác giả nghiên cứu vấn đề này.
Trong mục này chúng tôi trình bày hai thuật toán giải
quyết bài toán trên và đưa ra việc đánh giá các thuật
toán này cũng như đánh giá độ phức tạp của bài toán
trên.
Trước tiên, chúng ta cho một thuật toán tìm tập
tất cả các phản khoá của hệ Spernner cho trước.
Thuật toán 1 ( Tìm tập phản khoá )
58
Vào: K = {B1,...,Bn} là hệ Sperner trên R.
Ra: K-1.
Bước 1: Ta đặt K1 = {R - {a}: a ∈ B1}. Hiển
nhiên K1 = {B1}-1.
Bước q + 1: (q < m). Ta giả thiết rằng Kq = Fq ∪
{X1... X tq}, ở đây X1,....,Xtq chứa Bq+1 và Fq = { A ∈ Kq
: Bq+1 ⊆ A }. Đối với mỗi I ( I = 1,..., tq ) ta tìm các
phản khoá của { Bq+1 } trên Xi tương tự như K1. Kí
pháp chúng là Ai1,..., Arii . Đặt
Kq+1 = Fq ∪ {Aip : A ∈ Fq kéo theo Aip ⊄ A,1 ≤ i
≤ tq. 1 ≤ p ≤ ri}
Cuối cùng ta đặt K-1 = Km
Định lí 2.
Với mọi q (1 ≤ q ≤ m), Kq = { B1,.... Bq}-1, có
nghĩa là Km = K-1.,
Rõ ràng, K và K-1 là xác định duy nhất lẫn nhau
và từ định nghĩa của K-1 có thể thấy thuật toán của
chúng ta không phụ thuộc vào thứ tự của dãy B1,...,
Bm. Đặt Kq = Fq ∪ {X1,..., Xtq} và lq ( 1 ≤ q ≤ m-1) là
số các phần tử của Kq. Khi đó ta có
Mệnh đề 3
Độ phức tạp thời gian tồi nhất của Thuật toán
2.1 là
m-1
59
O ( | R| 2 ∑ tq.uq).
q=1
ở đây lq - tq, nếu lq > tq,
uq =
1 nếu lq = tq
Rõ ràng trong mỗi bước thuật toán ta có Kq là
hệ Sperner trên R. Ta biết rằng[5] kích thước của hệ
Sperner bất kì trên R không vượt quá Cn[n/2], ở đây n =
| R| . Có thể thấy Cn[n/2] xấp xỉ bằng 2n+1/2/ (Π. n1/2). Từ
đó độ phức tạp thời gian tồi nhất của thuật toán trên
không nhiều hơn hàm số mũ theo n. Trong trường
hợp mà lq ≤ lm (q = 1,..., m-1), dễ thấy rằng độ phức
tạp thuật toán không lớn hơn O( | R| 2 | K| | K-1| 2 ). Như
vậy, trong các trường hợp này độ phức tạp của
Thuật toán 1 tìm K-1 là đa thức theo | R| , | K| , and | K-
1
| . Có thể thấy nếu số lượng các phần tử của K là
nhỏ thì Thuật toán 1 là rất hiệu quả. Nó chỉ đòi hỏi
thời gian đa thức theo |R|
Định nghĩa 4
Cho s = (R,F) là SĐQH trên R và a ∈ R. Đặt
Ka = { A ⊆ R:A → {a}, ∃ B: (B → {a})(B ⊂ A)}.
Ka được gọi là họ các tập tối tiểu của thuộc tính a.
Rõ ràng, R ∉ Ka, {a} ∈ Ka và Ka là hệ Sperner
trên R.
60
Thuật toán 5. (Tìm tập tối tiểu của thuộc tính a)
Vào: Cho s = (R = {a1,..., an}, F) là SĐQH, a = a1.
Ra: A ∈ Ka.
Bước 1: Ta đặt L(0) = R.
Bước i + 1: Đặt
L(i) - ai+1 nếu L(i) - ai+1 → {a},
L(i+1) =
L(i), ngược lại.
Khi đó A = L(n).
Bổ đề 6.
L(n) ∈ Ka
Lời giải: Bằng phương pháp chứng minh qui
nạp có thể thấy L(n) → {a}, và L(n) ⊆ ... ⊆ L(0) (1).
Nếu L(n) = a, thì bởi định nghĩa của tập tối tiểu của
thuộc tính a ta thu được L(n) ∈ Ka. Bây giờ ta giả
thiết là tồn tại một B sao cho B ⊂ L(n) và B ≠ 0.
Như vậy sẽ có aj sao cho aj ⊄ B, aj ∈ L(n). Theo các
xây dựng thuật toán này ta có L(j-1) - aj → {a}. Rõ
ràng bởi (1) ta thu được L(n) - aj ⊆ L(j-1) - aj (2).
Dễ thấy B ⊆ L(n) - aj.
Từ (1), (2) ta có B → {a}.
61
Dễ thấy, vì thuật toán xác định một phụ thuộc
hàm bất kì có phải là phụ thuộc hàm của một SĐQH
hay không là có độ phức tạp thời gian đa thức, nên
độ phức tạp của Thuật toán 5 là O(| R| 2 | F| ).
Bổ đề 7.
Cho s = (R,F) là SĐQH trên R và a ∈ R, Ka là họ
các tập tối tiểu của a, L ⊆ Ka, {a} ∈ L. Khi đó L ⊂
Ka nếu và chỉ nếu tồn tại C, A → B sao cho C ∈ L và
A → B ∈ F và ∀ E ∈ L => E ⊆ A ∪ ( C- B).
Lời giải. =>: Ta giả thiết rằng L ⊂ Ka. Do đó,
tồn tại D ∈ Ka - L. Bởi {a} ∈ L và Ka là hệ Sperner
trên R, chúng ta có thể xây dựng một tập cực đại Q
sao cho D ⊆ Q ⊂ U và L ∪ Q là hệ Spernner. Từ định
nghĩa của Ka, chúng ta thu được Q → {a} (1) và a ∉ Q
(2). Nếu A → B ∈ F kéo theo (A tb Q, B ⊆ Q) hoặc
A ⊆ Q thì Q+ = Q. Bởi (2) ta có Q → {a}. Điều này
mâu thuẫn với (1). Do đó, tồn tại một phụ thuộc hàm
A → B sao cho A ⊆ Q, B ⊆ Q. Từ cách xây dựng của
Q có C sao cho C ∈ L, A ⊆ Q, C - B ⊆ Q. Hiển nhiên
rằng A ∪ (C-B) ⊆ Q.
Rõ ràng, E ⊆ A ∪ (C-B) đối với mọi E ∈ L.
tiq hoặc ui q = 1 nếu li q = tiq
Trong trường hợp li q ≤ (∀ i, ∀ q : 1 ≤ q ≤ mi ),
độ phức tạp thuật toán của chúng ta là
n
∑
O(n i=1 Ka i (n F + Ka i F + n Ka-1 2)).
Như vậy, độ phức tạp thuật toán 2.11 là đa thức
theo R , F , Ka i , Ka-1 . Rõ ràng, trong các
trường hợp này nếu Kai và Ka-1 là đa thức (đặc
biệt nếu chúng là nhỏ) theo R và F , thì thuật
toán của chúng ta là hiệu quả.
Bây giờ chúng ta sử dụng thuật toán 11 để xây
dựng quan hệ Armstrong cho sơ đồ quan hệ trong ví
dụ dưới đây.
Ví dụ 13
66
Cho s = là một sơ đồ quan hệ, ở đây R
= {a,b,c,d} và F = {{a,d} → R, {a} → {a,b,c},{b,d} →
{b,c,d}}.
Bởi thuật toán 8, chúng ta thu được Ka = {a}.Kb =
{{a},{b}},Kc ={{a},{b,d},{c}}, Kd = {d}.
Trên cơ sở thuật toán 1, ta có Ka-1 = {b,c,d }, Kb-1
= {c,d}, Kc-1 = {{b},{d}}, K-1d = {a,b,c}.
Do đó, N(F) = {{a,b,c }, {b,c,d}, {c,d}, {b}, {d}}.
Khi đó ta xây dựng quan hệ r như sau:
a b c d
0 0 0 0
0 0 0 1
2 0 0 0
3 3 0 0
4 0 4 4
5 5 5 0
Bây giờ chúng ta xây dựng một thuật toán tìm
một sơ đồ quan hệ s từ một quan hệ cho trước sao
cho quan hệ này là quan hệ Armstrong của s.
Thuật toán 14 (Tìm một khoá tối thiểu từ tập
các phản khoá).
67
Vào: Cho K là một hệ Sperner, H là một hệ
Sperner, và C = {b1,...,bm} ⊆ R sao cho H-1 = K và ∃
B ∈ K : B ⊆ C.
Ra : D ∈ H
Bước 1: Đặt T(0) = C
Bước i+1: Đặt T = T(i) - bi+1
T nếu ∀ B ∈ K : T ∉ B
T( i+1) =
T(i) ngược lại
Cuối cùng đặt D = T(m)
Bổ đề 15. Nếu K là tập các phản khoá thì T(m)
∈ H.
Bổ đề 16. Cho H là một hệ Sperner trên R, và H-
1
= { B1,...,Bm} là tập các phản khoá của H, T ⊆
H .Khi đó T ⊂ H, T ≠ ∅ nếu và chỉ nếu tồn tại B
⊆ U sao cho B ∈ T-1 , B ∉ Bi ( ∀ i : 1 ≤ i ≤ m).
Cơ sở trên bổ đề 16 và thuật toán 14 chúng ta
xây dựng thuật toán sau.
Thuật toán 17. Tìm tập các khoá tối thiểu từ tập
các phản khoá.
Vào: Cho K = {B1,...,Bk } là một hệ Sperner trên
R
Ra: H mà H-1 = K
68
Bước 1: Nhờ thuật toán 2.14 chúng ta tính A1,
đặt K(1) = A1
Bước i+1: Nếu có B ∈ Ki-1 sao cho B ∉ Bj ( ∀ j:
1≤ j ≤ k), thì bởi Thuật toán 2.14 chúng ta tính A i+1 ,
ở đây A i+1 ∈ H , A i+1 ⊆ B. Đặt K(i+1) = K(i) ∪ A i+1
. Trong trường hợp ngược lại ta đặt H=K(i).
Mệnh đề 18. Độ phức tạp của Thuật toán 17 là
m −1
∑
O( n ( q=1 ( k lq + n tq uq) + k2 + n))
ở đây R = n, K = k, H = m, ý nghĩa của lq
, tq, uq, xem trong mệnh đề 3.
Rõ ràng , trong các trường hợp mà lq ≤ k (∀ q :
1≤ q ≤ m-1) độ phức tạp thời gian của thuật toán là
O ( R 2 K 2 H ). Dễ thấy trong các
trường hợp này thuật toán 2.17 tìm tập các khoá tối
tiểu có độ phức tạp thời gian là đa thức trong kích
thước của R, K, H.
Nếu H là đa thức theo R và K , thì thuật
toán là hiệu quả. Có thể thấy rằng nếu số lượng các
phần tử của H là nhỏ thì thuật toán 17 là rất hiệu
quả.
Bổ đề 19.
Cho F là một họ f trên R, a ∈R. Đặt LF(A) = {a
∈ R: ( A , {a}) ∈ F}, ZF = {A : LF (A) = A}. Rõ ràng,
69
R ∈ ZF, A,B ∈ ZF → A ∩ B ∈ ZF. Kí pháp NF là hệ
sinh tối tiểu ZF . Đặt Ma = { A ∈ NF : a ∉ A, ∃ B ∈
NF: a ∉ B,A ⊂ B}. Khi đó Ma = MAX (F,a), ở đây
MAX(F,a) = {A ⊆ U : A là một tập cực đại không
rỗng mà (A,{a}) ∉ F}.
Lời giải:
Biết rằng [27] MAX(F,a) ⊆ NF (1). Giả thiết
rằng A ∈ Ma. Bởi A ∈ NF, có nghĩa là LF (A) = A, và a
∉ A , ta thu được ( A, {a}) ∉ F. Từ (1) và phù hợp
với định nghĩa của Ma ta có A ∈ MAX(F,a).
Ngược lại, Nếu A ∈ MAX (F,a) thì do (1) ta có
A ∈ NF (2). Do (A,{a}]) ∉ F và từ (2) ta thu được a ∉
A. Phù hợp với định nghĩa của MAX(F,a) ta có A ∈
Ma .
Trên cơ sở Thuật toán 17 và Bổ đề 19, ta xây
dựng thuật toán dưới đây để tìm SĐQH s =
cho một quan hệ r cho trước sao cho F+ = Fr.
Thuật toán 20. (Tìm SĐQH)
Vào: r là quan hệ trên R
Ra: s = mà F+ = FR
Bước1: Từ r ta tính hệ bằng nhau Er
Bước 2: Đặt Nr = { A ∈ Er : A ≠ ∩ { B ∈ Er :
A ⊂ B}}
70
Bước 3: Với mỗi a ∈ R ta xây Na = {A ∈ Nr : a
∉ A ∃ B ∈ Nr : a ∉ B , A ∈ B } . Sau đó, bởi Thuật
toán 17 ta xây họ Ha( Ha-1= Na)
Bước 4: Xây s = , ở đây F = {A → {a} :
∀ a ∈ R , A ∈ Ha,A ≠ {a}}
Mệnh đề 21.
FR = F+
Lời giải: Vì FR là một họ f trên R, có thể thấy
NF r ⊂ Er, ở đây NFr là hệ sinh nhỏ nhất của ZFr. Do
định nghĩa của hệ sinh nhỏ nhất ta có Nr = NFr. Do đó
ta có Na = Ma. Từ định nghĩa của tập phản khoá và
định nghĩa của tập Ka ta có Ha= Ka. Tù đó ta thu được
F+ ⊆ FR .
Ngược lại, nếu A → B = {b1,...,bt} ∈ FR thì bởi
việc xây dựng của F ta thu được A → {bi} ∈ F+ với
mỗi i=l,...,t. Vì không có phụ thuộc hàm tầm thường
{a} → {a} trong F, dễ thấy với mọi i=1,...,t, nếu
không có phụ thuộc hàm B → {bi} ∈ F , ở đây B ⊆
U - bi, thì bi ∈ A. Từ đó ta có A → B ∈ F+.
Có thể thấy Er, Nr, Na với a ∈ R được xây trong
thời gian đa thức theo kích thước của r. Rõ ràng, việc
xây dựng F phụ thuộc vào kích thước của Ha( ∀ a ∈
R). Do đó, độ phức tạp thời gian tồi nhất của Thuật
toán 20 là
71
n mi - 1
n m i−1
∑ ∑
O ( n i=1 ( q=1 (kili q + nti q ui q ) + ki2 + n))
ở đây R = { a1,..., an}, Nai = ki , Hai = mi, ý nghĩa
của các li q, ti q, ui q xem các Mệnh đề 3 và 18.
Dễ thấy, nếu li q ≤ ki ( ∀ i, ∀ q : 1≤ q ≤ mi -
1), thì độ phức tạp thời gian của thuật toán của
chúng ta là
n
∑
O (n i=1 ki2 mi )
2
Bởi vì ki là đa thức theo kích thước của r, trong
các trường hợp nếu is mi là đa thức theo kích thước
của r, thì thuật toán của chúng ta là hiệu quả. Lúc đó
độ phức tạp của nó là đa thức theo kích thước của r.
Nếu Ha là nhỏ thì thuật toán của ta rất hiệu quả.
Bây giờ, nhờ Thuật toán 20 chúng ta xây dựng
SĐQH s = cho quan hệ sau đây.
Ví dụ 22 r là quan hệ sau đây trên R = {a, b, c, d}:
a b c d
6 6 6 0
0 2 0 2
0 0 0 0
0 0 0 3
4 4 0 0
5 0 5 5
1 0 0 0
72
Dễ thấy là
ER = {{a,b,c}, {b,c,d}. { a,c}, { b,c}, {c,d}.{b},
{c},{d}, ∅},
NR = {[a,b,c}, {b,c,d},{a,c},{c,d},{b},{d}},
Na = {b,c,d}, Nb= {{a,c},{c,d}},
Nc = {{b},{d}}, Nd ={a,b,c}
Ta có Ha = {a}, Hb = {{b}, {a,d}}, Hc = {{a},
{b,d},{c}}, Hd = {d}.
Ta xây dựng s = (R,F) như sau:
R = {a,b,c,d}, F = {{a,d} → {b},{a} → {c},{b,d}
→ {c}}.
Chúng ta trình bày hai kết quả cơ bản về độ
phức tạp thuật toán cho việc xây dựng quan hệ
Armstrong cho một SĐQH cho trước và ngược lại.
Định lí 23
Độ phức tạp thời gian cho việc tìm kiếm một
quan hệ Armstrong của một SĐQH cho trước là hàm
số mũ theo số lượng của các thuộc tính.
Định lí 24
Độ phức tạp thời gian cho việc tìm kiếm một
SĐQH s = từ một quan hệ r cho trước sao cho
Fr = F+ là hàm số mũ theo số lượng các thuộc tính.
73
Chương 3
Các dạng chuẩn
và các thuật toán liên quan
Việc chuẩn hoá các quan hệ cũng như các sơ đồ
quan hệ đóng một vai trò cực kì quan trọng trong
việc thiết kế các hệ quản trị cơ sở dữ liệu trên mô
hình dữ liệu của Codd. Nhờ có chuẩn hoá các quan
hệ và các sơ đồ quan hệ chúng ta tránh được việc dư
thừa dữ liệu và tăng tốc độ của các phép toán xử lí
quan hệ.
3.1 Các khái niệm cơ bản
Chúng ta định nghĩa các dạng chuẩn như sau.
Cho r = {h1,...,hm} là quan hệ trên R = {a1 ...., an}
Định nghĩa 1. (Dạng chuẩn 1 - 1NF):
r là dạng chuẩn 1 nếu các phần tử của nó là sơ
cấp.
74
Khái niệm sơ cấp hiểu ở đây là giá trị hi(aj)
(i=1,...,m; j=1,...,n) không phân chia được nữa.
Định nghĩa 2 (Dạng chuẩn 2 - 2NF)
r là dạng chuẩn 2 nếu:
- r là dạng chuẩn 1
- A → {a} ∉ Fr đối với mọi khoá tối thiểu K, A
⊂ K và a là thuộc tính thứ cấp.
Định nghĩa 3. ( Dạng chuẩn 3 - 3NF):
r là dạng chuẩn 3 nếu:
A → {a} ∉ Fr đối với A mà A+ ≠ R, a ∉ A, a
∉∪ K
Có nghĩa rằng :
- K là một khoá tối tiểu
- a là thuộc tính thứ cấp
- A không là khoá
- A → {a} không đúng trong r
Định nghĩa 4. (Dạng chuẩn Boye-Codd - BCNF)
r là dạng chuẩn của Boye-Codd nếu:
A → {a} ∉ Fr đối với A mà A+ ≠ R, a ∉ A
Nhận xét 5
Qua định nghĩa, ta có thể thấy dạng chuẩn
75
BCNF là 3NF và 3NF là 2NF. Tuy vậy, chúng ta có
thể đưa ra các ví dụ chứng tỏ có quan hệ là 2NF
nhưng không là 3NF và có quan hệ là 3NF nhưng
không là BCNF.
Nói cách khác là lớp các quan hệ BCNF là lớp
con thực sự của lớp các quan hệ 3NF và lớp các quan
hệ 3NF này lại là lớp con thực sự của lớp các quan
hệ 2NF.
Đối với s = thì các dạng chuẩn 2NF,
3NF, BCNF trong đó ta thay Fr bằng F+.
Chú ý là đối với sơ đồ quan hệ ta không có dạng
1NF.
Nhận xét 5 cũng đúng cho các dạng chuẩn của
sơ đồ quan hệ. Chúng ta xem ví dụ sau
Ví dụ 6.
Cho s = , s' = '210397' (doanh số)) và in ra
bảng sau:
115
Ngày tháng Tổng
220397 6 000
230397 15 000
- Chúng ta muốn biết các tên hàng và số lượng
đã bán trong ngày 21 tháng 03 năm 1997.
Π Tên hàng, số lượng ( δ Ngày tháng='210397' (Khối lượng)
Hàng)
Tên hàng Số lượng
Radio 1
TV 2
Xe đạp 1
- Tìm các ngày mà trong các ngày đó doanh số
bán ra ít nhất là 10.000.000đ
Π Ngày tháng ( δ Tổng'≥ '10 000' (doanh số))
Ngày tháng
210197
230397
116
- In ra các mã và tên hàng mà đơn giá của nó nhỏ
hơn 3.000.000đ
Π Tên hàng, Mã hàng ( δ Đơn giá' < Π Mã
hàng, Đơn giá (Hàng Mặt Hàng).
Mã hàng Đơn giá
M1 1000
M4 5000
M9 2000
- Tìm tên, đơn giá của mã hàng M1 và số lượng
bán ra của mặt hàng này trong ngày 23 tháng 03 năm
1997
117
Π Tên hàng, Đơn giá, Số lượng (Π Mã hàng, Số lượng (δ Ngày tháng =
'230397' ∧Mã hàng = M1 (khối lượng) > < hàng Mặt hàng).
Tên hàng Đơn giá Số lượng
Radio 1000 3
Ví dụ: Cho 2 quan hệ
r1 =
Chuyến bay Máy bay
83 727
83 747
84 727
84 747
109 707
r2 =
Phi công Máy bay
118
Tuấn 707
Tuấn 727
Thành 747
Thắng 727
Thắng 747
Chúng ta cần in ra một bảng chỉ ra các phi công
có thể lái cho mỗi chuyến bay. Khi đó chúng ta chỉ
cần thực hiện phép nối tự nhiên giữa r1 và r2.
r3 = r1 r2
Chuyến bay Máy bay Phi công
83 727 Tuấn
83 727 Thắng
83 747 Thành
83 747 Thắng
119
84 727 Tuấn
84 727 Thắng
84 747 Thành
84 747 Thắng
109 707 Tuấn
Đơn giản hơn ta thực hiện
Π Chuyến bay, Phi công (r3)
Chuyến bay Phi công
83 Tuấn
83 Thắng
83 Thành
84 Tuấn
84 Thắng
84 Thành
120
109 Tuấn
Chương 5
Một số áp dụng mô hình
dữ liệu trong các hệ quản trị CSDL
hiện có
5.1. Mô tả chung
Chương này mô tả việc áp dụng các khái niệm
của chương 2, 3 trong các hệ QTCSDL hiện có trên
thị trường. Các khái niệm này bao gồm thực thể,
121
thuộc tính, khoá , quan hệ, phụ thuộc hàm, các dạng
chuẩn.
5.2. Những khái niệm cơ bản
Trong phần này chúng tôi nêu lại một vài khái
niệm đã được trình bày sơ bộ ở chương 2.
5.2.1. Thực thể
Thực thể là một hình ảnh tượng trưng cho một
đối tượng cụ thể hay một khái niệm trừu tượng
nhưng có mặt trong thế giới thực.
Ví dụ:
Dự án, con người, sản phẩm, ...
Thông thường khi xây dựng mô hình dữ liệu các
thực thể được biểu diễn bằng những hình chữ nhật
ví dụ như
Sản phẩm
5.2.2. Thuộc tính
Trong một hệ thông tin, ta cần lựa chọn một số
tính chất đặc trưng để diễn tả một thực thể, các tính
chất này được gọi là thuộc tính của thực thể được
mô tả và đây cũng chính là các loại thông tin dữ liệu
cần quản lí.
Ví dụ:
122
Họ tên, địa chỉ, ngày sinh của thực thể 'sinh viên'
Nhãn hiệu, giá của thực thể 'sản phẩm'
Giá trị các thuộc tính của một thực thể cho phép
diễn tả một trường hợp cụ thể của thực thể, gọi là
một thể hiện của thực thể đó .
Ví dụ:
('Trần Văn Sơn', '204 Triệu Việt Vương - Hà
Nội', 12-5-1975) là một thể hiện của 'sinh viên'
('Máy vi tính ACER', 1349) là một thể hiện của
'sản phẩm'
Một thuộc tính là sơ cấp khi ta không cần phân
tích nó thành nhiều thuộc tính khác, tuỳ theo nhu cầu
xử lí trong hệ thông tin đối với một thực thể.
Thông thường một thực thể tương ứng với một
bảng (hay một quan hệ của Codd).
Mỗi thực thể phải có ít nhất một thuộc tính mà
mỗi giá trị của nó vừa đủ cho phép nhận diện một
cách duy nhất một thể hiện của thực thể, gọi là
thuộc tính nhận dạng hay là khoá. Có nhiều trường
hợp chúng ta phải dùng một tập các thuộc tính để
nhận diện thực thể. Khi một thực thể có nhiều khoá,
người ta chọn một trong số đó làm khoá chính (khóa
123
tối tiểu). Giá trị của một khoá luôn luôn được xác
định.
Ví dụ:
Số hoá đơn là thuộc tính nhận dạng của thực thể
"Hoá đơn".
Không thể có hai hay nhiều hoá đơn có cùng số
hoá đơn trong cùng một hệ thông tin.
Ví dụ:
Hoá Đơn
Số Hoá Đơn
Khách Hàng
Giá Tiền
5.2.3. Quan hệ
Khái niệm quan hệ ở mục này (khác với khái
niệm quan hệ của Codd) được dùng để nhóm họp 2
hay nhiều thực thể với nhau nhằm biểu hiện một
mối liên quan tồn tại trong thế giới thực giữa các
thực thể này. Kích thước của một quan hệ là số thực
thể đã cấu thành nên quan hệ, và có thể là một số
124
nguyên bất kỳ. Tuy vậy, trong thực tiễn, người ta
luôn tìm cách tránh dùng đến những quan hệ có kích
thước lớn hơn 3.
Trong một mô hình dữ liệu các quan hệ được
biểu diễn bằng những hình tròn hoặc elipse. Trong
một số trường hợp, mối quan hệ cũng có thể có
những thuộc tính riêng.
Ví dụ:
Hoá đơn dùng để thanh toán một số sản phẩm
bán ra. Mỗi dòng hoá đơn cho biết tổng giá của mỗi
sản phẩm.Đây là một quan hệ có kích thước là 2, còn
gọi là quan hệ nhị nguyên.
Hoá đơn Dòng hoá đơn Sản phẩm
- Tổng giá sản phẩm
Người ta đưa ra khái niệm những vai trò khác
nhau của cùng một thực thể để có thể biểu diễn mối
quan hệ giữa thực thể này với chính nó. Vì loại quan
hệ này ít dùng nên trong Giáo trình này chúng tôi
không trình bày loại quan hệ đó.
125
5.2.4. Phân loại các quan hệ
Xét R là một tập quan hệ và E là một thực thể
cấu thành của R, mỗi cặp (E,R) được biểu thị trên sơ
đồ khái niệm dữ liệu bằng một đoạn thẳng. Với
thực thể E, ta có thể xác định được:
- X là số tối thiểu các thể hiện tương ứng với E
mà R có thể có trong thực tế.
Giá trị của X như vậy chỉ có thể bằng 0 hay 1.
- Y là số tối đa các thể hiện tương ứng với E mà
R có thể có trong thực tế.
Giá trị của Y có thể bằng 1 hay một số nguyên N
>1.
Cặp số (X, Y) được định nghĩa là bản số của
đoạn thẳng (E,R) và có thể lấy các giá trị sau: (0,1),
(1,1), (0,N) hay (1,N), với N > 1.
Đối với loại quan hệ nhị nguyên R liên kết giữa
hai thực thể A và B, ta phân thành ba loại quan hệ cơ
bản sau:
- Quan hệ 1-1 (một - một): mỗi thể hiện của
thực thể A được kết hợp với 0 hay 1 thể hiện của B
và ngược lại.
X,1 R Y,1
A B
X và Y có thể lấy các giá trị 0 và 1
126
Ví dụ:
Mỗi độc giả ở một thời điểm chỉ được đọc một
quyển sách.
1,1 0,1
Độc giả Đọc Cuốn sách
- Quan hệ 1 - N (một - nhiều): Mỗi thể hiện của
thực thể A được kết hợp với 0,1 hay nhiều thể hiện
của B và mỗi thể hiện của B được kết hợp với một
thể hiện duy nhất của A. Đây là một loại quan hệ
thông dụng và đơn giản nhất.
X,N 1,1
A R B
X có thể lấy các giá trị 0 và 1
Ví dụ:
Một khách hàng có thể có nhiều hoá đơn
Một hoá đơn chỉ có thể mang tên một khách
hàng.
0, n 1, 1
Dòng hoá đơn
Khách hàng Hoá đơn
127
- Quan hệ N - P (nhiều - nhiều): Mỗi thể hiện
của một thực thể A được kết hợp với 0, 1 hay nhiều
thể hiện của B và ngược lại, mỗi thể hiện của B
được kết hợp 0, 1 hay nhiều thể hiện của A
X, N Y, N
A R B
X và Y có thể lấy các giá trị 0 hoặc 1
Ví dụ:
Một hoá đơn dùng để thanh toán một hay nhiều
sản phẩm
Một sản phẩm có thể xuất hiện trong 0, 1 hay
nhiều hoá đơn.
Thông thường quan hệ N - P chứa các thuộc tính.
Chúng ta biến đổi loại quan hệ này thành thực thể và
thực thể này cần được nhận dạng bởi một khoá
chính.
5.3. Các dạng chuẩn trong các hệ QTCSDL hiện
có
Trong mục này chúng tôi trình bày một số ý
nghĩa của phụ thuộc hàm và mối liên hệ của nó với
việc chuẩn hoá trong thực tiễn
5.3.1. Một số phụ thuộc hàm đặc biệt
128
Trên cơ sở của định nghĩa phụ thuộc hàm đã
trình bày ở chương 2 chúng ta có thể thấy:
- Nếu B phụ thuộc hàm vào A (A→ B), thì với
mỗi giá trị của A tương ứng với một giá trị duy nhất
của B. 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 A đến tập hợp những
giá trị của B.
Ví dụ: Trong một hoá đơn bao gồm các thuộc
tính 'số hoá đơ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'
Chúng ta có thể mở rộng khái niệm phụ thuộc
hàm khi cho phép A hoặc B là một thực thể hoặc là
một quan hệ.
Ví dụ: Ta có hai thực thể 'Hoá đơn' và 'Khách
hàng'
Khi đó: Thực thể 'Hoá đơn' → 'Thuộc tính 'Tên
khách hàng'
Thực thể 'Hoá đơn' → thực thể 'Khách hàng'
Thuộc tính 'Số hoá đơn' → thực thể 'Khách hàng'
129
Trong chương 3 ta trình bày phụ thuộc hàm hoàn
toàn và phụ thuộc hàm trực tiếp. Hai loại phụ thuộc
hàm này đóng vai trò quan trong các dạng chuẩn.
Các dạng chuẩn được đề ra với mục đích để
đảm bảo tính nhất quán và tránh việc trùng lặp các
thông tin. Trong mục này chúng ta sẽ quay trở lại với
các dạng chuẩn. Các dạng chuẩn này có những biến
đổi điều kiện ràng buộc đơn giản hơn so với các
dạng chuẩn đã trình bày trong chương 3.
5.3.2. Dạng chuẩn 1
Chúng ta nói rằng một thực thể hay quan hệ ở
dạng chuẩn 1 nếu tất cả giá trị các thuộc tính của nó
là sơ cấp. Điều kiện ràng buộc giống như 1NF của
chương 3. Định nghĩa của dạng chuẩn 1 mang tính
mô tả. Thông thường giá trị các thuộc tính là các dãy
kí tự hoặc là các số như trong FOXPRO, khi đó
chúng ta cho các giá trị này là sơ cấp
Để minh họa ta đưa ra thực thể sau đã trình bày
trong mục 4.3.
Bán hàng
Ngày Mã Tên Đơn Số Tổng Thanh
tháng hàn hàng giá lượ toán
g ng
2103 M1 Radio 1 1 10 6 000
97 000 000
130
2103 M3 TV 4 2 10 6 000
97 000 000
2103 M6 Xe 1 1 10 6 000
97 đạp 000 000
2203 M2 Máy 3 2 6 000 2 000
97 giặt 000
2303 M1 Radio 1 3 15 11 000
97 000 000
2303 M4 Video 5 2 15 11 000
97 000 000
2303 M9 Máy 2 1 15 11 000
97 ảnh 000 000
Chúng ta chọn khoá chính (nó là một khoá tối
tiểu) cho thực thể bán hàng là tập {Ngày tháng, Mã
hàng}
5.3.3. Dạng chuẩn 2
Một thực thể hay quan hệ là 1NF được xem là
dạng chuẩn 2 nếu tất cả các phụ thuộc hàm giữa
khoá chính và các thuộc tính khác của nó đều là hoàn
toàn .
Chú ý rằng định nghĩa dạng chuẩn 2 trong
chương 2 chặt hơn vì điều kiện phụ thuộc hoàn toàn
liên quan đến mọi khoá tối tiểu, chứ không chỉ liên
131
quan đến một khoá tối tiểu được chọn làm khoá
chính.
Trong ví dụ trên, thực thể Bán hàng đã là 1NF, ta
nhận thấy đối với khoá chính {số phiếu, mã vật tư}
các thuộc tính Tổng và Thanh toán phụ thuộc hàm
vào thuộc tính Ngày tháng, các thuộc tính Tên hàng,
Đơn giá phụ thuộc hàm vào thuộc tính Mã hàng.
Ngày tháng, Mã hàng là hai thuộc tính của khóa chính.
Do đó dẫn đến trùng lặp dữ liệu. Thực thể Bán hàng
không là 2NF. Để thoả dạng chuẩn 2NF, ta phải tách
nó thành 3 thực thể riêng biệt:
hàng hoá
Mã hàng Tên hàng Đơn giá
M1 Radio 1 000
M2 Máy giặt 3 000
M3 TV 4 000
M4 Video 5 000
M6 Xe đạp 1 000
M9 Máy ảnh 2 000
Ta chọn khoá chính của thực thể hàng hoá là Mã
hàng
khối lượng
132
Ngày tháng Mã hàng Số lượng
210397 M1 1
210397 M3 2
210397 M6 1
220397 M2 2
230397 M1 3
230397 M4 2
230397 M9 1
Ta chọn khoá chính (nó là khoá tối tiểu) cho thực
thể Khối lượng là Ngày tháng, Mã hàng
Doanh số
Ngày tháng Tổng Thanh toán
210397 10000 6000
220397 6000 2000
230397 15000 11000
Khoá chính là Ngày tháng
Có thể thấy thực thể Khối lượng → thực thể
Hàng hoá
Ta có biểu diễn sau:
1, n 1,1
Hàng hóa Khối lượng
133
R
5.3.4. Dạng chuẩn 3 (3NF)
Một thực thể (hay quan hệ) đã là 2NF được xem
là dạng chuẩn 3NF nếu tất cả các phụ thuộc hàm
giữa khoá chính và các thuộc tính khác của nó đều là
trực tiếp.
Hay nói cách khác, mọi thuộc tính không nằm
trong khoá chính đều không phụ thuộc hàm vào một
thuộc tính không phải là khóa chính. Ta có thể rút ra
nhận xét: Một thực thể có nhiều khoá nhận dạng
không thể thoả mãn dạng chuẩn 3NF. Mặt khác định
nghĩa 3NF trong chương 2 chặt hơn vì điều kiện phụ
thuộc hoàn toàn và phụ thuộc trực tiếp liên quan đến
mọi khoá tối tiểu, chứ không chỉ liên quan đến một
khoá tối tiểu được chọn làm khoá chính.
Trong thực thể Hàng hoá là 2NF ở trên, ta thấy
trên đồ thị của các phụ thuộc hàm có hai con đường
để đi từ ‘Mã hàng’ đến ‘Đơn giá’ hoặc đi qua thuộc
tính ‘Tên hàng’
Mã hàng Tên hàng
Đơn giá
134
Điều này chứng tỏ thực thể chưa là 3NF, dẫn
đến trùng lặp đơn giá của tên hàng. Để là dạng 3NF,
ta tách nó thành hai thực thể riêng biệt:
Hàng
Mã hàng Tên hàng
M1 Radio
M2 Máy giặt
M3 TV
M4 Video
M6 Xe đạp
M9 Máy ảnh
Khoá chính là Mã hàng
Mặt hàng
Tên hàng Đơn giá
Radio 1000
Máy giặt 3000
TV 4000
135
Video 5000
Xe đạp 1000
Máy ảnh 2000
Khoá chính là Tên hàng
Có thể thấy thực thể Hàng → thực thể Mặt
hàng
Tổng hợp với phần trên, ta có sơ đồ sau:
1, n 1,1
Hàng R Khối lượng
1,1 0, n
R1 Mặt hàng
5.3.5. Dạng chuẩn của Boyce - Codd (BCNF)
Dạng chuẩn 3NF cho phép một thuộc tính thành
phần của khoá chính phụ thuộc hàm vào một thuộc
tính không phải là khoá
Ví dụ :
136
Lớp Môn Thầy
12 Toán A
11 Toán D
10 Toán A
12 Địa C
11 Địa C
10 Địa D
Thực thể này thoả dạng 3NF. Khoá chính của nó
gồm các thuộc tính 'Lớp' và 'Môn'.
Nhưng do qui tắc 'Mỗi thầy chỉ dạy một môn', ta
thấy có sự phụ thuộc hàm của Môn (Là một thành
phần của khoá chính) vào Thầy (Là một thuộc tính
bình thường):
'Thầy' → 'Môn'
Ta nói rằng thực thể thoả mãn dạng chuẩn
Boyce-Codd (BCNF) khi tất cả các phụ thuộc hàm
của nó đều thuộc dạng K → a, trong đó K là khoá
chính và a là một thuộc tính bất kỳ.
Để thoả dạng BCNF, ta có thể tách thực thể trên
thành hai thực thể riêng biệt như sau:
Thực thể 'Lớp':
137
Lớp
12
11
10
Thực thể 'Thầy':
Thầy Môn
A Toán
B Toán
C Sử Địa
D Sử Địa
Chúng ta có biểu diễn sau:
1, n 1, n
Thầy R Lớp
5.3.6. Nhận xét về việc chuẩn hoá
138
Khi không có yêu cầu gì đặc biệt, người ta
thường tìm cách chuẩn hoá mô hình dữ liệu nhằm
tăng hiệu hiệu năng và giảm sơ xuất trong các giai
đoạn phát triển hệ thông tin về sau.
Tuy vậy, việc chuẩn hoá không phải lúc nào
cũng đạt đến mức tối đa. Thông thường chúng ta
chuẩn hoá đến dạng chuẩn 2NF và 3NF.
139
Chương 6
Một số công đoạn xây dựng các dự án
thiết kế tổng thể các hệ thống cơ sở
dữ liệu hiện nay
6.1. Mô tả chung
Trong dự án thiết kế tổng thể người ta thường
trình bày một số vấn đề cơ bản sau:
- Hiện trạng và tiềm lực CNTT của cơ quan chủ
trì dự án.
- Hiện trạng về việc thu thập, lưu trữ và xử lí
các dữ liệu liên quan hệ cơ sở dữ liệu cần xây dựng,
- Ước đoán khối lượng lưu trữ và trao đổi thông
tin trong hệ cơ sở dữ liệu,
- Phân tích thiết kế hệ CSDL,
- Thiết kế hạ tầng kĩ thuật,
- Chuẩn hoá, bảo mật và an toàn thông tin,
- Tính pháp lí về quyền và nghĩa vụ trong việc
thu thập, cập nhật, khai thác và bảo vệ thông tin
trong hệ CSDL,
140
- Nội dung, đối tượng và kế hoạch triển khai
công tác đào tạo,
- Tổng hợp và cân đối kinh phí
- Các biện pháp tổ chức thực hiện .
Một trong các phần quan trọng nhất của dự án là
khâu phân tích thiết kế.
Thông thường để thực hiện việc phân tích thiết
kế khi xây dựng dự án người ta sử dụng một số
phương pháp phân tích thiết kế, ví dụ như phương
pháp phân tích thiết kế có cấu trúc (Structured
Analysis and Design), phương pháp GALASCI,
phương pháp phân tích MCX, phương pháp phân tích
MERISE (Methode pour Rassembler les Idees Sans
Effort)...
Trong các phương pháp phân tích thiết kế trên
MERISE có đặc tính là khi phân tích nó tách rời xử lí
với dữ liệu, tổ chức theo nhiều mức, đi từ phân tích
tổng thể đến chi tiết một cách tuần tự theo chiều
tăng dần của mức độ phức tạp. MERISE được
nhiều người xử dụng và đặc biệt tốt cho việc phân
tích thiết kế cho các hệ thông tin lớn. Tại Việt Nam
một số cơ quan đã được trang bị công cụ phân mềm
MEGA tuân theo các chuẩn của phương pháp phân
tích MERISE. Cho đến nay nhiều dự án "Thiết kế
141
tổng thể hệ thống cơ sở dữ liệu" đã được xây dựng
trên cơ sở phương pháp phân tích MERISE.
Dựa trên phương pháp MERISE, khi phân tích
thiết kế tổng thể, chúng ta tiến hành các công đoạn
sau :
Mô tả qui trình nghiệp vụ bằng lời:
Trong công đoạn này chúng ta mô tả đầy đủ,
mạch lạc bằng lời qui trình nghiệp vụ của bài toán
cần thiết kế. Công đoạn này thường phân biệt
những yếu tố nghiệp vụ hay thay đổi với những yếu
tố nghiệp vụ tương đối bất biến trong khoảng thời
gian dài. Những yếu tố bất biến này thường được
tập trung mô tả kĩ hơn. Trong công đoạn mô tả bằng
lời này, chúng ta không chỉ mô tả những yếu tố
nghiệp vụ hiện có mà còn mô tả các kiến nghị sửa
đổi, các dự báo tương lai phù hợp với quá trình phát
triển của hệ thống thông tin. Công đoạn này phân rã
mỗi lĩnh vực nghiệp vụ thành các chức năng nghiệp
vụ, và mỗi chức năng nghiệp vụ được phân rã thành
các thao tác xử lí. Toàn bộ các yếu tố này đều được
mô tả rõ ràng.
Xây dựng các mô hình
142
Sau khi mô tả các qui trình nghiệp vụ một cách
rõ ràng và mạch lạc, chúng ta tiến hành xây dựng các
mô hình. Các mô hình này được phân chia theo 4 mức
độ khái quát khác nhau. Đó là :
- Mức khái niệm: Mức này mô tả sự hoạt động
của đơn vị theo một cấu trúc khái quát nhất. Trong
mức này các chức năng hoạt động được mô tả độc
lập với những bộ phận, vị trí hay nhân viên thực
hiện chúng.
- Mức tổ chức: Mức này thể hiện các mục tiêu
đã được khái niệm hóa lên thực tế của đơn vị trong
đó có tính đến những điều kiện ràng buộc về mặt tổ
chức.
- Mức lôgic: Mức này qui định các công cụ tin
học mà các công cụ này được người dùng trong các
thao tác xử lí.
- Mức vật lí: Mức này liên quan chặt chẽ với các
trang thiết bị tin học cụ thể.
Trong mỗi mức chúng ta có 3 mô hình. Đó là mô
hình trao đổi thông tin, mô hình xử lí và mô hình dữ
liệu.
Cụ thể chúng ta có:
143
*Mô hình khái niệm trao đổi (MCC modele
conceptuel de communication):
MCC phân rã lĩnh vực nghiệp vụ thành các chức
năng nghiệp vụ. MCC mô tả sự trao đổi thông tin
giữa các chức năng nghiệp vụ nằm trong bài toán và
sự trao đổi thông tin giữa các lĩnh vực nghiệp vụ với
các lĩnh vực nghiệp vụ khác và các đối tượng bên
ngoài.
MCC cho ta một cái nhìn tổng thể về một lĩnh
vực nghiệp vụ và các chức năng nghiệp vụ của nó
cũng như các nhu cầu thông tin của nó.
*Mô hình khái niệm xử lí (MCT modele
conceptuel de traitements):
MCT dùng để mô tả một lĩnh vực, qui trình,
chức năng, thao tác.
MCT phân rã một chức năng nghiệp vụ thành
các thao tác xử lí . Mỗi thao tác xử lí có thể được
xem như một phép biến đổi thông tin. Một thao tác
có thể có điều kiện khởi động là các sự kiện, các
thông báo mà khi xuất hiện chúng thao tác bắt đầu
được thực hiện . Trong quá trình thực hiện, thao tác
cần phải truy nhập đến các thông tin đã được lưu
giữ , biến đổi chúng và cập nhật lại theo một số qui
luật tính toán và ràng buộc nhất định.
144
* Mô hình khái niệm dữ liệu (MCD modele
conceptuel de donneees):
Việc mô tả dữ liệu trong mô hình MCD thông
qua ngôn ngữ " Thực thể / Quan hệ " cùng với các
thuộc tính của các thực thể và các quan hệ . Trên mô
hình này, khóa chính, các thuộc tính chính được khai
báo và lưu trữ trong hệ thống.
MCD được xây dựng cho một lĩnh vực nghiệp
vụ nhằm xác định đầy đủ những dữ liệu đòi hỏi khi
thực hiện các chức năng , trong đó đặc biệt là những
dữ liệu cần thiết cho việc trao đổi .
* Mô hình tổ chức trao đổi (MOC):
MOC mô tả một lĩnh vực nghiệp vụ, đơn vị tổ
chức.
Mô hình này mô tả các vị trí làm việc và việc
luân chuyển thông tin trong đơn vị.
* Mô hình tổ chức xử lí (MOT):
MOT là mô hình tổ chức để thực hiện các thao
tác của một chức năng nghiệp vụ đã được mô tả
trong MCT. MOT thể hiện qui trình làm việc , trong
đó nhấn mạnh tính tuần tự của các thao tác và nêu rõ
những ràng buộc về thời điểm bắt đầu xử lí hay
truyền thông tin. Một thao tác trong MCT có thể ứng
vối nhiều thao tác trong MOT và ngược lại một thao
145
tác trong MOT cũng có thể ứng với nhiều thao tác
trong MOT tuỳ theo các hoàn cảnh cụ thể .
* Mô hình tổ chức dữ liệu (MOD):
MOD mô tả dữ liệu cần ghi nhớ trong từng địa
điểm, cho từng vị trí thực hiện.
Trong khi MCD chỉ định nghĩa các khái niệm dữ
liệu, thì MOC cụ thể hóa những điều kiện có thể
xảy ra để một thực thể thuộc vào mô hình.
* Mô hình lôgic trao đổi (MLC):
MLC xác định sự trao đổi giữa người với người
(thông qua các mẫu biểu), giữa người với máy
(thông qua giao diện) và giữa các phần mềm với
nhau.
* Mô hình lôgic xử lí (MLT): Thường để mô tả
công cụ tin học.
* Mô hình lôgic dữ liệu (MLD):
Nhờ MLD, chúng ta có thể chuyển các MOD
sang dạng quen thuộc cho các chuyên gia tin học.
Thông thường, chúng ta chuyển từ ngôn ngữ thực
thể - quan hệ sang dạng biểu báo.
Các mô hình vật lí trao đổi (MPC), mô hình vật lí
xử lí (MPT), mô hình vật lí dữ liệu (MPD) gắn liền
với các trang thiết bị tin học cụ thể.
146
Các mức và mô hình của MERISE có thể tóm tắt
như sau:
Mức Trao đổi Chức năng Dữ liệu
Khái niệm MCC MCT MCD
Tổ chức MOC MOT MOD
Lôgic MLC MLT MLD
Vật lí MPC MPT MPD
Quan trọng nhất trong các mô hình trên là các mô
hình liên quan đến dữ liệu vì nó làm nền tảng cho
việc xây dựng các mô hình khác.
Trong phạm vi Giáo trình này chúng tôi trình bày
việc xây dựng mô hình khái niệm dữ liệu. Đó là mô
hình dữ liệu thường có trong các dự án thiết kế tổng
thể các hệ thống thông tin.
Quá trình xây dựng mô hình khái niệm dữ liệu có
thể được chia thành các giai đoạn sau đây:
A. Khảo sát thực tế
- Thu thập và trình bày thông tin.
147
B. Thiết kế mô hình dữ liệu
- Kiểm kê các dữ liệu.
- Xác định các phụ thuộc hàm.
- Xây dựng mô hình khái niệm:
- Xác định tập hợp các khoá chính.
- Nhận diện các thực thể.
- Nhận diện các quan hệ.
- Phân bổ các thuộc tính còn lại.
- Vẽ sơ đồ khái niệm dữ liệu.
C. Kiểm soát và chuẩn hoá mô hình
6.2. Khảo sát thực tế
6.2. Khảo sát thực tế
Mục tiêu của giai đoạn này là qua quá trình quan
sát, phỏng vấn, tìm hiểu và phân tích, chúng ta mô tả
đầy đủ hiện trạng, các bài toán nghiệp vụ và các nhu
cầu của người sử dụng mà hệ thống thông tin cần
phải thoả mãn. Do đó, nó không chỉ giới hạn trong
việc xây dựng mô hình dữ liệu mà còn là nguồn gốc
các thông tin cần thiết cho việc xây dựng mô hình xử
lí.
Để đạt mục tiêu này, ta cần thu thập và trình bày
tất cả những thông tin dù thuộc phương diện dữ liệu
148
hay chức năng có thể hữu ích cho việc thiết kế hệ
thông tin về sau. Các thông tin này cần được quan sát
dưới dạng: tĩnh (dữ liệu sơ cấp, tài liệu, quảng cáo,
đơn vị, vị trí làm việc..), dạng động (luồng luân
chuyển các thông tin, tài liệu, chu kì, thời lượng), và
dạng biến đổi của chúng (thủ tục, qui tắc quản lí,
công thức tính toán,..).
Các thông tin thu thập được phải đầy đủ và
chính xác vì chúng là nền tảng của hệ thông tin
tương lai. Nhưng cũng không nên đi quá sâu vào chi
tiết và phải biết gạn bỏ những thông tin không cần
thiết, để không làm chệch hướng và gây khó khăn
nặng nề cho việc phân tích thiết kế.
Công việc khảo sát không chỉ tập trung hoàn toàn
vào giai đoạn đầu của quá trình phân tích thiết kế,
mà có thể chạy dài trong suốt quá trình này để thu
thập thêm thông tin, đào sâu vấn đề hay kiểm chứng
một giả thiết cùng với người sử dụng khi hệ thông
tin cần xây dựng quá lớn và phức tạp, ta nên chia nó
thành nhiều tiểu hệ. Mỗi tiểu hệ có thể được khảo
sát, phân tích hay thiết kế độc lập với nhau, trước
khi được tập hợp lại .
Để chia một hệ thông tin thành nhiều tiểu hệ,
người ta thường sử dụng một trong hai phương pháp
tiếp cận sau đây:
149
- Phương pháp 1: Các tiểu hệ độc lập được định
ra, dựa trên cơ sở những bài toán , chức năng nghiệp
vụ chủ yếu của tổ chức. Đôi khi dựa trên một kế
hoạch thực hiện theo thứ tự ưu tiên hay để thoả
những yêu cầu về thời gian.
- Phương pháp 2: Một cuộc khảo sát tổng quát
sơ khởi sẽ cho phép nhận diện những tiểu hệ tương
đối độc lập với nhau.
Tiếp theo đó chúng ta tiến hành thu thập thông
tin về hệ thống cần xây dựng
Công việc này chủ yếu là tham khảo tài liệu và
tiếp xúc với những người sử dụng, đòi hỏi những
khả năng như óc quan sát, kinh nghiệm, tài giao tiếp
và ứng biến... Các phương pháp gò bó, cứng nhắc sẽ
chẳng đem lại kết quả mong muốn. Do đó, phần này
chỉ liệt kê và phân loại các thông tin có thể gặp
được trong quá trình khảo sát, xem như để trợ giúp
trí nhớ.
Trong quá trình thu thập thông tin thông thường
ta tập hợp các dữ liệu sau
- Dữ liệu về hệ thông tin hiện tại bao gồm các
dữ liệu liên quan trực tiếp đến hệ thông tin theo mọi
dạng (tĩnh, động, biến đổi) và thông tin về môi
trường làm việc
150
- Dữ liệu về hệ thống tương lai bao gồm các
nhu cầu, mong muốn cho hệ thông tin của ta. Trong
các dữ liệu này ta cần phân biệt những vấn đề đã
được nhận thức và phát biểu rõ ràng, những vấn đề
được nhận thức nhưng chưa được công nhận, những
vấn đề còn chưa nhận thức và còn đang tranh luận.
Với mỗi loại dữ liệu cần thu thập đã nêu trên,
nếu cần ta còn có thể tìm hiểu thêm về một số khía
cạnh khác như: số lượng, độ chính xác cần có, ai là
người có trách nhiệm...
Nhận xét:
- Nếu có thể, các cuộc phỏng vấn phải được
tiến hành tuần tự theo cấu trúc phân cấp của tổ chức
theo từng bộ phận, lĩnh vực, chức năng hay đi từ cấp
lãnh đạo qua cấp quản lí đến những người thừa
hành.
- Phải luôn nhớ sao chụp mẫu các hồ sơ, tài liệu,
để có được cấu trúc chính xác các thông tin làm căn
bản cho việc xây dựng mô hình dữ liệu sau này.
- Cần thiết nhất là luôn phân biệt những thông
tin nói về hệ thông tin đang xây dựng với những
thông tin thuộc về hệ này
Các thông tin thu thập, sau khi được tổng hợp sẽ
được trình bày dưới hai dạng:
151
a. Mô tả các bài toán nghiệp vụ, các chức năng
và tổ chức của cơ quan, các nhu cầu và mong muốn
của người sử dụng một cách đầy đủ, nhưng ngắn
gọn và mạch lạc, bằng một ngôn ngữ thông thường,
gần gũi với mọi người.
b. Minh hoạ và hệ thống hoá phần trình bày trên
bằng một ngôn ngữ hình thức, thường là dưới dạng
phiếu mô tả, danh sách và đồ hoạ.
Trên thực tế có nhiều phương pháp trình bày
thông dụng khác nhau,
6.3. Thiết kế mô hình dữ liệu
Thiết kế một mô hình khái niệm dữ liệu là liệt
kê và định nghĩa chính xác những dữ liệu có liên quan
đến các chức năng, hoạt động của một tổ chức. Sau
đó ta nhóm chúng lại thành thực thể và quan hệ giữa
các thực thể, rồi dùng một số qui ước đã định trước
để trình bày dưới dạng mô hình khái niệm.
6.3.1. Kiểm kê dữ liệu
Danh sách này chủ yếu được rút từ những thông
tin thu thập được trong giai đoạn khảo sát ban đầu;
tài liệu thu thập được; nhu cầu, giải thích của người
sử dụng.
Có thể phân biệt hai kiểu dữ liệu:
152
- Loại dữ liệu xuất hiện trực tiếp trên các tài
liệu, màn hình, tập tin thu thập được.
- Loại dữ liệu không xuất hiện nhưng cần thiết
để chứa kết quả trung gian, các thông tin đang chờ
đựơc xử lý, hay để tính toán các dữ liệu thuộc loại
thứ nhất.
Một công cụ thông dụng, hữu ích cho giai đoạn
này là bảng, dùng để phân tích các tài liệu thu thập
và liệt kê ra danh sách các dữ liệu. Trong bảng này, ta
trình bày mỗi cột là một tài liệu và mỗi hàng là một
loại dữ liệu. Tại mỗi ô giao điểm, ta đánh dấu khi
loại dữ liệu có xuất hiện trên tài liệu. Nên dùng hai
loại dấu khác nhau để phân biệt loại dữ liệu trực
tiếp với loại được tính toán thành.
Khi xây dựng bảng này, ta nên bắt đầu bằng
những tài liệu cơ bản, quan trọng nhất và chỉ cần
trình bày một loại tài liệu khi nó cho phép nhận dạng
ít nhất một loại dữ liệu mới.
Ví dụ: Trong một công ty có:
- Kho hàng làm nhiệm vụ lưu giữ và quản lí
hàng hoá và khi cần thì đề nghị mua thêm hàng
- Phòng đặt hàng có nhiệm vụ làm đơn đặt hàng
gửi cho các công ty cung cấp
- Phòng kế toán lưu bản sao đơn đặt hàng để
kiểm tra hàng.
153
Ta dùng 1 để đánh dấu dữ liệu trực tiếp và 2 cho
dữ liệu được tính toán.
Tài liệu Phiếu Đơn Phiếu Tệp tin
Loại dữ đề nghị đặt giao về nhà
liệu đặt hàng hàng cung cấp
hàng
Tên kho 1
Địa chỉ kho 1
Ngày đề 1
nghị đặ t
hàng
Số lượng 1
hàng cần
đặt
Mã số sản 1 1 1
phẩm
Nhãn hiệu 1 1 1
sản phẩm
Mã số của 1 1 1
công ty
cung cấp
Tên công ty 1 1 1
cung cấp
154
Địa chỉ công 1 1 1
ty cung cấp
Đơn giá sản 1 1 1
phẩm
Ngày đặ t 1
hàng
Số lượng 1
hàng đặt
mua
Tổng giá 2
đơn đặ t
hàng
Ngày giao 1
hàng
Số lượng 1
hàng được
giao
Tổng giá 2
hàng được
giao
Từ danh sách này, người ta cần kiểm tra bằng
một số công tác thanh lọc như sau:
155
- Bỏ bớt các dữ liệu đồng nghĩa nhưng khác tên,
chỉ giữ lại một.
Ví dụ: Mã số sản phẩm = danh mục mặt hàng
- Phân biệt các dữ liệu cùng tên nhưng khác
nghĩa thành nhiều loại dữ liệu khác nhau.
Ví dụ: Giá bán của một cửa hiệu khác với giá
bán của công ty sản xuất.
- Nhập chung các loại dữ liệu luôn luôn xuất
hiện đồng thời với nhau trên mọi loại tài liệu thành
một loại dữ liệu sơ cấp.
Ví dụ: số nhà và tên đường; ngày, tháng và năm
sinh.
- Loại bỏ những loại dữ liệu có thể được xác
định một cách duy nhất từ các loại dữ liệu khác,
hoặc bằng công thức tính toán, hoặc do các qui luật
của tổ chức
Ví dụ: Tổng giá đơn đặt hàng = Số lượng hàng*
Đơn giá
Giả sử do qui luật của tổ chức, mọi đề nghị mua
hàng phải được giải quyết nội trong ngày, ta suy ra:
Ngày đề nghị mua hàng = Ngày đặt hàng.
6.3.2. Định các phụ thuộc hàm giữa các dữ liệu
156
Từ danh sách dữ liệu đã được thanh lọc của hệ
thông tin đạt được qua giai đoạn trên, ta phải định ra
tất cả các phụ thuộc hàm có giữa chúng .
Cụ thể, ta phải tự đặt câu hỏi: Mỗi giá trị của
một loại dữ liệu A có tương ứng với một giá trị duy
nhất của loại dữ liệu B hay không?
Nếu câu trả lời là "Có" thì B phụ thuộc hàm vào
A: A → B
Ngoài các phụ thuộc hàm có vế trái A là một loại
dữ liệu sơ cấp ( gọi là phụ thuộc hàm sơ cấp) tương
đối dễ xác định, ta còn phải nhận diện cả các phụ
thuộc hàm trong đó vế trái A là một tập hợp của
nhiều loại dữ liệu (gọi là phụ thuộc hàm đa phần).
Trong trường hợp này, ta nên tự đặt câu hỏi: Cần ấn
định giá trị của những loại dữ liệu nào để có thể suy
ra một giá trị duy nhất của loại dữ liệu B? Các phụ
thuộc hàm sẽ được trình bày dưới dạng một bảng
như sau:
Loại dữ liệu Phụ thuộc hàm Phụ
thuộc hàm
157
sơ cấp
đa phần
Mã số của công ty cung
cấp ...............................................................................
Tên công ty cung
cấp..................................................................................
...........
Địa chỉ công ty cung
cấp..................................................................................
.....
Tên
kho ..................................................................................
.................................
Địa chỉ
kho...................................................................................
............................
Ngày đề nghi đặt
hàng ................................................................................
..........
Ngày đặt
hàng ................................................................................
........................
Ngày giao
hàng ................................................................................
......................
158
Đơn giá sản
phẩm ..............................................................................
....................
Mã số sản
phẩm ..............................................................................
.......................
Nhãn hiệu sản
phẩm...............................................................................
...............
Số lượng hàng cần
đặt ..................................................................................
........
Số lượng hàng đặ t
mua .................................................................................
.......
Số lượng hàng được
giao .................................................................................
....
6.3.3. Xây dựng mô hình dữ liệu
Giai đoạn này bao gồm 5 động tác:
- Định tập hợp các khoá chính
- Nhận diện các thực thể
- Nhận diện các quan hệ
159
- Phân bổ các thuộc tính còn lại
- Vẽ sơ đồ khái niệm dữ liệu
6.3.3.1. Xác định tập hợp các khoá chính
Tập hợp K của những khoá chính là tập hợp tất
cả những loại dữ liệu đóng vai trò nguồn (thuộc vế
trái ) trong ít nhất một phụ thuộc hàm.
Trong ví dụ trên ta có : K =
{'Mã số công ty cung cấp'
'Tên kho'
'Ngày đề nghi đặt hàng'
'Ngày đặt hàng'
'Ngày giao hàng'
'Mã số sản phẩm'}
6.3.3.2 Nhận diện các thực thể
Mỗi phần tử của tập hợp K sẽ là khoá chính của
một thực thể
Trong ví dụ trên, ta nhận ra được 4 thực thể:
'Nhà cung cấp' với khoá chính là 'Mã số của công
ty cung cấp'
'Kho' với khoá chính là 'Tên kho'
'Lịch' với khoá chính là 'Ngày'
160
(các thực thể 'Lịch đặt hàng', 'Lịch đề nghi mua
hàng' và 'Lịch giao hàng' hoàn toàn tương đương với
nhau nên được gộp thành một thực thể duy nhất là
'Lịch')
'Sản phẩm' với khoá chính là 'Mã số sản phẩm'
6.3.3.3 Nhận diện các quan hệ
Có 2 trường hợp :
a. Nếu gốc của một phụ thuộc hàm bao gồm ít
nhất 2 phần tử thuộc tập hợp K thì nó tương ứng với
một quan hệ N - P giữa các thực thể có khoá chính là
các phần tử này.
Trong ví dụ trên, ta nhận ra được 4 quan hệ :
'Đơn giá của nhà cung cấp'
'Dòng đề nghị mua hàng'
'Dòng đơn đặt hàng'
'Dòng phiếu giao hàng'
b. Một phụ thuộc hàm giữa 2 phần tử của tập
hợp K xác định một quan hệ nhị nguyên kiểu 1-N
giữa hai thực thể có khoá chính là các phần tử này.
6.3.3.5. Vẽ sơ đồ khái niệm dữ liệu
Từ các thực thể và quan hệ đã nhận diện, ta có
thể vẽ lên một sơ đồ khái niệm dữ liệu sau:
161
Lịch
0,n
Nhà cung cấp Kho
0,n 1,n 1,n 1,n
1,n
1,n 0,n
Dòng đơn Giá Dòng đơn
Dòng đề nghị
giao hàng cung cấp đặt hàng
mua hàng
1,n 1,n 1,n 1,n
1,n
162
Sản phẩm
6.3.4 Xây dựng mô hình dữ liệu bằng trực giác
Phương pháp phân tích hệ thống nêu trên là một
công cụ hữu hiệu và chuẩn xác để xây dựng phần
lớn các loại mô hình dữ liệu. Nhưng nếu áp dụng
hoàn toàn trong một hệ thông tin cỡ lớn sẽ đòi hỏi
nhiều thời gian và công sức. Trong thực tế, các thiết
kế viên kinh nghiệm, sau khi đã nhận thức được vấn
đề qua khảo sát thường chọn cách xây dựng trực tiếp
một mô hình sơ khởi rồi đi thẳng vào giai đoạn sau
để kiểm soát và chuẩn hoá mô hình .
Phương pháp trực giác này có ưu điểm là ít tốn
thời gian và đôi khi tạo ra những mô hình đơn giản
và gần thực tế hơn. Nhưng ngược lại, nó chứa nhiều
rủi ro hơn.
6.4. Kiểm soát và chuẩn hoá mô hình
Để đơn giản hoá và đồng thời đảm bảo tính
nhất quán của mô hình dữ liệu, ta cần kiểm soát lại
mô hình vừa xây dựng bằng một số qui tắc thực tiễn
sau đây:
6.4.1 Chuẩn hoá mô hình
Chú ý việc chuẩn hoá toàn bộ mô hình dữ liệu
thành các dạng BCNF không phải là bắt buộc. Tuy
163
vậy các dạng 1FN, 2FN, 3NF nên luôn được thực
hiện.
6.4.2 Tạo thêm một thực thể
Việc tạo thêm một thực thể là cần thiết khi có ít
nhất một quan hệ đang được xử lý liên quan tới nó.
Việc tạo thêm một thực thể là hợp lí khi:
a) Thuộc tính sẽ được chọn làm khoá chính của
thực thể này là một loại dữ liệu thông dụng trong
hoạt động của tổ chức đang khảo sát.
b) Ngoài khoá chính này, quan hệ còn có chứa
những thuộc tính khác .
6.4.3. Biến một quan hệ thành thực thể
Một quan hệ có kích thước lớn hơn 3 nên được
biến thành thực thể để đơn giản hoá.
Có thể biến một quan hệ thành thực thể khi hội
đủ các điều kiện sau:
- Quan hệ này có một khoá chính độc lập
- Quan hệ này tương ứng với một khái niệm
quen thuộc, thông dụng trong hoạt động của tổ chức.
1,n 1,n
Thầy R Môn học
0,n
Ngày giờ
164
Quan hệ R được biến thành thực thể 'Thời khoá
biểu':
1,n 1,1 1,1
1,n
Thời khoá
Thầy R1 biểu R2 Môn học
1,1
R3
0,n
Ngày giờ
6.4.4 Xoá một quan hệ
Một quan hệ 1 - N phải được loại bỏ khỏi mô
hình dữ liệu nếu nó là tổng hợp của 2 hay nhiều
quan hệ 1 - N khác.
1,n 1,1 1,n
1,1
165
Trường
Gồm
Học sinh
Học lớp Môn học
1,n
1,1
Học trường
Ta loại bỏ quan hệ Học trường
6.4.5 Phân tách một quan hệ phức tạp
Xét một quan hệ có kích thước lớn hơn hoặc
bằng 3. Quan hệ có thể được phân tách thành nhiều
quan hệ khác với kích thước nhỏ hơn mà không mất
thông tin nếu tồn tại ít nhất một phụ thuộc hàm giữa
các thực thể cấu thành quan hệ.
6.4.5.1 Trường hợp phụ thuộc hàm ẩn
Trong trường hợp này, một trong các bản số của
quan hệ bằng (1,1) hoặc (0,1). Điều này chứng tỏ sự
tồn tại của một số phụ thuộc hàm ẩn.
Ví dụ:
Bác sỹ Bệnh nhân Toa thuốc
0,n 0,n
1,1
166
Khám bệnh
Sơ đồ 1
1,n 1,1
Bác sỹ Bệnh nhân Dùng Toa thuốc
1,n
1,1
Cho toa
Sơ đồ 2
Chúng ta chọn sơ đồ 2
6.4.5.2. Trường hợp phụ thuộc hàm hiện
Cho một quan hệ R giữa 3 thực thể A, B, và
C. Nếu tồn tại một hàm phụ thuộc A →B thì R có
thể được phân thành quan hệ giữa A với B và
giữa B với C.
Trong ví dụ sau đây, phụ thuộc hàm Hoá đơn
→ Khách hàng (mỗi hoá đơn chỉ liên quan đến
một khách hàng duy nhất) cho phép ta đưa vào
một quan hệ mới để diễn tả sự phụ thuộc này
và đơn giản hoá mô hình.
Sản phẩm Khách hàng Hoá đơn
167
0,n 0,n
1,n
Dòng hoá đơn
Sơ đồ 1
0,n 1,1
Sản phẩm Khách hàng Liên quan Hoá đơn
0,n
1,n
Dòng hoá đơn
Sơ đồ 2
Chúng ta chọn sơ đồ 2 đơn giản hơn.
Chương 7
Thuật toán và độ phức tạp
7.1. Khái niệm thuật toán
Nếu cho trước một bài toán, thì một cách giải
bài toán được phân định ra thành một số hữu
hạn bước, có kết thúc cuối cùng gọi là thuật
toán.
168
Khi giải bài toán sẽ nẩy sinh ra các vấn đề
sau:
- Độ phức tạp bài toán. Mỗi bài toán có độ
phức tạp khác nhau.
- Một bài toán có nhiều thuật toán giải nó.
- Dùng nhiều ngôn ngữ lập trình để cài đặt
phần mềm cho một thuật toán
- Có thể dùng nhiều cấu trúc dữ liệu cho một
thuật toán.
Một số sai sót cơ bản khi giải bài toán:
- Hiểu sai bài toán.
- Tìm sai thuật toán.
- Do không hiểu ngôn ngữ lập trình nên có
nhầm lẫn.
- Bản thân dữ liệu quét không hết trường
hợp.
- Yêu cầu giải quyết bài toán.
- Phần mềm dễ sử dụng .
- Tốc độ tính toán nhanh .
- Bộ nhớ phù hợp .
Trong đó tính dễ sử dụng là một yêu cầu cơ
bản nhất.
169
7.2. Độ phức tạp thuật toán
Khái niệm thuật toán chính xác liên quan đến
các khái niệm máy Turing, hàm đệ qui, thuật toán
Marcop, ngôn ngữ hình thức của N.Chomsky.
Những khái niệm này không nằm trong khuôn
khổ Giáo trình này. Chúng tôi trình bày một khái
niệm quan trọng liên quan trực tiếp đến thuật
toán. Đó là độ phức tạp thuật toán. Nhờ có khái
niệm này chúng ta có thể đánh giá và so sánh
được các thuật toán với nhau. Hay nói một cách
khác, chúng ta có thể có công cụ đo, để lựa chọn
một thuật toán tốt cho lời giải bài toán cần giải
quyết. Thông thường chúng ta có hai loại đánh
giá: Một là độ phức tạp về thời gian tính của
thuật toán, hai là độ phức tạp về phạm vi bộ
nhớ dùng cho thuật toán. Đối với một thuật toán,
thời gian tính và phạm vi bộ nhớ cần dùng
thường mâu thuẫn nhau. Có nghĩa là, nếu thời
gian tính của thuật toán là ngắn thì thông thường
phạm vi bộ nhớ dùng cho thuật toán đó lại lớn.
Mà chúng ta lại muốn chọn một thuật toán thời
gian tính thì ngắn và bộ nhớ dùng cũng nhỏ. Như
vậy, trong từng trường hợp cụ thể, chúng ta sẽ
quyết định chọn lựa thuật toán nào. Trong phạm
vi Giáo trình này chúng ta chỉ trình bày về độ
phức tạp thời gian tính. Đó là độ phức tạp
thường được đề cập nhiều nhất. Đồng thời,
170
trong phạm vi giới hạn của giáo trình, chúng ta
cũng chỉ trình bày độ phức tạp của thuật toán
theo góc độ tin học.
Giả sử T là thuật toán giải quyết bài toán A.
Chúng ta gọi T(n) là độ phức tạp thời gian của
thuật toán T. Thông thường T(n) được biểu diễn
dưới dạng sau: T(n) = O(g(n)). Trong đó hàm g(n)
là cấp của T(n); n là độ dài thông tin đưa vào.
Ví dụ: T(n) = O(n2)
Chúng ta hiểu f(n) = O(g(n)), nếu ∃ hằng số
C và số nguyên n0.
Sao cho:
∀n ≥ n0 ta luôn có: f(n) ≤ Cg(n)
(Nói cách khác là g(n) là hàm chặn trên của
f(n) từ một chỉ số nào đó trở đi).
Rõ ràng, trong quá trình đánh giá thuật toán,
nếu có g(n) nhỏ nhất thì đó là sự đánh giá chính
xác nhất.
Có thể thấy rằng, bài toán tìm g(n) nhỏ nhất
khá phức tạp.
Bây giờ, chúng ta đưa ra độ phức tạp thời
gian là hàm nhiều biến. Giả sử T(n1,... , nk ) là độ
phức tạp thời gian của thuật toán T và T(n1,... ,
nk) = O(g(n1,....nk)). Khi đó chúng ta hiểu rằng tồn
171
tại các số C , n01...n0k sao cho với mọi n1 ≥ n01, ....,
nk ≥ n0k
T(n1,...,nk) ≤ Cg(n1,..., nk)
Ví dụ: Đầu vào là R = {a1,....., an},
r = {h1,..., hm}
Chúng ta có T(n,m) = O(g(n,m))
Trong trường hợp có nhiều đối số thì phức
tạp thời gian được tính theo đối số có giá trị lớn
nhất.
Ví dụ: T(n,m) = O(n2+2m). Khi đó độ phức
tạp thời gian của thuật toán T là hàm số mũ.
Việc đánh giá như trên gọi là độ phức tạp
thời gian tồi nhất.
Trong thực tế có nhiều cách đánh giá độ
phức tạp thời gian. Ví dụ như độ phức tạp thời
gian trung bình. Độ phức tạp này gắn với nhiều
độ đo khác nhau (độ đo xác suất). Giáo trình này
đánh giá độ phức tạp thời gian theo cách tồi nhất
(tìm g(n) chặn trên).
- Giả sử một độ phức tạp thuật toán chia làm
nhiều đoạn, mỗi đoạn có độ phức tạp tương ứng
là T1(n),...,Tq(n).
Khi đó chúng ta đặt T(n) = O (max(T1(n),...,
Tq(n)).
172
- Nếu Ti là hàm nhiều biến: T1 (n1,...,nm), ...,
Tq(n1,...,nm), thì lúc đó T1(n1,..., nm) = O
(max(T1(n1,..., nm),..., Tq(n1,..., nm)).
- Giả sử T là thuật toán giải quyết bài toán A.
Ta chia hai khúc T1 và T2 và T2 lồng trong T1.
Khi đó T(n) = O(T1(n). T2(n)).
Ví dụ: x:= 3;
x:= x + 1.
Dễ thấy độ phức tạp T(n) = O(c) ( hay O(1)).
Ví dụ: x:= 3;
For i:= 1 to n do x:= x+1
Thì: T(n) = O(cn).
Ví dụ: For i: = 1 to n do
For j: = 1 to n do x:= x+1
T(n) = O(c.n.n) = O (c.n2)
Trong trường hợp thuật toán có các đoạn
lồng thắt vào nhau thì độ phức tạp là tích (Thể
hiện bài toán có những toán tử lặp chu trình).
- Trong thuật toán chia thành nhiều đoạn. Có
đoạn lồng thắt của đoạn khác: tính tích, có đoạn
rời rạc: tính max.
173
Thông thường người ta chia các bài toán
thành ba lớp. Đó là lớp bài toán được giải quyết
bằng một thuật toán có độ phức tạp là hàm mũ,
lớp bài toán NP - đầy đủ và lớp bài toán được
giải quyết bằng một thuật toán có độ phức tạp
là hàm đa thức.
- Đối với lớp bài toán được giải bằng thuật
toán là hàm mũ và lớp bài toán NP - đầy đủ
(Thường gọi là các bài toán không khả thi) thực
tế trong tin học các bài toán này không có khả
năng thực hiện vì thời gian tính quá lớn. Khi đó,
chúng ta phải tách bài toán thành các dạng riêng
biệt, và cố gắng đưa nó về lớp bài toán có độ
phức tạp là hàm đa thức.
- Đối với các bài toán được giải bằng thuật
toán có độ phức tạp là hàm đa thức, chúng ta cố
gắng giảm số mũ k xuống (gần sát tuyến tính
(mũ 1)).
Để hạ k (tăng tốc độ) thông thường người ta
dùng cấu trúc dữ liệu, sử dụng ngôn ngữ gần
ngôn ngữ máy.
Thông thường người ta coi các thông số vào
(input) bình đẳng với nhau.
174
Tài liệu tham khảo
[1] Armstrong W.W. Dependency Structures of
Database Relationships. Information Processing 74,
Holland publ. Co. (1974), 580-583.
[2] Beeri C. Bernstein P.A. Computational
problems related to the design of normal form
relational schemas. ACM trans on Database Syst. 4.1
(1979), 30-59
[3] Beeri C. Dowd M., Fagin R.. Staman R. On the
structure of Armstrong relations for Functional
Dependencies . J.ACM 31,1 (1984), 30-46.
[4] Codd E. F. A relational model for large
shared data banks. Communications ACM 13 (1970 ),
377-387.
175
[5] Demetrovics J., Logical and structural
Investigation of Relational Datamodel. MTA -
SZTAKI Tanulmanyok, Budapest, 114 (1980), 1-97.
[6] Demetrovics J., Libkin, L. Functional
dependencies in relational databases : A Lattice point
of view. Discrete Aplied Mathematics 40 (1992), 155-
185.
[7] Demetrovics J., Thi V.D. Some results about
functional dependencies. Acta Cybernetica 8,3 (1988),
273-278.
[8] Demetrovics J., Thi V.D. Relations and
minimal keys. Acta Cybernetica 8,3 (1988), 279-285.
[9] Demetrovics J., Thi V.D. On keys in the
Relational Datamodel. Inform. Process Cybern. EIK
24, 10 (1988), 515 - 519
[10] Demetrovics J., Thi V.D. Algorithm for
generating Armstrong relations and inferring functional
dependencies in the relational datamodel. Computers
and Mathematics with Applications. Great Britain.
26,4(1993), 43 - 55.
[11] Demetrovics J., Thi V.D. Some problems
concerning Keys for relation Schemes and Relationals
in the Relational Datamodel. Information Processing
Letters. North Holland 46,4(1993),179-183
176
[12] Demetrovics J., Thi. V.D. Some
Computational Problems Related to the functional
Dependency in the Relational Datamodel. Acta
Scientiarum Mathematicarum 57, 1 - 4 (1993), 627 -
628.
[13] Demetrovics J., Thi V.D. Armstrong
Relation, Functional Dependencies and Strong
Dependencies. Comput. and AI. (submited for
publication).
[14] Demetrovics J., Thi V.D. Keys, antikeys and
prime attributes. Ann. Univ. Scien. Budapest Sect.
Comput. 8 (1987), 37 - 54.
[15] Demetrovics J., Thi V.D. On the Time
Complexity of Algorithms Related to Boyce-Codd
Normal Forms. J. Serdica, the Bulgarian Academy of
Sciencies, No.19 (1993), 134 - 144.
[16] Demetrovics J., Thi V.D. Generating
Armstrong Relations for Relation schemes and
Inferring Functional Dependencies from Relations.
International Jounal on Information Theories and
Applications, ITA-93, 1, 4 (1993), 3 - 12.
[17] Demetrovics J., Thi V.D. Some problems
concerning Armstrong relations of dual schemes and
177
relation schemes in the relational datamodel. Acta
Cybernetica 11, 1-2 (1993), 35 - 47.
[18] Demetrovics J., Thi V.D. Normal Forms and
Minimal Keys in the Relational Datamodel. Acta
Cybernetica Vol. 11,3 ( 1994), 205 - 215.
[19] Demetrovics J., Thi, V.D. Some results about
normal forms for functional dependency in the
relational datamodel. Discrete Aplied Mathematics 69
(1996), 61 - 74.
[20] Garey M.R., Johnson D.S Computers and
Intractability: A Guide to theory of NP - Completeness.
Bell Laboratories. W.H Freeman and Company. San
Francisco 1979.
[21] Gottlob G. Libkin L. Investigations on
Armstrong relations dependency inference, and
excluded functional dependencies. Acta Cybernetica
Hungary IX/4 (1990), 385 - 402.
[22] Jou J.H, Fischer P.C. The complexity of
recognizing 3NF relation schemes . IPL 14 (1982),
187 - 190.
[23] * Libkin L. Direct product decompositions of
lattices, closures and relation schemes. Discrete
Mathematics, North-Holland, 112 (1993), 119-138.
178
[24] Lucchesi C.L., Osborn S.L. Candidate keys
for relations. J. Comput. Syst. Scien 17,2 (1978), 270 -
279
[25] Maier D. Minimum covers in the relational
database model. JACM 27,4 (1980), 664 - 674.
[26] * Mannila H., Raiha K.J. Algorithms for
inferring functional dependencies from relations. Data
and Knowledge Engineering, North - Holland, V. 12,
No. 1 ( 1994 ), 83 - 99.
[27] * Mannila H., Raiha K.J. On the complexity
of inferring functional dependencies. Discrete Applied
Mathematics, North - Holland, 40 ( 1992 ), 237 - 243.
[28] * Thalheim B. The number of keys in
relational and nested relational databases. Discrete
Applied Mathematics, North - Holland, 40 (1992), 265
- 282.
[29] Thi V.D. Investigation on Combinatorial
Characterizations Related to Functional Dependency in
the Relational Datamodel. MTA-SZTAKI
Tanulmanyok. Budapest, 191 (1986), 1 - 157. Ph.D.
dissertation.
[30] Thi V.D. Minimal keys and Antikeys. Acta
Cybernetica 7.4 (1986), 361 - 371
[31] Thi V.D. Minimal keys and Antikeys. Acta
Cybernetica 7, 4 (1986), 361 - 371.
179
[32] Thi V.D. Strong dependencies and s-
semilattices. Acta Cybernetica 7, 2 (1987), 175 - 202.
[33] Thi V.D. Logical dependencies and
irredundant relations. Computers and Artificial
Intelligence 7 (1988), 165 - 184.
[34] Thi V.D., Anh N.K. Weak dependencies in
the relational datamodel. Acta Cybernetica 10, 1-2
(1991), 93 - 100.
[35] Thi V.D., Thanh L.T. Some remark on
Functional Dependencies in the relational Datamodel J.
Acta Cybernetica, Hungary Vol. 11, 4 (1994), 345 -
352.
[36] Thi V.D. On the equivalent descriptions of
family of functional dependencies in the relational
datamodel. J. Computer Science and Cybernetic,
Hanoi Vietnam, Vol 11, 4 (1995), 40 - 50.
[37] Thi V.D. Some Computational problems
related to normal forms. J. Computer Science and
Cybernetic, Hanoi Vietnam, Vol 13, 1 (1997), 53 - 65.
[38] Thi V.D. On the nonkeys. J. Computer
Science and Cybernetic, Hanoi Vietnam, Vol 13, 1
(1997), 11 - 15.
[39] Thi V.D. Some results about hypergraph. J.
Computer Science and Cybernetic, Hanoi Vietnam,
Vol 13, 2 (1997), 8 - 15.
180
[40] Tsou D.M., Fischer P.C. Decomposition of a
relation scheme into Boyce-Codd normal form.
SIGACT NEWS 14 (1982), 23 - 29.
[41] Ullman J.D. Principles of database and
knowledgw base systems. Computer Science Press,
Second Edition (1992).
[42] Yannakakis M., Paradimitriou C. Algebraic
dependencies. J. Comp. Syst. Scien. 25 (1982), 2 - 41.
[43] Yu C.T., Johnson D.T. On the complexity of
finding the set of candidate keys for a given set of
functional dependencies. IPL 5, 4 (1976), 100 - 101.
[44] Zaniolo C. Analysis and design of relational
schemata for database systems. Ph. D. UCLA (1976).
[45] Collongues A., Hugues J., Laroche B.
MERISE - Phương pháp thiết kế hệ thống thông tin
tin học hoá phục vụ quản lí doanh nghiệp (Bản
dịch ). Nhà xuất bản Khoa học kĩ thuật, 1994.
[46] Hồ Sĩ Khoa. Các phương pháp xây dựng các
mô hình khái niệm dữ liệu
[47] Các tài liệu hướng dẫn sử dụng hệ MEGA
[48] Demetrovics J., Denev. , Pavlov R. Cơ sở
toán của khoa học tính toán. Hungary, 1985.
181
Mục lục
Trang
Chương mở đầu 9
Chương 2
Các kiến thức cơ bản về cơ sở dữ liệu
2.1. Khái quát về mô hình dữ liệu
2.2. Các khái niệm cơ bản và hệ tiên đề Armstrong
2.3. Họ phụ thuộc hàm và các mô tả tương đương
2.4. Các thuật toán liên quan đến các khoá
2.5. Mối liên hệ giữa quan hệ Armstrong và sơ đồ
quan hệ
Chương 3
Các dạng chuẩn
và các thuật toán liên quan
3.1. Các khái niệm chung
182
3.2. Dạng chuẩn 2 ( 2NF )
3.3. Dạng chuẩn 3 ( 3NF )
3.4. Dạng chuẩn Boyce - Codd ( BCNF )
3.5. Các thuật toán liên quan
3.6. Dạng chuẩn của các hệ khoá
3.7. Ví dụ
Chương 4
Các phép toán xử lí bảng
4.1. Các phép toán cơ bản
4.2. Các phép toán khác
4.3. Các ví dụ
Chương 5
Một số áp dụng mô hình dữ liệu trong các hệ quản
trị cơ sở dữ liệu ( QTCSDL) hiện có
5.1. Mô tả chung
5.2. Những khái niệm cơ bản
5.3. Mối quan hệ giữa các thực thể
5.4. Các dạng chuẩn trong các hệ QTCSDL hiện có
Chương 6
183
Một số công đoạn xây dựng
các dự án thiết kế tổng thể các hệ thống
cơ sở dữ liệu hiện nay
6.1. Khảo sát thông tin
6.2. Thiết kế mô hình dữ liệu
6.3. Kiểm soát và chuẩn hoá mô hình
Chương 7
Thuật toán và độ phức tạp
7.1. Khái niệm thuật toán
7.2. Độ phức tạp thuật toán
Tài liệu tham khảo
184
![](images/graphics/blank.gif)
![](images/graphics/blank.gif)
## Top Download Cơ Sở Dữ Liệu
-
-
57p
435
211
-
[Giáo trình: Cơ sở dữ liệu quan hệ (Phạm Đức Nhiệm)](http://tailieu.vn/doc/giao-trinh-co-so-du-lieu-quan-he-pham-duc-nhiem--10763.html)
101p
11662
3743
-
-
-
[Tổng hợp những câu lệnh SQL cơ bản](http://tailieu.vn/doc/tong-hop-nhung-cau-lenh-sql-co-ban-1582000.html)
16p
452
252
-
[Giáo Trình Cơ Sở Dữ Liệu - Phan Tấn Quốc](http://tailieu.vn/doc/giao-trinh-co-so-du-lieu-phan-tan-quoc-178900.html)
114p
1461
869
-
-
23p
337
222
-
[Giáo trình cơ sở dữ liệu - Vũ Đức Thi](http://tailieu.vn/doc/giao-trinh-co-so-du-lieu-vu-duc-thi-192914.html)
180p
788
638
Tài Liệu Cơ sở dữ liệu Mới
[Xem thêm »](http://tailieu.vn/cong-nghe-thong-tin/co-so-du-lieu/)
Tài Liệu mới cập nhật
[Xem thêm »](http://tailieu.vn/tai-lieu/)