Chương này trình bày về các phương pháp thiết kế cơ sở dữ liệu quan hệ, quy trình thiết kế và các vấn đề liên quan như: các phép toán trong mô hình quan hệ, phụ thuộc hàm và chuẩn hoá..
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
==============
VŨ CHÍ QUANG
NGHIÊN CỨU MỘT SỐ KHÍA CẠNH LÝ THUYẾT TRONG MÔ HÌNH CSDL QUAN HỆ
LUẬN VĂN THẠC SĨ
HÀ NỘI – 2007
Trang 2MỤC LỤC
MỞ ĐẦU 3
Chương I - LÝ THUYẾT THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ 5
1.1 Phương pháp thiết kế Bottom – Up 5
1.1.1 Các khái niệm cơ bản: 5
1.1.2 Các phép toán trong mô hình quan hệ 7
1.1.3 Phụ thuộc hàm 9
1.1.4 Lý thuyết chuẩn hoá 18
1.2 Phương pháp thiết kế Top – Down 21
1.3 Quá trình thiết kế cơ sở dữ liệu 26
Chương II - LÝ THUYẾT KẾT NỐI VÀ NỬA KẾT NỐI ỨNG DỤNG TRONG TỐI ƯU HOÁ CÂU HỎI 28
2.1 Lý thuyết kết nối và một số kết quả của lý thuyết kết nối 28
2.1.1 Kết nối không mất thông tin 28
2.1.2 Kết nối mất thông tin 30
2.2 Một số tính chất, ý nghĩa của nửa kết nối ứng dụng trong cơ sở dữ liệu phân tán 39 2.2.1 Giới thiệu phép nửa kết nối 39
2.2.2 Các tính chất của phép nửa kết nối 41
2.2.3 ý nghĩa của phép nửa kết nối ứng dụng trong CSDL phân tán 42
2.3 Tối ưu hoá câu hỏi trong cơ sở dữ liệu phân tán 42
2.3.1 Khái quát về cơ sở dữ liệu phân tán 42
2.3.2 Một số nguyên lý chung của tối ưu hoá câu hỏi 52
2.3.3 Tối ưu hoá câu hỏi 71
Chương III -MỘT SỐ BÀI TOÁN NP-C TRONG MÔ HÌNH QUAN HỆ 106
3.1 Tổng quan về thuật toán và đánh giá thuật toán 106
3.1.1 Khái niệm thuật toán 106
3.1.2 Các tính chất của thuật toán 107
3.1.3 Hai mô hình tính toán 108
3.1.4 Khái niệm độ phức tạp thuật toán 108
3.1.5 Phép quy dẫn (dẫn về được) 110
3.1.6 Phân lớp bài toán theo độ phức tạp 111
3.1.7 Cấu trúc của lớp P, NP 112
3.2 Một số bài toán NP-C trong mô hình quan hệ 114
3.2.1 Bài toán siêu khoá có lực lượng không quá m 114
3.2.2 Bài toán quyết định thuộc tính khoá hay không khoá 117
KẾT LUẬN 120
TÀI LIỆU THAM KHẢO 121
Trang 3DANH MỤC CÁC HÌNH VẼ
Hình 1.1 Bức tranh về trật tự các dạng chuẩn 18
Hình 1.2 Biểu đồ E-R cho CSDL công ty 24
Hình 1.3 Quá trình thiết kế một cơ sở dữ liệu 27
Hình 2.1 Đồ thị biểu diễn lược đồ quan hệ R 31
Hình 2.2 Đồ thị con bị cấm 34
Hình 2.3 Mô phỏng quan hệ giữa các đỉnh 36
Hình 2.4: Kiến trúc các lược đồ của một CSDL phân tán 46
Hình 2.5: Kiến trúc chức năng của một hệ QTCSDL phân tán 47
Hình 2.6: Các kiểu phân đoạn của một quan hệ 49
Hình 2.7 Lược đồ tổng quát xử lý truy vấn phân tán 59
Hình 2.8 Các đồ thị quan hệ 63
Hình 2.9 Đồ thị truy vấn không liên thông 63
Hình 2.10 Ví dụ về cây truy vấn 64
Hình 2.11 Cây truy vấn tương đương 65
Hình 2.12 Cây truy vấn đã được viết lại 66
Hình 2.13 Cây truy vấn sau khi thay thế 68
Hình 2.14 Rút gọn phân đoạn ngang (với phép chọn) 68
Hình 2.15 Rút gọn phân đoạn ngang (với phép nối) 69
Hình 2.16 Rút gọn phân đoạn dọc 70
Hình 2.17 Rút gọn phân đoạn hỗn hợp 71
Hình 2.18 Quá trình tối ưu hoá truy vấn 72
Hình 2.19 Các cây nối tương đương 73
Hình 2.20 Đồ thị nối của cây truy vấn 84
Hình 2.21 Các thứ tự nối khác nhau 84
Hình 2.22 Đồ thị nối của cây truy vấn phân tán 86
Hình 2.23 Truy vấn mẫu và số liệu thống kê 99
Hình 2.24 Đồ thị câu truy vấn đơn và số liệu thống kê 102
Hình 3.1 Sơ đồ minh hoạ các lớp bài toán NP, NP-C, NP-Hard 114
Trang 4MỞ ĐẦU
Trong lĩnh vực công nghệ thông tin, cơ sở dữ liệu là một chuyên ngành được đông đảo người làm công nghệ thông tin quan tâm, nghiên cứu và ứng dụng Ra đời
từ những năm 60 của thế kỷ XX đến nay, các hệ cơ sở dữ liệu ngày càng phát triển
và hoàn thiện, nhiều thế hệ quản trị CSDL đã ra đời, tạo ra nhiều sản phẩm ứng dụng trong khoa học kỹ thuật, các ngành kinh tế cũng như trong đời sống xã hội
Việc nghiên cứu CSDL trên thế giới và ở trong nước đã và đang phát triển ngày càng phong phú, đa dạng Từ những năm 70, E.F Codd đã đưa ra mô hình dữ liệu quan hệ tạo một cơ sở vững chắc cho các vấn đề nghiên cứu về CSDL Với ưu điểm về tính cấu trúc 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, làm tăng khả năng xử lý, quản trị và khai thác dữ liệu, phục vụ được hầu hết các yêu cầu của người sử dụng Trên thực tế, đã có nhiều hệ quản trị CSDL xây dựng trên mô hình CSDL quan hệ được sử dụng phổ biến trên thị trường như: DBASE, FOXPRO, ORACLE, MS SQL,
Cho đến nay CSDL quan hệ đã thu được rất nhiều thành tựu sâu sắc cả về phương diện lý thuyết và ứng dụng Phần lớn các hệ quản trị CSDL sử dụng trong thực tiễn được thiết kế trong mô hình quan hệ, rất nhiều sản phẩm phần mềm được tạo ra vẫn đang sử dụng rộng rãi và có hiệu quả Việc tiếp tục nghiên cứu các khía cạnh lý thuyết trong mô hình CSDL quan hệ sẽ tạo điều kiện thuận lợi cho việc nghiên cứu và phát triển các mô hình cơ sở dữ liệu mới như: CSDL phân tán, CSDL suy diễn
Hiện nay đã có nhiều vấn đề về CSDL được nghiên cứu và giải quyết Với mục đích tiếp tục nghiên cứu một số khía cạnh lý thuyết trong mô hình CSDL quan
hệ để nâng cao khả năng ứng dụng của các hệ CSDL, luận văn này tập trung nghiên cứu về các vấn đề:
Trang 5- Nghiên cứu sâu sắc về lý thuyết kết nối và nửa kết nối, ứng dụng lý thuyết kết nối và nửa kết nối trong tối ưu hoá câu hỏi, đặc biệt là trong tối ưu hoá câu hỏi phân tán
- Nghiên cứu độ phức tạp của các thuật toán trong CSDL, giới thiệu một số bài toán trong CSDL là NP-C
Nội dung của bản luận văn này được chia làm 3 chương:
Chương 1: Lý thuyết thiết kế cơ sở dữ liệu quan hệ Chương này trình bày
về các phương pháp thiết kế cơ sở dữ liệu quan hệ, quy trình thiết kế và các vấn đề liên quan như: các phép toán trong mô hình quan hệ, phụ thuộc hàm và chuẩn hoá
Chương II - Lý thuyết kết nối và nửa kết nối Ứng dụng trong tối ưu hoá câu hỏi Đây là chương chính của luận văn; trong chương này trình bày các vấn đề
về lý thuyết kết nối như: kết nối không mất thông tin, kết nối mất thông tin, điều kiện cần và đủ để kết nối không mất thông tin Phần tiếp theo trình bày về phép nửa kết nối, tính chất và ý nghĩa của nửa kết nối ứng dụng trong cơ sở dữ liệu phân tán Phần cuối cùng trình bày các vấn đề ứng dụng lý thuyết kết nối và nửa kết nối trong tối ưu hoá câu hỏi phân tán như: khái quát về CSDL phân tán, các vấn đề về tối ưu hoá câu hỏi, các thuật toán để tối ưu hoá câu hỏi trong môi trường tập trung và môi trường phân tán
Chương III - Một số bài toán NP-C trong mô hình quan hệ Chương này
trình bày một khía cạnh lý thuyết trong cơ sở dữ liệu, đó là đánh giá độ phức tạp của các thuật toán trong các hệ cơ sở dữ liệu, vấn đề này ít được đề cập trong các sách về CSDL và chỉ được giới thiệu trong các bài báo hoặc trong các sách nghiên cứu sâu về lý thuyết thuật toán và độ phức tạp của thuật toán Ngoài ra trong chương này còn giới thiệu một số bài toán cụ thể trong cơ sở dữ liệu là NP-C
Mặc dù đã rất cố gắng để hoàn thành bản luận văn này, nhưng chắc chắn vẫn còn thiếu sót Rất mong được sự góp ý của các thầy cô giáo và các bạn
Trang 6Chương I - LÝ THUYẾT THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ
Trong lý thuyết thiết kế cơ sở dữ liệu quan hệ có hai cách tiếp cận, cách thứ nhất thiết kế theo phương pháp Bottom – Up (dưới - lên), cách thứ hai thiết kế theo phương pháp Top – Down (trên – xuống)
Theo phương pháp Bottom – Up: Mục đích của việc thiết kế cơ sở dữ liệu quan hệ là đưa ra một tập các lược đồ quan hệ để lưu trữ các thông tin của một tổ chức xí nghiệp, ngân hàng, đại học, một cách không dư thừa đồng thời cũng cho phép cập nhật, truy vấn dễ dàng Để đạt được mục đích đó khi nghiên cứu và khảo sát bài toán quản lý trong thực tiễn; ta phải xác định các thuộc tính cần quản lý, mối quan hệ giữa các thuộc tính (các phụ thuộc hàm); tiếp theo là chuẩn hoá các lược đồ quan hệ, thực chất là thực hiện các phép tách để có được các lược đồ theo các dạng chuẩn (1NF, 2NF, 3NF, BCNF, 4NF, 5NF); tuy nhiên các phép tách phải đảm bảo các điều kiện như: bảo toàn thuộc tính, bảo toàn phụ thuộc hàm, không mất mát thông tin
Theo phương pháp Top – Down: Khi nghiên cứu và khảo sát bài toán quản lý trong thực tiễn; ta phải xác định các đối tượng của cơ sở dữ liệu và mối liên hệ giữa các đối tượng; tiếp theo là mô hình hoá thành các kiểu thực thể, kiểu liên kết, xây dựng lược đồ thực thể liên kết ER; cuối cùng là áp dụng các nguyên tắc chuyển từ
mô hình thực thể liên kết ER sang mô hình quan hệ
1.1 Phương pháp thiết kế Bottom – Up
1.1.1 Các khái niệm cơ bản:
- Thuộc tính: Thuộc tính của một quan hệ là cột của bảng quan hệ Trong
mô hình quan hệ không cho phép thuộc tính phức hợp, đa trị Chỉ được là thuộc tính đơn, đơn trị
- Miền giá trị: Là giới hạn dữ liệu của thuộc tính ký hiệu DOM(A) trong đó
A là một thuộc tính
Ví du: Với thuộc tính Lương miền giá trị là: 0 – 1000000
Trang 7- Lược đồ quan hệ: Mô tả cấu trúc của một quan hệ, được ký hiệu là R(A1,
A2, , An) trong đó R là tên quan hệ và Ai (i=1 n) là các thuộc tính
Ví dụ: Lược đồ quan hệ
NHANVIEN( HOTEN, MSBHXH, DIACHI, LUONG, GIOITINH, NGAYSINH )
- Quan hệ: Là một tập con của tích Descartes của danh sách các miền giá trị,
được ký hiệu là: r={t1, t2, , tm} DOM(A1) x x DOM(An)
Trong đó:
+ ti = <vi1, vi2, , vin>
+ vij DOM(Aj) (i=1 m; j=1 n)
Chú ý:
+ Một quan hệ chính là một bảng hai chiều:
+ Số các thuộc tính của quan hệ là số ngôi của quan hệ
+ Thứ tự các dòng, các cột trong bảng quan hệ không quan trọng
+ Các giá trị trong bảng phải đơn trị và phù hợp với kiểu dữ liệu của thuộc tính (ký tự, số, Logic, Ngày)
+ Dữ liệu của quan hệ có thể thay đổi theo thời gian do thường xuyên phải cập nhật dữ liệu
+ Quan hệ Nhân viên là quan hệ 6 ngôi
- Lược đồ CSDL: Là một tập các lược đồ quan hệ ký hiệu là:
S = {R1, R2, , Rm}, trong đó Ri (i=1 m) là một lược đồ quan hệ
- CSDL Quan hệ: Là một tập các quan hệ ký hiệu là:
DB = {r1, r2, , rm}, trong đó ri (i=1 m) là quan hệ (thể hiện của Ri)
- Siêu khoá (SK): SK được gọi là siêu khoá nếu với mọi t1, t2 r thì t1[SK]
t2[SK]
Trong đó:
+ SK: là một hoặc nhiều cột (thuộc tính) trong bảng
+ t1, t2 là các bộ giá trị của mỗi hàng trong bảng
+ t1[SK], t2[SK]theo thứ tự là các bộ giá trị củaSKtương ứng với các bộ t1,
t2
Trang 8- Khoá (K): Khoá của một lược đồ quan hệ là một siêu khoá tối thiểu (khoá
dự tuyển)
- Khoá chính (PK): Là một trong các khoá dự tuyển
- Khoá ngoài (FK): Một nhóm các thuộc tính gọi là khoá ngoài (FK) của một
quan hệ r1 tham chiếu đến quan hệ r2 nếu miền giá trị FK của r1 phải giống miền giá trị PK của r2
- Ràng buộc:
+ Ràng buộc miền: vi DOM(Ai)
+ Ràng buộc Khoá: Giá trị của khoá phải duy nhất
+ Ràng buộc toàn vẹn thực thể: Giá trị của khoá chính (PK) phải xác định (không có giá trị null)
+ Ràng buộc toàn tham chiếu:
Nếu Khoá ngoài của R1 tham chiếu đến khoá chính của R2 thì phải có cùng miền giá trị với khoá chính của R2
Mỗi giá trị của Khoá ngoài của R1 hoặc là phải có mặt trong khoá chính của R2 hoặc là nhận giá trị Null (với ngữ nghĩa là một giá trị tồn tại nhưng không biết)
1.1.2 Các phép toán trong mô hình quan hệ
1.1.2.1 Phép toán cập nhật
- Phép chèn (INSERT): Là phép thêm một bộ (bản ghi) vào quan hệ r
- Phép loại bỏ (DELETE): Là phép loại bỏ một bộ ra khỏi quan hệ r
- Phép cập nhật (UPDATE): Là phép thay đổi giá trị của các thuộc tính
trong một hoặc một số bộ nào đó
1.1.2.2 Đại số quan hệ
- Các phép toán tập hợp: Các quan hệ tham gia một phép toán tập hợp (hợp, giao, trừ) phải có cùng cấu trúc
+ Phép hợp r s: Thực chất của phép hợp là xây dựng một tập các bộ thuộc
quan hệ r hoặc quan hệ s hoặc cả 2 quan hệ
Trang 9Phép hợp được ký hiệu và định nghĩa là:
+ Phép trừ r \ s: Thực chất của phép trừ là xây dựng một tập các bộ thuộc
quan hệ r nhưng không thuộc quan hệ s
Phép trừ được ký hiệu và định nghĩa là:
r \ s = { t t r và t s }
+ Tích Descartes r x s: Tích Descartes của hai quan hệ chỉ xét trên các lược
đồ rời nhau (nếu hai lược đồ có thuộc tính cùng tên thì ta có thể đổi tên thuộc tính cùng tên của một trong hai lược đồ, để hai lược đồ rời nhau) Cho hai lược đồ R={A1, A2, …, An} và S={B1, B2, …, Bm}, r và s là hai quan hệ trên R và S tương ứng Tích Descartes của hai quan hệ r và s là một quan hệ q Mỗi bộ trong quan hệ q
ký hiệu tq là ghép một bộ tr r với một bộ tss; trong đó tr = (a1, a2, …, an), ts = (b1,
b2, …, bm), tq = (a1, a2, …, an, b1, b2, …, bm)
Tích Descartes được ký hiệu và định nghĩa là:
r x s = {tt=(a1, a2, , an, b1, b2, , bm), (a1, a2, , an)r và (b1, b2, , bm)s} Như vậy nếu r có x bộ, s có y bộ thì q có x * y bộ
+ Phép chia r s: Cho lược đồ R ={A1, A2, …, An}, S R, r và s là hai quan
hệ trên R và S tương ứng Phép chia của quan hệ r cho s được một quan hệ q trên lược đồ R-S sao cho mỗi bộ t q ghép với mọi bộ u s ta được một bộ < t, u >
r
Phép chia được ký hiệu và định nghĩa là:
r s = {t mọi u s , < t, u > r }
Trang 10- Phép chiếu X(r): Thực chất của phép chiếu là loại bỏ đi một số thuộc tính và giữ lại những thuộc tính còn lại của quan hệ (các thuộc tính trong tập X, X R)
Phép chiếu được ký hiệu và định nghĩa là:
X(r) = {t[X] t r }
- Phép chọn <Điều kiên> (r): Thực chất của phép chọn là xây dựng một tập
con của quan hệ thoả mãn điều kiện xác định <Điều kiện> chính là một biểu thức logic; ta có thể sử dụng các phép toán so sánh: =, >, >=, <, <=, <> và các phép toán logic như: and (), or (), not () để tạo các biểu thức điều kiện thoả mãn các yêu cầu của người sử dụng
Phép chọn được ký hiệu và định nghĩa là:
<Điều kiện>(r) = {t t r, <Điều kiện>( t ) = true }
- Phép nối r <Điều kiện> s: Thựcchấtcủa phépnối là phépchọn của quan hệ (rx s) theo điều kiện xác định Trong đó: r x s là tích Descartes; <Điều kiện> là một biểu thức logic xác định điều kiện nối giữa hai quan hệ r và s theo , ( là một trong các phép toán so sánh =, >, >=, <, <=,<>) được ký hiệu là: Ai Bj (Ai r , Bj s,
Ai và Bj phải có cùng miền giá trị)
Phép nối được ký hiệu và định nghĩa là:
- Phép nối tự nhiên: Khi các quan hệ r và s có chung một số thuộc tính
(cùng tên và có cùng giá trị thuộc một miền nào đó) thì phép kết nối r và s theo điều kiện các thuộc tính đó bằng nhau và một trong hai thuộc tính giống nhau được loại
bỏ trong quan hệ kết quả thì phép kết nối này được gọi là phép kết nối tự nhiên và
được ký hiệu là r s
- Phép nửa nối r s : Thực chất của phép nửa nối là phép chiếu lên R của
kiện nào đó là một quan hệ gồm tất cả các bộ thuộc r có tính chất kết nối được theo điều kiện với một bộ nào đó trong quan hệ s
Trang 11Phép nửa nối được ký hiệu và định nghĩa là:
r s = R(r <Điều kiện> s)
1.1.3 Phụ thuộc hàm
1.1.3.1 Khái niệm phụ thuộc hàm:
Phụ thuộc hàm trên một lược đồ quan hệ là một khái niệm có tầm quan trọng hết sức lớn đối với việc thiết kế cơ sở dữ liệu
Một phụ thuộc hàm là một phát biểu ký hiệu : X Y, trong đó là tên của phụ thuộc hàm, X và Y là các tập thuộc tính
Xét phụ thuộc hàm : X Y trong lược đồ quan hệ R, với R={A1, A2,
An} là tập các thuộc tính, X và Y là tập con của R, X Y = Khi đó ta nói X xác định hàm Y hay Y phụ thuộc hàm vào X nếu t1, t2 là các cặp bộ xác định trên quan
hệ r mà t1[X] = t2[X] thì t1[Y] = t2[Y]
1.1.3.2 Hệ tiên đề Armstrong
Trước khi đi vào trình bày hệ tiên đề cho phụ thuộc hàm, chúng ta sẽ xem xét một vài khái niệm liên quan đến các phụ thuộc hàm trong lược đồ quan hệ
Gọi F là tập các phụ thuộc hàm cho trước đúng trên lược đồ quan hệ R, và X
Y là một phụ thuộc hàm với X,Y của tập các thuộc tính
- Suy diễn logic: Nói rằng X Y được suy diễn logic từ F nếu mỗi quan hệ r trên lược đồ quan hệ R thoả các phụ thuộc hàm của F thì cũng thỏa X Y
cả các phụ thuộc hàm được suy diễn logic từ F
Để có thể xác định khoá của một lược đồ quan hệ và các suy diễn logic giữa các phụ thuộc hàm cần thiết phải tính được F+ từ F Do đó đòi hỏi phải có hệ tiên
Trang 12- Tiên đề 2 (Tăng trưởng): Nếu X Y thì X Z Y Z
- Tiên đề 3 (Bắc cầu): Nếu X Y và Y Z thì X Z
Tính đúng đắn của các tiên đề này đã được chứng minh một cách tường minh
và đầy đủ trong [3] (chương 7, tập II)
Ta có một kết quả quan trọng sau :
Định lý 1.1 : Hệ tiên đề Armstrong là xác đáng và đầy đủ
Chứng minh : Định lý này đã được chứng minh đầy đủ trong [3] (chương 7, tập II)
Từ hệ tiên đề Armstrong suy ra một số luật mở rộng sau:
1.1.3.3 Bao đóng của một tập thuộc tính :
Bao đóng của X đối với F gọi là X+, tức là tập tất cả các thuộc tính phụ thuộc vào X thông qua F Cho S = <, F> là một lược đồ quan hệ và X Bao đóng của X đối với F được định nghĩa :
X+ ={A A và (X A) F+}
Thuật toán sau sẽ xác định bao đóng của tập các thuộc tính
UNTIL X+=TAM
Trang 13Nhận xét: Độ phức tạp của giải thuật là O(n2.p) với n = số thuộc tính và p =
số các phụ thuộc hàm
Ví du:
- Cho lược đồ quan hệ:
R(MASONV, HOTEN, MSDUAN, TENDA, DIADIEM, SOGIO)
Tập các phụ thuộc hàm F:
MASONV HOTEN
MSDUAN TENDA, DIADIEM
MASONV, MSDUAN SOGIO
- Tính X+ của vế trái các phụ thuộc hàm:
MASONV+ = MASONV, HOTEN
MSDUAN += MSDUAN, TENDA, DIADIEM
{MASONV, MSDUAN}+ = MASONV, MSDUAN , SOGIO, HOTEN, TENDA, DIADIEM
1.1.3.4 Cách xác định khoá:
Trong lý thuyết thiết kế cơ sở dữ liệu quan hệ, việc xác định khoá của một lược đồ quan hệ là một bài toán quan trọng Sau đây tác giả xin trình bày một số kết quả liên quan đến việc xác định khoá của một lược đồ quan hệ
- Định lý của các tác giả Hồ Thuần và Lê Văn Bảo cho một điều kiện cần để
tập X là khoá của một lược đồ quan hệ [2]
1
, R = p
i i R
1
Chứng minh:
Trang 14+ Trước hết ta chứng minh rằng nếu X là khoá thì (\R) X
Thực vậy nếu X là khoá thì X+ =
Mặt khác, theo thuật toán tính bao đóng ta có:
Bằng phương pháp chứng minh phản chứng, ta giả sử X (R\L) ≠ Khi
đó tồn tại một thuộc tính A sao cho A X, A R và A L
Vậy định lý được chứng minh
Từ định lý 1.2 ta có thể suy ra được các hệ quả sau:
Hệ quả 1: Cho S = < , F > là một lược đồ quan hệ Nếu R \ L ≠ thì tồn tại một khoá X sao cho X ≠
Hệ quả 2: Cho S = < , F > là một lược đồ quan hệ Nếu L R = thì (\R) là khoá duy nhất của lược đồ S
- Thuật toán xác định một khoá của lược đồ [2]
Thuật toán 1.2 (Xác định một khoá của lược đồ)
Bước 1: X := \ R;
Trang 15Bước 2: Nếu X+ = thì chuyển sang bước 5;
Bước 3: X := (\R) (L R);
Bước 4: Với mọi Ai L R thực hiện
+ X := X \ {Ai} + Nếu X+ ≠ thì X := X {Ai};
Bước 5: Kết luận X là khoá
- Định lý của các tác giả Lucchesi và Osborn cho phép xây dựng thuật toán
tìm tất cả các khoá của lược đồ quan hệ S = <, F> [2]
Định lý 1.3 ( Lucchesi và Osborn)
Cho S = <, F> là một lược đồ quan hệ Gọi K là một tập khác rỗng các khoá của S Điều kiện cần và đủ để họ 2 \ K có chứa khoá của S là có tồn tại một phần tử KK và tồn tại một phụ thuộc hàm (Li0 Ri0) F sao cho tập T = Li0 (K \ Ri0) không chứa phần tử nào thuộc K (ở đây 2 ký hiệu họ tất cả các tập con của )
Chứng minh :
+ Điều kiện đủ :
Giả sử tồn tại KK, (Li0Ri0) F sao cho sao cho tập T=Li0(K \ Ri0) không chứa phần tử nào thuộc K Dễ thấy T là một siêu khoá và phải chứa ít nhất một khoá của S Vì T không chứa một khoá nào của K Vậy T phải chứa một khoá thuộc họ 2 \ K Nói cách khác 2 \ K có chứa khoá của S
+ Điều kiện cần :
Giả sử 2 \ K có chứa khoá K’ của S Gọi K’’ là tập tối đại thoả mãn hai tính chất sau :
i) K’’ K’
ii) K’’ không chứa phần tử nào của K
Dễ thấy siêu khoá K’’ như vậy bao giờ cũng tồn tại (do tính chất i)
Do tính chất ii) K’’ , và trong quá trình tính bao đóng, rõ ràng tồn tại phụ thuộc hàm Li0Ri0 sao cho Li0 K’’ và Ri0 K’’
Trang 16Xét tập K’’ Ri0 Vì K’’ là tập tối đại thoả mãn tính chất ii), suy ra K’’ Ri0
K với K K
Từ K K’’ Ri0 và Ri0 K’’ suy ra K \ Ri0 K’’
Kết hợp với Li0 K’’, ta có T = Li0 (K \ Ri0) K’’ Điều đó chứng tỏ sự tồn tại của K K và sự tồn tại của (Li0Ri0) F sao cho tập T không chứa khoá nào thuộc K
- Thuật toán xác định tập tất cả các khoá của lược đồ quan hệ S=<, F> dựa vào định lý 1.3 ( Lucchesi và Osborn) và thuật toán 1.2 (xác định một khoá của lược đồ) [2, 3]
Thuật toán 1.3 (Xác định tập tất cả các khoá của lược đồ)
1 Ks := { K K là một khoá của lược đồ < , F > và K chứa trong siêu
7 If H M then Test := False ;
8 If Test then Ks :=Ks {KK là một khoá của lược đồ <,F>
Trang 17Định nghĩa (hai tập phụ thuộc hàm tương đương): Cho hai phụ thuộc hàm F
và G G và F được gọi là tương đương nếu G+ = F+, khi đó ta nói G là một phủ của
F và ngược lại F cũng là một phủ của G
Định nghĩa (phủ tối tiểu): Cho G là một tập phụ thuộc hàm F được gọi là
một phủ tối tiểu của G nếu thoả mãn các tính chất sau:
i) F là phủ của G
ii) Mọi f F, f có dạng X A (vế phải gồm đúng một thuộc tính)
iii) F không chứa phụ thuộc hàm dư thừa theo nghĩa :
Cho = (R1, , Rm) là một phân tách của lược đồ quan hệ R(A1, , An) và r
là một thể hiện của lược đồ quan hệ <R, F> Gọi m(r) là ánh xạ được xác định bởi:
Trang 18Trong lý thuyết phân tách lược đồ R(A1, A2, , An) thành các lược đồ con
= (R1, , Rm) có hai tính chất đó là phân tách không mất mát thông tin và phân tách bảo toàn tập phụ thuộc hàm F Hai tính chất này độc lập với nhau tức là có phân tách bảo toàn thông tin nhưng không bảo toàn tập phụ thuộc hàm F và ngược lại
- Phân tách không mất thông tin
Định nghĩa: (Phân tách không mất thông tin)
Phân tách = (R1, R2, , Rm) được gọi là phân tách có kết nối không tổn thất (tức không mất thông tin) của lược đồ quan hệ <R, F> nếu như với mọi r là thể hiện của R mà thoả F thì :
r = r1 r2 rm (tức r = m(r))
Để kiểm tra một phân tách mất thông tin hay không ta sử dụng thuật toán:
không ?
Thuật toán 1.4 (Kiểm tra một phân tách có mất thông tin hay không)
Bước 1: Lập bảng ban đầu là ma trận m hàng (ứng với m lược đồ con Ri) và
n cột (ứng với tập thuộc tính {A1, A2, , An}) Phần tử hàng i, cột j (i, j) của ma trận được xác định theo công thức sau:
i j j
RA
RA
b
a j i,
nÕu
nÕu)
(
trong đó aj, bij Dom(Aj)
Bước 2: Biến đổi bảng
Mục đích của việc biến đổi bảng là để cuối cùng thu được một bảng, xem bảng đó như một quan hệ, thoả tập phụ thuộc hàm F Muốn vậy ta lần lượt xét các phụ thuộc hàm X Y thuộc F
Với mỗi phụ thuộc hàm như vậy nếu phát hiện trên bảng có hai hàng giống nhau trên X và khác nhau trên Y thì phải thay đổi bảng sao cho hai hàng đó cũng giống nhau trên Y Việc thay đổi được thực hiện theo quy tắc :
Trang 19 Nếu một trong hai ký hiệu trên Y có dạng ai thì ký hiệu kia sẽ được đổi thành ai
Nếu cả hai ký hiệu trên Y đều có dạng bij thì lấy tuỳ ý một trong hai ký hiệu đó và gán chung cho cả hai
Tiếp tục làm như vậy cho tới khi không thể biến đổi bảng được nữa Khi đó
ta thu được bảng cuối cùng
Bước 3: Nếu trong bảng cuối cùng có chứa hàng gồm toàn ký hiệu a (tức
hàng a1, a2, , an), ta kết luận = (R1, R2, , Rm) là phân tách không mất thông tin (tức là cho câu trả lời đúng) Trường hợp ngược lại là phân tách mất thông tin
Định lý 1.4:
Cho <R, F> là một lược đồ quan hệ Khi đó = (R1, R2) là phân tách có kết nối không tổn thất (đối với F) khi và chỉ khi
( R1 R2 ) ( R1 - R2 ) hay ( R1 R2 ) ( R2 - R1 )
- Phân tách bảo toàn các phụ thuộc hàm
Định nghĩa: (Hình chiếu của F lên tập thuộc tính Z)
Cho lược đồ quan hệ <R, F>, và Z R Hình chiếu của F lên tập thuộc tính
Z, ký hiệu z(F), được định nghĩa là :
z(F) = { X Y (X Y) F+ và XY Z}
Định nghĩa: (Phân tách bảo toàn các phụ thuộc hàm)
Phân tách = (R1, R2, , Rm) của lược đồ quan hệ <R, F> được gọi là phân tách bảo toàn tập phụ thuộc hàm F nếu:
m
i 1
F (F)) (
i R
1.1.4 Lý thuyết chuẩn hoá
Khi thiết kế cơ sở dữ liệu quan hệ thường nảy sinh các vấn đề như: dư thừa
dữ liệu, gây ra các dị thường cập nhật (thêm, xoá, sửa bộ); cho nên các lược đồ quan hệ nhất thiết phải được biến đổi thành các dạng phù hợp Quá trình đó được gọi là quá trình chuẩn hoá
Trang 20Một quan hệ được chuẩn hoá có thể tách thành một hoặc nhiều quan hệ chuẩn hoá khác và không làm mất thông tin Trong mô hình quan hệ phân thành các dạng chuẩn 1NF, 2NF, 3NF, BCNF
Việc đưa các lược đồ quan hệ về các dạng chuẩn là nhằm mục đích:
+ Tránh dư thừa dữ liệu
+ Tránh các dị thường trong cập nhật dữ liệu
Với ý nghĩa đó ta thấy dạng chuẩn BCNF tốt hơn 3NF, 3NF tốt hơn 2NF, 2NF tốt hơn 1NF; và bức tranh về trật tự các dạng chuẩn được mô tả như sau:
Hình 1.1 Bức tranh về trật tự các dạng chuẩn 1.1.4.1 Một số khái niệm trong chuẩn hoá:
- Thuộc tính khoá: Một thuộc tính trong lược đồ quan hệ R được gọi là thuộc
tính khoá nếu nó tham gia ít nhất một khoá của R Ngược lại được gọi là thuộc tính không khoá
- Phụ thuộc hàm đầy đủ: Cho lược đồ quan hệ R; R={A1, A2, , An } là tập các thuộc tính, X và Y là hai tập con khác nhau của R Y là phụ thuộc hàm đầy đủ vào X nếu Y là phụ thuộc hàm vào X nhưng không phụ thuộc hàm vào bất kỳ tập con thực sự nào của X Ngược lại ta nói Y là phụ thuộc hàm bộ phận của X
Trang 21được gọi là phụ thuộc bắc cầu nếu tồn tại Z sao cho X Z, Z Y Nếu không có
Z như vậy ta nói Y phụ thuộc hàm trực tiếp vào X
1.1.4.2 Định nghĩa các dạng chuẩn:
- Dạng chuẩn 1NF: Một lược đồ quan hệ R được gọi là ở dạng chuẩn 1
(1NF) nếu mọi thuộc tính của R là đơn, đơn trị không có thuộc tính đa trị, nhóm thuộc tính đa trị (quan hệ trong quan hệ) [6]
- Dạng chuẩn 2NF: Lược đồ quan hệ R ở dạng chuẩn 2 (2NF) nếu nó ở
dạng chuẩn 1 và mọi thuộc tính không khoá của R đều phụ thuộc hàm đầy đủ vào mỗi một khoá [10]
- Dạng chuẩn 3NF: Lược đồ quan hệ R là ở dạng chuẩn 3 (3NF) nếu nó ở
2NF và mỗi thuộc tính không khoá của R đều không phụ thuộc hàm bắc cầu vào bất
kỳ một khoá nào [3]
- Dạng chuẩn BCNF (Boyce-Codd): Lược đồ quan hệ R với tập các phụ
thuộc hàm là ở dạng chuẩn Boyce - Codd nếu X A thoả trên R, A X thì X là một siêu khoá của R [2]
Nhận xét: Nếu một lược đồ quan hệ R với tập phụ thuộc hàm F ở BCNF thì
nó là ở 3NF (Điều này đã được chứng minh trong [3])
1.1.4.3 Phân tách đưa lược đồ về các dạng chuẩn:
Trong việc thiết kế cơ sở dữ liệu quan hệ đòi hỏi các lược đồ quan hệ phải ở các dạng chuẩn thích hợp để tránh dư thừa dữ liệu và các dị thường cập nhật Do đó đối với một lược đồ quan hệ <R, F> ta mong muốn xác định một phân tách = (R1,
R2, , Rm) sao cho có ba tính chất sau:
i) Có kết nối không tổn thất (không mất mát thông tin)
iii) Bảo toàn tập phụ thuộc hàm F
iv) Mọi lược đồ con R1, R2, , Rm đều ở 3NF
- Phân tách – kết nối không tổn thất về chuẩn BCNF
Để thực hiện phân tách – kết nối không tổn thất ta phân tách lược đồ R thành các lược đồ con ở dạng chuẩn BCNF theo thuật toán sau:
Input : Lược đồ quan hệ < R, F >
Trang 22Output : Một phân tách có kết nối không tổn thất = (R1, R2, , Rm), với
các lược đồ thành phần Ri, i = 1 m ở dạng chuẩn BCNF
Thuật toán 1.5 (Phân tách kết nối không tổn thất đưa lược đồ về chuẩn BCNF)
Ta xây dựng một phân tách qua các bước lặp sao cho ở mỗi bước, luôn là phân tách có kết nối không tổn thất
Bước 1: Khởi tạo = (R)
Bước 2: Nếu trong có lược đồ S = < Rs, Fs > vi phạm BCNF, tức là tồn tại phụ thuộc hàm X A được thoả trên S, nhưng X không phải là khoá của S và
AX thì phân tách S thành hai lược đồ với tập thuộc tính tương ứng là XA và
Rs\{A}
Bước 3: Thực hiện lại bước 2 đến khi trong không có lược đồ nào vi phạm BCNF thì vòng lặp kết thúc
- Phân tách bảo toàn phụ thuộc hàm về chuẩn 3NF
Thuật toán 1.5 không đảm bảo sinh ra một phân tách bảo toàn tập phụ thuộc hàm F Để đảm bảo đầu ra của phân tách là bảo toàn tập phụ thuộc hàm F ta phân tách lược đồ R thành các lược đồ con ở dạng chuẩn 3NF theo thuật toán sau:
Input : Lược đồ quan hệ < R, F > với giả thiết F là phủ tối tiểu
Output : Một phân tách của R bảo toàn tập F sao cho mỗi lược đồ con đều ở
3NF đối với hình chiếu của F lên lược đồ con đó
Thuật toán 1.6 ( Phân tách về dạng chuẩn 3NF và bảo toàn tập F)
Bước 1: Nếu có những thuộc tính của R không xuất hiện trong bất kỳ một
phụ thuộc hàm nào của F thì ta tách các thuộc tính đó thành một lược đồ quan hệ và loại chúng ra khỏi R
Bước 2: Nếu tồn tại một phụ thuộc hàm chứa tất cả các thuộc tính của R thì
phân tách cần tìm chính là R
Bước 3: Trong trường hợp còn lại, kết quả gồm các lược đồ ứng với các tập
thuộc tính có dạng XA cho mỗi phụ thuộc hàm XA trong F Nếu trong F có các
Trang 23phụ thuộc hàm có cùng vế trái X A1, X A2, , X Ap thì chúng ta có thể sử dụng lược đồ XA1A2 Ap thay cho các lược đồ XAi với i=1 p
Như vậy ta có thuật toán 1.5 để phân tách kết nối không tổn thất một lược đồ quan hệ thành các lược đồ con ở chuẩn BCNF, và thuật toán 1.6 để phân tách bảo toàn tập phụ thuộc hàm F của một lược đồ quan hệ thành các lược đồ con ở chuẩn 3NF Vấn đề đặt ra là có hay không một thuật toán tạo ra một phân tách có cả hai tính chất kết nối không tổn thất và bảo toàn phụ thuộc với yêu cầu các lược đồ con chỉ ở 3NF ? Định lý sau đây khẳng định tồn tại một phép tách như vậy [3]
Định lý 1.5: (Phân tách về dạng chuẩn 3NF, có kết nối không tổn thất và bảo toàn
tập phụ thuộc dữ liệu)
Gọi là phân tách về dạng chuẩn 3NF và bảo toàn tập F được xây dựng bởi thuật toán 1.6, và gọi X là một khoá của R Khi đó = {X} là một phân tách của R trong đó mọi lược đồ con đều là 3NF, phân tách đó bảo toàn tập F và có kết nối không tổn thất
Chứng minh : Định lý đã được chứng minh đầy đủ trong [2, 3]
1.2 Phương pháp thiết kế Top – Down
Một cách tiếp cận khác đối với việc thiết kế cơ sở dữ liệu quan hệ, đó là cách thiết kế từ trên xuống (Top – Down) Đối với phương pháp thiết kế này trước hết ta thiết kế cơ sở dữ liệu theo mô hình thực thể liên kết, sau đó sử dụng biểu đồ thực
thể liên kết ER (Entity Relationships) ánh xạ sang mô hình quan hệ Để thực hiện
chuyển từ mô hình thực thể liên kết sang mô hình quan hệ ta phải tuân theo các nguyên tắc sau: [6]
- Nguyên tắc 1: Với kiểu thực thể thông thường => chuyển thành một quan
hệ sao cho các thuộc tính của quan hệ là các thuộc tính đơn (hoặc các thành phần đơn của thuộc tính phức hợp) Khoá chính của quan hệ chọn một trong các khoá của thực thể
- Nguyên tắc 2: Với các thực thể yếu => chuyển thành một quan hệ như
nguyên tắc 1 nhưng bổ sung thêm các thuộc tính là khoá chính của thực thể cha Khi đó khoá chính của quan hệ là khoá chính của thực thể cha + khoá bộ phận
Trang 24- Nguyên tắc 3: Với kiểu liên kết 1 – 1 : Lấy khoá chính của bảng có các
thực thể tham gia bộ phận đưa sang làm khoá ngoài của bảng có các thực thể tham gia toàn bộ Nếu trong mối liên kết có thuộc tính liên kết thì đưa cả thuộc tính liên kết vào bảng có các thực thể tham gia toàn bộ
- Nguyên tắc 4: Với kiểu liên kết 1 – N : Lấy khoá chính của bảng bên 1 đưa
sang làm khoá ngoài của bảng bên N
- Nguyên tắc 5: Với kiểu liên kết N – M : Thực hiện tạo thêm bảng mới
Trong bảng mới lấy các thuộc tính là khoá chính của 2 bảng, nếu trong mối liên kết
có thuộc tính liên kết thì đưa cả thuộc tính liên kết vào bảng mới Khoá chính của bảng mới là khoá chính của bảng bên N + khoá chính của bảng bên M
- Nguyên tắc 6: Với thuộc tính đa trị : Thực hiện loại bỏ thuộc tính đa trị
trong bảng sau đó tạo thêm bảng mới Trong bảng mới lấy thuộc tính là khoá chính của bảng có thuộc tính đa trị và thuộc tính đa trị chuyển thành thuộc tính đơn trị Khoá chính của bảng mới là cả hai thuộc tính của bảng
- Nguyên tắc 7: Với kiểu liên kết cấp cao (kiểu liên kết giữa ba kiểu thực thể
trở lên) Thực hiện tạo thêm bảng mới Trong bảng mới lấy các thuộc tính là các khoá chính của các bảng tham gia liên kết, nếu trong mối liên kết có thuộc tính liên kết thì đưa cả thuộc tính liên kết vào bảng mới Khoá chính của bảng mới là hợp các khoá chính của các bảng tham gia liên kết
- Nguyên tắc 8: Với kiểu liên kết đệ quy : Thực hiện bổ sung thêm một
thuộc tính mới chứa giá trị khoá của thực thể liên kết đệ quy
Ví dụ: Thiết kế cơ sở dữ liệu quan hệ theo phương pháp Top – Down
Xây dựng CSDL quản lý công ty Sau khi khảo sát thực tế các hoạt động của công ty được mô tả bằng các quy tắc sau:
1 Một công ty được tổ chức thành các đơn vị Mỗi đơn vị có một tên duy nhất, một mã số duy nhất và một nhân viên quản lý đơn vị Việc nhân viên quản lý đơn vị được ghi lại bằng ngày bắt đầu Một đơn vị có thể có nhiều địa điểm
2 Một đơn vị có thể kiểm soát một số dự án Mỗi dự án có một tên duy nhất, một
mã số duy nhất và một địa điểm
Trang 253 Mỗi nhân viên được lưu giữ: Họ tên, Mã số BHXH, Địa chỉ, Lương, Giới tính, Ngày sinh Mỗi nhân viên làm việc cho một đơn vị nhưng có thể làm việc trên nhiều dự án do đơn vị đó kiểm soát Việc làm việc trên dự án của nhân viên được lưu lại bằng số giờ làm việc cho dự án Mỗi nhân viên có thể có nhân viên khác theo dõi (tổ trưởng, nhóm trưởng)
4 Mỗi nhân viên có thể có những người phụ thuộc (người phải nuôi) những người này được hưởng bảo hiểm xã hội Thông tin về những người phụ thuộc gồm có:
Họ tên, ngày sinh, giới tính, mối quan hệ
Thực hiện xây dựng mô hình thực thể liên kết (Lược đồ E-R):
Bước 1: Xác định các kiểu thực thể
DONVI(Tên đơn vị, Mã số ĐV, Nhân Viên QL, Địa điểm, Ngày BĐ)
DUAN(Tên dự án, Mã số DA, Địa điểm)
NHANVIEN(Họ tên, MSBHXH, Địa chỉ, Lương, giới tính, Ngày sinh) NGUOIPT(Họ tên, giới tính, ngày sinh, mối quan hệ) {Thực thể yếu}
Trong đó: các thuộc tính gạch chân một nét là khoá của kiểu thực thể, thuộc tính gạch chân hai nét là thuộc tính đa trị
Bước 2: Xác định các liên kết:
Nhân viên 1 Quản lý 1 Đơn vị
Đơn vị 1 Kiểm soát N Dự án
Trang 26Bước 3: Xây dựng mô hình thực thể liên kết:
Hình 1.2 Biểu đồ E-R cho CSDL công ty
Ánh xạ từ mô hình thực thể liên kết sang mô hình quan hệ
- Xét kiểu thực thể DONVI(Tên đơn vị, Mã số ĐV, Nhân Viên QL, Địa điểm, Ngày BĐ): Có thuộc tính Địa điểm là đa trị, có mối liên kết 1 – 1 với kiểu thực thể NHANVIEN và thuộc tính liên kết là Ngày BĐ Áp dụng các nguyên tắc 1,
Họ tên Giới tính Ngày sinh Mối QH Tên DA Mã số DA Địa điểm
Ngày BĐ
Số giờ LV
N
Có
Trang 27DONVI(MSDV, TENDV, MSBHXH, NGAYBD)
DV_DD(MSDV, DIADIEM)
- Xét kiểu thực thể DUAN(Tên dự án, Mã số DA, Địa điểm): Có mối liên kết
N – 1 với kiểu thực thể DONVI, có mối liên kết M – N với kiểu thực thể NHANVIEN và thuộc tính liên kết là Số giờ LV Áp dụng các nguyên tắc 1, 4, 5 ta
NGUOIPT(MSBHXH, HOTEN, GIOITINH, NGAYSINH, MOIQH)
Cuối cùng ta xây dựng được lược đồ CSDL cho bài toán quản lý công ty như sau:
DONVI(MSDV, TENDV, MSBHXH, NGAYBD)
NGUOIPT(MSBHXH, HOTEN, GIOITINH, NGAYSINH, MOIQH)
1.3 Quá trình thiết kế cơ sở dữ liệu
Trang 28Quá trình thiết kế cơ sở dữ liệu được minh hoạ ở hình 1.3 Quá trình đó thực hiện theo các bước sau:
Bước 1 Tập hợp các yêu cầu và phân tích: Đây là yêu cầu khảo sát bài toán
quản lý trong thực tế, ta phải thu thập các yêu cầu của người dùng và ghi chép lại ở dạng súc tích Những đặc tả này càng chi tiết và đầy đủ càng tốt
Bước 2 Thiết kế khái niệm: Lựa chọn một mô hình dữ liệu, dùng các khái
niệm của mô hình đó để chuyển những đặc tả yêu cầu của người dùng thành một lược đồ khái niệm Lược đồ khái niệm bậc cao được dùng để đảm bảo rằng kết quả của quá trình thiết kế cơ sở dữ liệu sẽ đáp ứng được tất cả yêu cầu của người dùng
và đảm bảo rằng những yêu cầu đó không chứa mâu thuẫn Với bước thiết kế này, người thiết kế cơ sở dữ liệu phải đặt ra các mục tiêu phải thực hiện, có thể tập trung vào việc đặc tả các tính chất của dữ liệu mà chưa cần quan tâm đến các chi tiết về lưu trữ
Bước 3 Thiết kế logic: Đưa ra được thuật toán để thực hiện các công việc
Thực hiện cài đặt cơ sở dữ liệu bằng một Hệ quản trị cơ sở dữ liệu cụ thể Kết quả của bước này là một lược đồ cơ sở dữ liệu dưới dạng mô hình dữ liệu thể hiện của
Hệ quản trị cơ sở dữ liệu
Bước 4 Thiết kế vật lý: Các đặc điểm về mặt vật lý của cơ sở dữ liệu phải
được đặc tả ở giai đoạn này; chúng bao gồm cấu trúc lưu trữ bên trong, kiểu tổ chức tệp cho cơ sở dữ liệu, cơ sở dữ liệu đặt ở đâu, quản lý các phụ thuộc vào Hệ quản trị
cơ sở dữ liệu (phụ thuộc phần mềm, phần cứng),
Trang 30Hình 1.3 Quá trình thiết kế một cơ sở dữ liệu
Trang 31Chương II - LÝ THUYẾT KẾT NỐI VÀ NỬA KẾT NỐI ỨNG DỤNG TRONG TỐI ƯU HOÁ CÂU HỎI
2.1 Lý thuyết kết nối và một số kết quả của lý thuyết kết nối
Trong lý thuyết thiết kế cơ sở dữ liệu quan hệ, để tránh dư thừa dữ liệu, tránh các dị thường cập nhật và tăng tốc độ trong quá trình truy vấn thông tin thì khi thiết
kế cơ sở dữ liệu thông thường ta tổ chức dữ liệu thành một tập các quan hệ có liên quan logic với nhau Nhưng khi thực hiện các yêu cầu của người sử dụng, các yêu cầu này thường liên quan đến nhiều thuộc tính trên nhiều quan hệ khác nhau Do đó khi thực hiện các truy vấn để trả lời các yêu cầu của người sử dụng bắt buộc chúng
ta phải kết nối các quan hệ liên quan đến câu hỏi lại để tìm ra kết quả Tuy nhiên vấn đề đặt ra là việc kết nối các quan hệ lại có cung cấp cho ta kết quả chính xác không? Có xuất hiện kết quả ngoại lai trong câu trả lời không? Trong phần này sẽ trình bày một số kết quả về lý thuyết kết nối trong mô hình quan hệ [11]
2.1.1 Kết nối không mất thông tin
Khái niệm về kết nối không mất thông tin (phân tách có kết nối không tổn thất) và thuật toán kiểm tra phép nối không mất thông tin đã được trình bày đầy đủ trong chương 1 (trang 16, 17) Sau đây là hai kết quả bổ sung của lý thuyết kết nối không mất thông tin [11]
Trang 32Trong ma trận trên ta thấy hàng R1 và hàng R2 giống nhau ở tất cả các cột tương ứng với các thuộc tính trên R1 R2 Như vậy theo thuật toán kiểm tra phép nối không mất thông tin, nếu ký hiệu b trên cột của thuộc tính A bị đổi thành a phải
có một phụ thuộc hàm XA (với X R1 R2) hay nói một cách khác ký hiệu b trên cột của thuộc tính A bị đổi thành a khi A(R1 R2)+ Do đó toàn bộ hàng R1trở thành a khi và chỉ khi R2 - R1 (R1 R2)+
Hệ quả 2.2 :
Nếu R1, ., Rn và S1, ., Sm mỗi tập hợp đều có một phép nối không mất
thông tin, R = n
i 1 i
R , S = m
i 1 i
S , và R S cũng là phép nối không mất thông tin, thì R1, , Rn, S1, , Sm có một phép nối không mất thông tin
Chứng minh:
+ Do R1, , Rn có một phép nối không mất thông tin Sử dụng thuật toán 1.4 (thuật toán kiểm tra phép nối không mất thông tin) ta sẽ tìm được một hàng chứa toàn a trong tất cả các cột của R (1)
+ Do S1, , Sm có một phép nối không mất thông tin Sử dụng thuật toán 1.4
ta sẽ tìm được một hàng chứa toàn a trong tất cả các cột của S (2)
+ Do R, S cũng có một phép nối không mất thông tin theo Hệ quả 2.1 ta có R
S S hoặc R S R (3)
Trang 33Từ (1), (2), (3) tiếp tục sử dụng thuật toán kiểm tra phép nối không mất thông tin với tập các lược đồ R1, ., Rn, S1, ., Sm sẽ tìm được hàng chứa toàn a trong tất cả các thuộc tính của R S Như vậy hệ quả 2.2 đã được chứng minh
2.1.2 Kết nối mất thông tin
Trong lý thuyết kết nối, một vấn đề được đặt ra là: Cho một tập R các lược
đồ quan hệ, hỏi có tồn tại hay không một tập con của nó mà trên tập con này không
có kết nối không mất thông tin (tức là có kết nối mất thông tin)
Chúng ta cần lưu ý rằng, đối với hai lược đồ quan hệ rời nhau (không có thuộc tính chung) thì khi kết nối hai lược đồ quan hệ này chắc chắn đó là kết nối có mất thông tin (còn gọi là tổn thất thông tin tầm thường) Trong thực tế thì không có
lý do gì để kết nối hai lược đồ quan hệ rời nhau, do đó trong phần này chúng ta chỉ quan tâm tới các tổn thất thông tin không tầm thường (tổn thất thông tin khi kết nối hai lược đồ có chung thuộc tính) Khi đó ta định nghĩa một tập con {R1, R2, , Rm} của R là không tầm thường nếu nó không tồn tại một phân hoạch thành hai tập có hợp rời nhau
Như vậy chắc chắn rằng, một điều kiện cho R để không có phép nối tổn thất thông tin không tầm thường là mọi cặp lược đồ không rời nhau của tập lược đồ quan hệ R phải thoả mãn hệ quả 2.1
Để nghiên cứu vấn đề này chúng ta dùng một đồ thị có hướng G(R) để biểu diễn tập lược đồ quan hệ R Mỗi đỉnh của đồ thị là một lược đồ quan hệ của R, có một cung đi từ đỉnh Q đến đỉnh S khi và chỉ khi Q S S Ta dùng ký hiệu Q
S để biểu thị một cung từ Q đến S ( sử dụng ký hiệu để phân biệt với ký hiệu dùng cho phụ thuộc hàm) Như vậy nếu có Q S thì Q S (bởi vì từ Q S ta
Trang 34Khi đó đồ thị G(R) được biểu diễn như sau:
Hình 2.1 Đồ thị biểu diễn lược đồ quan hệ R
Như vậy bất cứ một cặp nào của các lược đồ quan hệ không rời nhau mà không thoả mãn điều kiện của Hệ quả 2.1 (tức không có một cung nối giữa hai lược đồ) thì sẽ có một phép nối tổn thất thông tin Nhìn vào đồ thị hình 2.1 ta thấy phép nối PC và ZC là mất thông tin Do đó nếu trong đồ thị mà tồn tại một cặp đỉnh không rời nhau lại không nối được với nhau sẽ là điều kiện đủ để kết luận tập các lược đồ có kết nối mất thông tin
Phần tiếp theo sẽ trình bày một định lý xác định điều kiện cần và đủ để một tập các lược đồ quan hệ có kết nối mất thông tin hay không ?
Trang 35Giả sử X Y1, X Y2, , X Yn Khi đó tồn tại một thể hiện I={w, v} (một bảng gồm có 2 hàng) sao cho w, v giống nhau trên các thuộc tính của X và với mỗi i: 1 i n thì w, v khác nhau trên ít nhất một thuộc tính của Yi
Chứng minh:
Xét I={w, v} là một thể hiện sao cho w, v giống nhau trên các thuộc tính của
X+ và khác nhau trên tất cả các thuộc tính còn lại
Do X Yi, nên Yi \ X+ ≠ vì vậy với cách chọn trên w và v khác nhau ít nhất trên một thuộc tính của Yi, với i : 1 i n
Bây giờ ta chỉ ra rằng với cách chọn như trên sẽ không vi phạm các phụ thuộc hàm của lược đồ quan hệ
Xét phụ thuộc hàm bất kỳ Z U của lược đồ Nếu w và v giống nhau trên các thuộc tính của Z thì Z X+, do đó U X+ vì vậy w và v cũng giống nhau trên các thuộc tính của U Như vậy phụ thuộc hàm Z U thoả mãn và bổ đề được chứng minh
Định nghĩa: (Miền liên thông mạnh) [11]
Một miền liên thông mạnh (strongly connected region – SCR) của một đồ thị
là một đồ thị con trong đó luôn tồn tại đường đi có hướng từ mỗi đỉnh đến các đỉnh khác
Theo định nghĩa của đồ thị G(R) sẽ tồn tại cung đi từ Si đến Si + 1 với mọi 1
i < m, tức là SiSi + 1 Si + 1 với mọi 1 i < m Do đó Si Si + 1 với mọi 1 i <
m
Suy ra S1 S2 Sm
Trang 36Vậy Ri Rj (S1 = Ri, Sm = Rj) và bổ đề được chứng minh
Bổ đề 2.3
ChotậphợpRcác lược đồ thoả mãn điều kiện của hệ quả 2.1(tứclà vớimọi (R1, R2) là cặp lược đồ không rời nhau thì R1R2R1 hoặc R1R2R2) Giả sử rằng đồ thị G(R) có một miền liên thông mạnh {T1, T2, , Tn} và các đỉnh P, Q sao cho P T1, Q Tn và trong G(R) P Q, Q P và không có một cung nào nối
do đó T1 (T1 T2 Tn) X (2) + Do P X, ta có X P (3)
Từ (1), (2), (3) ta có (PT1)P Suy ra tồn tại một cung từ T1 đến P, điều này trái với giả thiết (không có một cung nào nối từ Ti bất kỳ đến P hoặc Q) Như vậy P không là tập con của X Lập luận tương tự ta cũng có Q không là tập con của
X
Nếu P và Q không rời nhau thì ( P Q) P hoặc ( P Q) Q, do đó trong đồ thị G(R) tồn tại một cung P Q hoặc Q P Điều này trái với giả thiết của bổ đề 2.3, vậy ( P Q ) =
Như vậy ta đã chứng minh được các kết quả sau:
- P không là tập con của X, suy ra (T1 T2 Tn) P
- Q không là tập con của X, suy ra (T1 T2 Tn) P
- ( P Q ) =
Áp dụng bổ đề 2.1 với P, Q, (T1 T2 Tn) ta có:
Trang 37Tồn tại một thể hiện I={w, v} (một bảng gồm có 2 hàng) sao cho w, v giống nhau trên các thuộc tính của (T1 T2 Tn) và khác nhau ít nhất trên một thuộc tính của P cũng như của Q
Do đó khi áp dụng phép chiếu lên P, Q, (T1T2 Tn) của thể hiện I ta có:
P (I) có 2 phần tử
Q (I) có 2 phần tử
)I(
) T
T (T1 2 n
Π chỉ có 1 phần tử
Nên: P (I) Q (I) (T T T )(I)
n 2 1
Π có 4 phần tử
Trong khi (P Q T T T )(I)
n 2 1
Π chỉ có 2 phần tử
Vậy P Q T1 T2 Tn là có mất thông tin
Đồ thị con của G(R) gồm các đỉnh P, Q và {T1, T2, , Tn} thoả mãn bổ đề 2.3 được gọi là đồ thị con bị cấm và được ký hiệu như sau :
Hình 2.2 Đồ thị con bị cấm Định lý 2.1 (Định lý cho điều kiện cần và đủ về kết nối không mất thông tin)
Cho R là một tập các lược đồ quan hệ R có một tập con có kết nối mất thông tin không tầm thường, khi và chỉ khi một trong hai điều kiện sau xảy ra:
(1) Tồn tại cặp lược đồ P, Q không rời nhau ( P Q ≠ ) sao cho PQ P
và PQ Q
{T1, T2, , Tn}
Trang 38(2) Tồn tại các lược đồ P, Q và T1, T2, , Tn trong R tạo thành một đồ thị con
bị cấm, tức là không có cung nào nối giữa P và Q, không có cung nào nối giữa Tibất kỳ với P hoặc Q và {T1, T2, , Tn} là một miền liên thông mạnh
- Điều kiện cần:
Bây giờ ta giả sử điều kiện (1) và (2) đều sai (tức không xảy ra), ta phải chứng minh R không có tập con nào có kết nối mất thông tin
Nhận xét: Nếu R có một tập con mà kết nối trên tập con này có tính chất mất
thông tin không tầm thường thì chúng ta có thể thay thế R bằng tập con này trong phát biểu của định lý 2.1 Do đó, không mất tính tổng quát ta xem như kết nối trên toàn bộ R là mất thông tin
Trước hết ta thấy rằng nếu điều kiện (1) không xảy ra, tức là với mọi cặp lược đồ P, Q không rời nhau thì P Q P hoặc P Q Q
Bây giờ ta sẽ vô hướng hoá đồ thị có hướng G(R) thành G’(R) như sau:
P nối với Q trong G’(R) khi và chỉ khi có cung đi từ P đến Q hoặc có cung đi
từ Q đến P trong G(R)
Ta sẽ chứng minh G’(R) liên thông Khi đó sẽ gọi G(R) là giả liên thông (tức
là G(R) liên thông trên đồ thị đã vô hướng hoá)
Giả sử G’(R) không liên thông, ta có thể chia tập đỉnh thành hai tập con không rỗng, rời nhau {P1, , Pn} và {Q1, , Qm} sao cho không có cạnh nối giữa Pi
và Qj với mọi i, j Mặt khác, do kết nối trên R là không tầm thường nên giữa hai tập {P1, , Pn} và {Q1, , Qm} phải có ít nhất một thuộc tính chung, tức là tồn tại Pi
Trang 39Qj ≠ với 1 i n, 1 j m Do điều kiện (1) không xảy ra, suy ra Pi sẽ nối với
Qj trong G’(R) điều này trái với giả sử trên Vậy G’(R) liên thông
Để tiếp tục chứng minh định lý ta cần phải chứng minh hai bổ đề sau:
Bổ đề 2.4
Trong mọi đồ thị có hướng giả liên thông và điều kiện (2) của định lý 2.1 không xảy ra thì với mọi đỉnh P, Q bất kỳ đều tồn tại đỉnh T sao cho có đường đi có hướng từ T đến P và từ T đến Q (T có thể trùng với P hoặc Q)
Ta chứng minh bổ đề này bằng phương pháp quy nạp theo độ dài của đường
đi giả ngắn nhất từ P đến Q (tức là đường đi ngắn nhất từ P đến Q trong đồ thị vô hướng G’(R))
+ Nếu độ dài đó bằng 1: do có cạnh PQ trong G’(R) nên trong G(R) phải có cung đi từ P đến Q hoặc từ Q đến P Nếu có cung đó đi từ P đến Q ta chọn T P, ngược lại ta chọn T Q
+ Giả sử bổ đề đúng với mọi đường đi giả ngắn nhất từ P đến Q có độ dài ngắn hơn i Ta phải chứng minh bổ đề đúng với đường đi giả ngắn nhất từ P đến Q
có độ dài bằng i, khi đó đường đi giả ngắn nhất từ P đến Q có độ dài i là : P, T1, ,
Ti-1, Q
Theo giả thiết quy nạp bổ đề đúng với mọi đường đi giả ngắn nhất từ P đến
Q có độ dài ngắn hơn i Khi đó ta có tồn tại đỉnh T sao cho có đường đi có hướng từ
T đến P và từ T đến Ti-1 Ta phải chứng minh tồn tại đỉnh T’ sao cho có đường đi có hướng từ T’ đến P và từ T’ đến Q
Trường hợp 1: Nếu tồn tại cung có hướng từ Ti-1 Q, ta chọn T’ T khi đó
ta có điều phải chứng minh
Trường hợp 2: Nếu tồn tại cung có hướng từ Q Ti-1 Gọi đường đi từ T đến Ti-1 là U1 Ur (trong đó T U1, Ti-1 Ur) ta có hình 2.3 mô phỏng quan
hệ giữa các đỉnh T, P, T1, , Ti-1, Q như sau:
T
U2
Ur-1
Trang 40
Hình 2.3 Mô phỏng quan hệ giữa các đỉnh
Trường hợp 2.1: Nếu tồn tại i (1 i r) sao cho Ui Q, ta chọn T’ T khi
đó ta có điều phải chứng minh
Trường hợp 2.2: Nếu không tồn tại i (1 i r) sao cho Ui Q
Nhận xét : Mọi j : 1 j r, tồn tại kj j, sao cho tồn tại cạnh Q
j k
U và
{
j
k
U , Uj+1, Uj } là một miền liên thông mạnh
Ta sẽ chứng minh nhận xét trên bằng phương pháp quy nạp lùi
+ Khi j = r, chọn kj = r (do có cung Q Ur )
+ Giả sử nhận xét đúng với j = + 1, tức là: k + 1 sao cho Q
1 k
U
và {
Xét miền liên thông mạnh {
1 k
U
, , U + 1} và các đỉnh U, Q: do điều kiện (2) của định lý được giả sử là không xảy ra, tức là trong R không tồn tại một đồ thị con bị cấm nên 1 trong 4 trường hợp sau phải xảy ra :
i Um Q với m nào đó : j < m k + 1
ii Um U với m nào đó : j < m k + 1
iii Q U
iv U Q