Mục đích của luận văn: - Tìm hiểu và xây dựng CSDL tích cực: cơ sở dữ liệu mà trong đó việc đảm bảo các ràng buộc toàn vẹn được thực hiện một cách tự động thông qua các quy tắc ECA.. Nộ
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGÔ THỊ THANH HOÀ
NGHIÊN CỨU, XÂY DỰNG
CƠ SỞ DỮ LIỆU TÍCH CỰC
LUẬN VĂN THẠC SĨ
Hà Nội,
Trang 3LỜI CAM ĐOAN Tôi xin cam đoan: Luận văn “Nghiên cứu, xây dựng Cơ sở dữ liệu tích cực” là
công trình nghiên cứu của riêng tôi
Các tài liệu, kết quả nêu trong luận văn là hoàn toàn trung thực, được trích dẫn
và phát triển từ các tài liệu, tạp chí, website…
Ngô Thị Thanh Hoà
Trang 4LỜI CẢM ƠN
ời đầu tiên em xin chân thành cảm ơn thầy giáo TS.Nguyễn Tuệ đã cho
em nhiều ý kiến đóng góp quý báu, tận tình hướng dẫn và giúp đỡ em về mặt kiến thức cũng như tài liệu để em có thể hoàn thành luận văn này.
Em xin gửi lời cảm ơn đến Ban Giám hiệu, các phòng ban, Khoa sau Đại học Trường Đại học Công nghệ đã tạo điều kiện cho em trong suốt khoá học
Em cũng xin bày tỏ lòng biết ơn sâu sắc đến các thầy giáo, cô giáo Trường Đại học Công nghệ – Đại học Quốc Gia Hà Nội , các thầy, cô giáo đã tham gia giảng dạy, hướng dẫn, chỉ bảo cho em trong suốt hai năm học qua
Và em xin gửi lời cảm ơn đến bạn bè, gia đình và các đồng nghiệp đã có những động viên, khuyến khích và hỗ trợ cần thiết để em hoàn thành luận văn này
Hà nội, ngày 10 tháng 5 năm 2011
Ngô Thị Thanh Hoà
L
Trang 5MỤC LỤC
LỜI CẢM ƠN 1
MỤC LỤC 2
BẢNG KÝ HIỆU CÁC CHỮ VIẾT TẮT 5
MỞ ĐẦU 6
Chương I 8
TỔNG QUAN VỀ CSDL QUAN HỆ VÀ CÁC RÀNG BUỘC TOÀN VẸN 8
1.1 TỔNG QUAN VỀ CSDL QUAN HỆ 8
1.1.1 Các khái niệm CSDL quan hệ 8
1.1.2 Chuẩn hóa 11
1.1.2.1 Các cấu trúc phụ thuộc 12
1.1.2.2 Các dạng chuẩn 15
1.1.3 Các quy tắc toàn vẹn 18
1.1.4 Các ngôn ngữ quan hệ dữ liệu 19
1.1.4.1 Đại số quan hệ 20
1.1.4.2 Các tính toán quan hệ 23
1.1.4.3 Tương tác với các ngôn ngữ lập trình 26
1.1.5 Hệ Quản trị CSDL quan hệ 26
1.2 CÁC RÀNG BUỘC TOÀN VẸN TRÊN CSDL QUAN HỆ 29
1.2.1 Kiểm soát toàn vẹn ngữ nghĩa tập trung 31
1.2.1.1 Khái niệm ràng buộc toàn vẹn 31
1.2.1.2 Các yếu tố của ràng buộc toàn vẹn 32
1.2.1.3 Phân loại ràng buộc toàn vẹn 35
1.2.2 Bắt tuân theo ràng buộc toàn vẹn 39
Chương II 43
CƠ SỞ DỮ LIỆU TÍCH CỰC 43
Trang 62.1 CƠ SỞ DỮ LIỆU TÍCH CỰC 43
2.1.1 Khái niệm cơ sở dữ liệu tích cực 43
2.1.2 Quy tắc ECA 43
2.1.2.1 Sự kiện (Event) 43
2.1.2.2 Điều kiện (Condition) 47
2.1.2.3 Hành động (Active) 48
2.2 MÔ HÌNH TỔNG QUÁT VÀ CÁC TRIGGER TRONG ORACLE 49
2.2.1 Mô hình tổng quát của CSDL tích cực: 49
2.2.2 Vấn đề thiết kế và cài đặt cho các cơ sở dữ liệu tích cực 55
2.2.3 Các ứng dụng tiềm năng đối với các cơ sở dữ liệu tích cực 57
Chương III 59
CÀI ĐẶT CÁC QUY TẮC ECA BẰNG NGÔN NGỮ SQL 59
3.1 GIỚI THIỆU TRIGGER TRONG SQL-SERVER 59
3.2 CSDL TRONG QUẢN LÝ BÁN HÀNG 59
3.2.1 Danh mục Cart: 60
2.2.2 Danh mục CartStatus: 60
2.2.3 Danh mục News: 60
2.2.4 Danh mục Parent Product: 61
2.2.5 Danh mục Product: 61
2.2.6 Danh mục ProductCart: 61
2.2.7 Danh mục Role: 62
2.2.8 Danh mục user: 62
3.3 QUY TẮC TẠO TRIGGER 62
3.4 CÁC TRIGGER TRONG CSDL 63
3.4.1 Trigger ngăn chặn việc xóa database trên Server 63
Trang 73.4.2 Trigger ngăn chặn insert vào bảng Product 64
3.4.3 Trigger ngăn chặn update (cập nhật) bảng Product 66
3.4.4 Trigger ngăn chặn xóa dữ liệu trong bảng 67
3.4.5 Trigger ngăn chặn tạo mới record trong bảng 68
3.4.6 Tạo mới trong bảng ( không vi phạm trigger của trigger 05) 69
3.4.7 Trigger ngăn chặn xóa bảng trong database 71
3.4.8 Ngăn chặn xóa trigger trong CSDL 71
3.4.9 Không cho phép tạo mới bảng trong CSDL 72
3.4.10 Không cho phép tạo mới trigger trong CSDL 73
KẾT LUẬN 75
TÀI LIỆU THAM KHẢO 76
Trang 8BẢNG KÝ HIỆU CÁC CHỮ VIẾT TẮT Stt Từ viết tắt Tiếng Anh Tiếng Việt
1 ABDS Active Database System Hệ thống cơ sở dữ liệu tích cực
3 DBMS Database Management System Hệ quản trị cơ sở dữ liệu
4 ECA Event-Condition-Active Sự kiện-Điều kiện-Hành động
5 HQTCSDL Hệ quản trị cơ sở dữ liệu
6 WFF Well-formal formular Một công thức xây dựng tốt
Trang 9MỞ ĐẦU
Theo truyền thống, các hệ thống cơ sở dữ liệu được xem như là các kho để lưu trữ thông tin cần thiết của một ứng dụng và chúng được truy cập hoặc bởi những người sử dụng chương trình hoặc các giao diện tương tác Tuy nhiên, các
hệ thống cơ sở dữ liệu đang được sử dụng cho một phạm vi các lĩnh vực liên quan đến việc xử lý các thông tin phức tạp, thậm chí số lượng lớn dữ liệu, hoặc đòi hòi sự thực hiện chính xác cao, trong đó môi trường nhiều thành phần theo quy ước chứng tỏ không được thỏa mãn Điều này dẫn đến xu hướng chung trong việc nghiên cứu cơ sở dữ liệu hướng chức năng được yêu cầu bởi một ứng dụng được hỗ trợ trong cơ sở dữ liệu, sinh ra các hệ thống cơ sở dữ liệu với nhiều khả năng tinh xảo để mô phỏng cả khía cạnh cấu trúc và hoạt động của một ứng dụng Trong số những lĩnh vực nhận được sự chú ý trong những năm gần đây với cái nhìn làm nổi bật sự hoạt động dễ dàng là lập trình cơ sở dữ liệu, các cơ sở dữ liệu tạm thời, các cơ sở dữ liệu không gian, các cơ sở dữ liệu đa phương tiện (truyền thông), các cơ sở dữ liệu suy diễn và các cơ sở dữ liệu tích cực Trong luận văn này, tôi tập trung vào vấn đề cơ sở dữ liệu tích cực
Hệ thống cơ sở dữ liệu tích cực (ADBS) hỗ trợ các cơ chế cho phép chúng
tự động phản ứng tới các sự kiện đang diễn ra bên trong hoặc bên ngoài chính hệ thống cơ sở dữ liệu đó Trong những năm gần đây, nỗ lực đáng kể được hướng tới việc nâng cao hiểu biết các hệ thống đó, và có nhiều ứng dụng được đề xuất
Sự tích cực ở mức độ cao này không mang lại sự phù hợp với phương pháp tiếp cận để tích hợp các chức năng của hoạt động với các hệ thống cơ sở dữ liệu quy ước, nhưng nó mang tới việc cải thiện tầm hiểu biết ngôn ngữ miêu tả cách thức hành động tích cực, các mô hình thực hiện và các kiến trúc Trong luận văn này trình bày các tính chất cơ bản của hệ cơ sở dữ liệu tích cực, mô tả tập hợp các hệ thống tiêu biểu trong một framework phổ biến, nghiên cứu tầm quan trọng của việc thiết kế các công cụ để phát triển các ứng dụng tích cực
Cơ sở dữ liệu tích cực hỗ trợ ứng dụng trên bằng cách di chuyển hành động phản ứng lại từ ứng dụng tới hệ quản trị cơ sở dữ liệu (DBMS) Các cơ sở dữ liệu tích cực theo cách đó có đủ khả năng giám sát và phản ứng lại những tình
Trang 10huống riêng biệt có liên quan đến ứng dụng Bản chất phản ứng lại là tập trung
và xử lý đúng cách đúng lúc
Mục đích của luận văn:
- Tìm hiểu và xây dựng CSDL tích cực: cơ sở dữ liệu mà trong đó việc đảm bảo các ràng buộc toàn vẹn được thực hiện một cách tự động thông qua các quy tắc ECA
- Cơ sở dữ liệu tích cực có ứng dụng tốt trong việc mở rộng các hệ thống cơ
sở dữ liệu, làm dễ dàng cho người sử dụng khai thác cơ sở dữ liệu
Nội dung của luận văn được trình bày trong 3 chương:
Chương 1: Tổng quan về cơ sở dữ liệu quan hệ và các loại ràng buộc trên CSDL quan hệ
Chương 2: Cơ sở lý thuyết của cơ sở dữ liệu tích cực, cụ thể là cấu trúc và việc xây dựng các quy tắc ECA
Chương 3: Cài đặt các quy tắc ECA bằng SQL
Trang 11Chương I
TỔNG QUAN VỀ CSDL QUAN HỆ VÀ CÁC RÀNG BUỘC TOÀN VẸN
1.1 TỔNG QUAN VỀ CSDL QUAN HỆ
Có nhiều lý do để chọn mô hình dữ liệu quan hệ như: Cơ sở toán học của
mô hình quan hệ là một ứng viên tốt cho xử lý lý thuyết
Mô hình quan hệ có thể được đặc trưng bởi ít nhất 3 tính chất mạnh mẽ:
a Cấu trúc dữ liệu của nó là đơn giản Chúng là các quan hệ, các bảng hai chiều mà các phần tử của chúng là các mục dữ liệu Điều này cho phép một mức độ độc lập cao đối với biểu diễn dữ liệu vật lý (tức là các tệp và các chỉ mục)
b Mô hình quan hệ cung cấp một cơ sở chắc chắn cho việc tương thích dữ liệu Việc thiết kế CSDL được giúp đỡ bằng quá trình chuẩn hóa loại bỏ các bất thường của dữ liệu Các trạng thái tương thích của CSDL cũng có thể được định nghĩa một cách đồng nhất và được duy trì thông qua các quy tắc toàn vẹn
c Mô hình CSDL cho phép thao tác quan hệ hướng tập hợp Tính chất này
đã dẫn đến sự phát triển mạnh mẽ của các ngôn ngữ phi thủ tục hoặc dựa trên lý thuyết tập hợp (đại số quan hệ) hoặc dựa trên logic (tính toán quan hệ)
1.1.1 Các khái niệm CSDL quan hệ
Một CSDL là một tập hợp dữ liệu có cấu trúc liên quan đến một vài hiện tượng của cuộc sống thực mà ta muốn mô hình hóa Một CSDL quan hệ là CSDL mà ở đó cấu trúc dữ liệu ở dạng bảng Một cách hình thức, một quan hệ được định nghĩa trên n tập hợp D1, D2, … , Dn (không nhất thiết phân biệt) là một tập hợp các n-bộ <d1, d2, …, dn> sao cho d1 D1, d2 D2, …., dn Dn
Ví dụ 1.1
Xét CSDL mô hình hóa công ty cơ khí Các thực thể được mô hình hóa là nhân viên (EMP) và dự án (PROJ) Với mỗi nhân viên chúng ta lưu trữ mã số nhân viên (ENO), tên (ENAME), danh hiệu trong công ty (TITLE), lương (SAL), mã số dự án mà nhân viên đang làm việc (PNO), trách nhiệm trong dự
Trang 12án (RESP) và khoảng thời gian làm việc (DUR) Một cách tương tự, với mỗi dự
án chúng ta lưu trữ mã số dự án (PNO), tên dự án (PNAME) và ngân sách của
dự án (BUDGET)
Các lược đồ quan hệ cho cơ sở dữ liệu này có thể được định nghĩa như sau: EMP(ENO, ENAME, TITLE, SAL, PNO, DUR)
PROJ(PNO, PNAME, BUGGET)
Trong lược đồ quan hệ EMP có bảy thuộc tính ENO, ENAME, TITLE, SAL, PNO, DUR Các giá trị của ENO lấy từ miền của tất cả các mã số nhân viên hợp lệ, gọi là D1 Các giá trị ENAME lấy từ miền giá tất cả các tên hợp lệ
D2, … Để ý rằng thuộc tính của mỗi quan hệ không được lấy giá trị từ miền khác Các thuộc tính khác nhau trong cùng một quan hệ trong một số quan hệ có thể được định nghĩa trên cùng một miền
Khóa (key) của một quan hệ là một tập con không rỗng bé nhất của các thuộc tính của nó sao cho giá trị tạo nên khóa xác định một cách duy nhất mỗi
bộ của một quan hệ Các thuộc tính tạo nên khóa được gọi là các thuộc tính chủ yếu Các tập hợp lớn hơn của một khóa thường được gọi là siêu khóa Như vậy, trong ví dụ trên, khóa của PROJ là PNO, khóa của EMP là (ENO, PNO) Mỗi quan hệ có ít nhất là một khóa Đôi khi một quan hệ có nhiều khả năng cho khóa Trong trường hợp như vậy, mỗi khả năng được xem là một khóa dự tuyển
và một trong các khóa dự tuyển được lựa chọn làm khóa chính Số các thuộc tính của quan hệ xác định cấp của nó, số các bộ giá trị của quan hệ xác định lực lượng của nó
Trong dạng bảng, CSDL ví dụ bao gồm hai bảng như được chỉ ra ở trong hình 1.1 Các cột của bảng tương ứng với các thuộc tính của quan hệ Nếu có các thông tin được nhập vào các bảng thì chúng tương ứng với các bộ giá trị Bảng rỗng chỉ cấu trúc bảng, bởi vì thông tin bên trong một bảng biến đổi theo thời gian, nhiều ví dụ có thể được tạo là từ một quan hệ Từ nay trở đi, thuật ngữ quan hệ dùng để chỉ một ví dụ của quan hệ Trong hình 1.2 là các ví dụ của quan
hệ được định nghĩa ở hình 1.1
Trang 13ENO ENAME TITLE SAL PNO RESP DUR
PNO PNAME BUDGET
áp dụng được Giá trị này thường được gọi là giá trị null Cần phân biệt giá trị null với giá trị 0 (zero) Giá trị 0 là giá trị được biết, giá trị null là giá trị không
PNO PNAME BUDGET
P1 Instrucmentation 150000
P2 Database Develop 135000
P3 CAD/CAM 250000
P4 maintenance 310000
ENO ENAME TITLE SAL PNO RESP DUR
E1 j.joe Elect.Eng 40000 P1 Manager 12
E2 M.Smith Analyst 34000 P1 Analyst 24
E2 M.Smith Analyst 34000 P2 Analyst 6
E3 A.Lee Mech.Eng 27000 P3 Consultal 10
E3 A.Lee Mech.Eng 27000 P4 Engineer 48
E4 J.Miller Programmer 24000 P2 Programmer Null
E5 B.Casey Syst Anal 34000 P2 Manager 24
E6 L.Chu Elect.Eng 40000 P4 Manager 48
E7 R.Davis Mech.Eng 27000 P3 Engineer 36
E8 J.Jone Syst.Anal 34000 P3 Manager 40
Trang 14được biết Việc hỗ trợ giá trị null là một tính chất quan trọng cần thiết để làm việc với các truy vấn có thể
1.1.2 Chuẩn hóa
“Chuẩn hóa là một quá trình thuận nghịch từng bước thay thế một tập hợp quan
hệ bằng các tập hợp tiếp theo, trong đó mỗi quan hệ có cấu trúc đơn giản hơn và chính quy hơn” Mục đích của chuẩn hóa là loại bỏ nhiều bất thường của một quan hệ để nhận được quan hệ “tốt hơn” Bốn vấn đề sau có thể tồn tại trong một lược đồ quan hệ:
a Bất thường lặp (repetition anormaly)
Một số thông tin có thể được lặp lại một cách không cần thiết Ví dụ, xét quan hệ EMP ở hình 2.2 ENAME, TITLE, SAL của một nhân viên được lặp với mỗi dự án mà nhân viên này phục vụ trên đó Điều này dẫn đến một sự lãng phí
bộ nhớ và trái với tinh thần của CSDL
b Bất thường cập nhật (update anormaly)
Như là hệ quả của việc lặp dữ liệu, việc thực hiện cập nhật có thể gây rắc rối phiền hà Ví dụ, lương của một nhân viên thay đổi, nhiều bộ giá trị phải được cập nhật để phản ánh sự thay đổi này
c Bất thường chèn (Insertion anormaly)
Có thể không có khả năng thêm mới vào cơ sở dữ liệu Ví dụ, khi một nhân viên mới vào công ty chúng ta không thể thêm thông tin cá nhân (ENAME, TITLE, SAL) vào quan hệ EMP nếu nhân viên đó chưa làm cho dự án nào Đó
là vì khóa của EMP bao hàm thuộc tính PNO và giá trị null không phải là thành phần của một khóa
d Bất thường loại bỏ (Deletion anormaly)
Đó là sự trái ngược của bất thường chèn Nếu một nhân viên chỉ làm việc trên một dự án và dự án đó đã kết thúc thì không thể loại bỏ thông tin dự án ra khỏi EMP Làm như vậy dẫn đến việc loại bỏ bộ giá trị duy nhất về nhân viên, dẫn đến việc mất thông tin cá nhân mà chúng ta muốn lưu giữ
Sự chuẩn hóa chuyển đổi các lược đồ quan hệ thành các lược đồ không có những vấn đề này Phương pháp phổ biến nhất để chuẩn hóa một lược đồ quan
Trang 15hệ là phương pháp tách (decomposition), trong đó chúng ta bắt đầu với một quan
hệ đơn, gọi là quan hệ phổ quát (universal relation), quan hệ này chứa tất cả các thuộc tính (và có thể bất thường) và làm giảm nó liên tiếp Tại mỗi lần lặp, một quan hệ được chia thành hai hoặc nhiều quan hệ ở dạng chuẩn cao hơn Một quan hệ được gọi là ở một dạng chuẩn nếu nó thỏa mãn các điều kiện liên kết với dạng chuẩn đó Đầu tiên Codd đã định nghĩa các dạng chuẩn thứ nhất (1NF), thứ hai (2NF) và thứ ba (3NF) Boyce và Codd sau đó định nghĩa một phiên bản sửa đổi của dạng chuẩn 3, phiên bản này thường được gọi là dạng chuẩn Boyce-Codd (BCNF) Điều đó được tiếp tục bằng định nghĩa các dạng chuẩn thứ tư (4NF, Fagin, 1977) và dạng chuẩn thứ năm (5NF, Fagin, 1979)
Có một mối liên hệ phân cấp giữa các dạng chuẩn này Một quan hệ được chuẩn hóa là ở 1NF Một số quan hệ ở 1NF cũng ở 2NF, một số trong các quan
hệ đó là ở 3NF, … Các dạng chuẩn cao hơn có tính chất tốt hơn các dạng khác
về bốn bất thường được nêu ở trên
Một trong các yêu cầu của quá trình chuẩn hóa là sự phân tách không mất mát Điều đó có nghĩa là sự thay thế một quan hệ bằng nhiều quan hệ khác sẽ không dẫn đến việc mất thông tin Nếu có thể nối các quan hệ được phân tách để nhận lại được quan hệ ban đầu thì quá trình đó gọi là tách không mất mát
Một cách trực quan, phép toán nối là phép toán lấy hai quan hệ và nối mỗi bộ của quan hệ thứ hai vào những bộ nào của quan hệ thứ nhất thỏa mãn một điều kiện được chỉ rõ Ví dụ, điều kiện có thể là giá trị của một thuộc tính của quan
hệ thứ nhất phải bằng giá trị của một thuộc tính của quan hệ thứ hai
Một đòi hỏi khác của quá trình chuẩn hóa là bảo toàn phụ thuộc Một phép tách được gọi là bảo toàn phụ thuộc nếu bao đóng của hợp của phụ thuộc trong các quan hệ được tách là tương đương với bao đóng của quan hệ nguyên thủy (theo một tập các quy tắc suy diễn)
1.1.2.1 Các cấu trúc phụ thuộc
Các dạng chuẩn dựa trên một số các cấu trúc phụ thuộc BCNF và các dạng chuẩn thấp hơn dựa trên phụ thuộc hàm 4NF dựa trên phụ thuộc đa trị và 5NF dựa trên phụ thuộc nối-chiếu
Trang 16Chúng ta sẽ định nghĩa phụ thuộc gồm:
a Phụ thuộc hàm
Giả sử R là một quan hệ xác định trên tập thuộc tính A={A1, A2, …, An} và giả sử X A và Y A Nếu với mỗi giá trị của X trong R chỉ kết hợp được với một giá trị duy nhất của Y thì ta nói rằng “X xác định hàm Y” hoặc “Y phụ thuộc hàm vào X” Ký hiệu là X→Y Khóa của một quan hệ xác định hàm các thuộc tính không khóa của cùng quan hệ
Ví dụ 1.2
Trong quan hệ PROJ ở hình 1.2 phụ thuộc hàm có hiệu lực là
PNO → (PNAME, BUDGET) (1) Trong quan hệ EMP chúng ta có:
(ENO, PNO) → (ENAME, TITLE, SAL, RES, DUR) (2) Phụ thuộc hàm này không phải là phụ thuộc hàm duy nhất trong EMP Nếu mỗi nhân viên được cấp một mã số nhân viên duy nhất, chúng ta có thể viết
ENO → (ENAME, TITLE, SAL) (ENO, PNO) → (RESP, DUR)
Cũng hợp lý khi nói rằng lương của một chức danh cho trước là cố định Điều đó cho sinh ra phụ thuộc hàm
TITLE → SAL
Để ý rằng một số các thuộc tính trên vế phải của phụ thuộc hàm thứ hai (2) là phụ thuộc hàm vào một tập con của tập các thuộc tính ở vế phải của cùng phụ thuộc hàm đó Các thuộc tính như (ENAME, TITLE, SAL) được gọi là phụ thuộc hàm bộ phận vào (ENO, PNO), các thuộc tính (RESP, DUR) được nói là phụ thuộc hàm đầy đủ vào (ENO, PNO)
b Phụ thuộc giá trị
Giả sử R là một quan hệ được định nghĩa trên tập các thuộc tính A={A1, A2,
…, An} và giả sử X → A, Y → A, Z → A Nếu mỗi giá trị Z trong R chỉ có một cặp giá trị (X, Y) và giá trị của Z chỉ phụ thuộc vào giá trị của X thì ta nói rằng
“X xác định đa trị Z” hoặc Z đa phụ thuộc vào X” Kiểu phụ thuộc này gọi là phụ thuộc đa trị (MVD) và được ký hiệu X →→Z
Trang 17Một cách trực quan, một phụ thuộc hàm đa trị diễn đạt một tình huống trong
đó giá trị của một thuộc tính (hoặc một tập thuộc tính) xác định một tập hợp giá trị của một thuộc tính (hoặc một tập thuộc tính) khác Chú ý rằng mỗi phụ thuộc hàm cũng là một phụ thuộc đa trị nhưng điều ngược lại là không đúng
Ví dụ 1.3
Trở lại ví dụ Giả sử rằng chúng ta muốn lưu trữ thông tin về một tập hợp các nhân viên mà một tập hợp các dự án mà công ty thực hiện cũng như các văn phòng nhánh mà ở đó các dự án này có thể được thực hiện Điều đó có thể làm bằng việc định nghĩa quan hệ
SKILL (ENO, PNO, PLACE) Giả sử rằng mỗi nhân viên có thể làm việc trên mọi dự án, mỗi nhân viên sẵn lòng làm việc tại bất kỳ văn phòng nhánh nào và mỗi dự án có thể được thực hiện tại bất kỳ văn phòng nhánh nào Một ví dụ quan hệ thỏa mãn các điều kiện này được minh họa ở hình 2.3
Trang 18Để ý rằng không có phụ thuộc hàm nào trong quan hệ SKILL: quan hệ chỉ bao gồm các thuộc tính khóa Có hai phụ thuộc đa trị:
ENO →→ PNO và ENO →→ PLACE
c Phụ thuộc nối-chiếu
Giả sử R là một quan hệ được định nghĩa trên tập hợp các thuộc tính A={A1, A2, …, An} và X A, Y A, Z A Khi đó nếu R là bằng nửa nối của X, Y,
Z thì (X, Y, Z) tạo nên một phụ thuộc nối-chiếu
Có một tập hợp các quy tắc suy diễn dựa trên một tập hợp các tiên đề - gọi là các tiên đề Amstrong (1974) cho phép các thao tác đại số của các phụ thuộc hàm Chúng cho khả năng phát hiện phủ tối thiểu của tập phụ thuộc hàm là một tập hợp phụ thuộc hàm tối thiểu mà từ đó có thể tạo ra tất cả các phụ thuộc hàm khác Cho trước một phủ tối thiểu các phụ thuộc hàm và một tập hợp các thuộc tính, một thuật toán có thể được phát triển để tạo ra một lược đồ quan hệ ở các dạng chuẩn cao hơn
1.1.2.2 Các dạng chuẩn
Dạng chuẩn thứ nhất (1NF) tuyên bố một cách đơn giản rằng các thuộc tính của một quan hệ chỉ chứa các giá trị nguyên tử Nói cách khác, các quan hệ phải phẳng, không có các nhóm lặp Các quan hệ EMP và PROJ trong hình 1.2 thỏa mãn điều kiện này vì vậy cả hai là ở 1NF
Các quan hệ ở 1NF vẫn còn cho phép các bất thường được đưa ra ở trên Để loại bỏ một số các bất thường này chúng ta phải được tách thành các quan hệ ở các dạng chuẩn cao hơn Chúng ta không quan tâm đặc biệt đến dạng chuẩn thứ hai vì nó chỉ còn có tầm quan trọng lịch sử do có các thuật toán chuẩn hóa trực tiếp một quan hệ 1NF thành dạng chuẩn thứ ba (3NF) hoặc cao hơn
Một quan hệ là ở 3NF nếu với mỗi phụ thuộc hàm X → Y, trong đó Y là không ở trong X, hoặc X là một siêu khóa của R, hoặc Y là một thuộc tính cơ bản Có các thuộc tính cung cấp một phân tách bảo toàn phụ thuộc và không mất mát của một quan hệ 1NF thành quan hệ 3NF
Ví dụ 1.4
Trang 19Quan hệ PROJ trong ví dụ đang xét là ở 3NF nhưng quan hệ EMP thì không,
do phụ thuộc hàm TITLE → SAL Phụ thuộc hàm này vi phạm 3NF vì TITLE không phải là siêu khóa và SAL không phải là thuộc tính cơ bản
Vấn đề với EMP là như sau: Nếu chúng ta muốn chèn vào một sự kiện rằng một chức danh cho trước nhận một lương cụ thể thì không làm được trừ phi có ít nhất là một nhân viên có chức danh ấy (các tranh luận tương tự có thể làm cho các bất thường cập nhật và xóa) Vì vậy chúng ta phải tách EMP thành hai quan hệ:
EMP (ENO, ENAME, TITLE, PNO, RESP, DUR)
PAY (TITLE, SAL)
Ta có thể thấy rằng PAY là ở 3NF nhưng EMP thì không bởi vì phụ thuộc hàm ENO → (ENAME, TITLE), ENO không phải là siêu khóa và TITLE, ENAME không phải là các thuộc tính cơ bản Vì vậy, EMP cần được phân tích tiếp thành
EMP (ENO, ENAME, TITLE) ASG (ENO, PNO, RESP, DUR)
hệ PAY, PROJ, ASG là ở BCNF
Có khả năng phân tách một quan hệ 1NF một cách trực tiếp thành một tập hợp quan hệ ở BCNF Các thuật toán này được đảm bảo sinh ra phép tách không mất mát nhưng chúng không đảm bảo bảo toàn phụ thuộc
Một quan hệ R là ở dạng chuẩn thứ tư (4NF) nếu với mỗi phụ thuộc đa trị kiểu X →→ Y trong R, X cũng xác định hàm tất cả các thuộc tính của R Như vậy nếu một quan hệ là ở BCNF và mọi phụ thuộc đa trị cũng là phụ thuộc hàm thì quan hệ là ở 4NF Điều quan trọng là ở chỗ một quan hệ 4NF hoặc là không chứa một phụ thuộc đa trị thực thụ (tức là mỗi phụ thuộc đa trị cũng là phụ thuộc
Trang 20hàm) hoặc có đúng một phụ thuộc đa trị được trình bày trong các thuộc tính và không có phụ thuộc nào khác
Ví dụ 1.5
Để ý rằng các quan hệ EMP, PAY, PROJ, ASG là ở 4NF bởi vì không có phụ thuộc đa trị nào định nghĩa trên chúng Tuy nhiên quan hệ SKILL là không ở 4NF Để thỏa mãn các đòi hỏi nó cần được phân tách thành hai quan hệ:
EP (ENO, PNO)
EL (ENO, PLACE)
Ta có thể để ý rằng trong tất cả các dạng chuẩn ở trên, sự phân tách là thành hai quan hệ Dạng chuẩn thứ năm (5NF) xử lý các tình huống mà ở đó các phân tách n-đường (n>2) có thể cần thiết
Một quan hệ là ở 5NF (còn được gọi là dạng chuẩn nối-chiếu PJNF) nếu mỗi phụ thuộc nối được định nghĩa cho quan hệ là được bao hàm bởi các khóa dự tuyển của R Với mỗi phụ thuộc hàm nối được bao hàm bởi một khóa dự tuyển của quan hệ, tập con (hoặc các phép chiếu) X, Y, Z phải được làm phù hợp với khóa dự tuyển
Ví dụ 1.6
Với quan hệ EMP chúng ta có thể định nghĩa phụ thuộc nối
*( (ENO, ENAME), (ENO, TITLE) )
Nó được bao hàm bởi khoá dự tuyển ENO (nó cũng đã trở thành khóa chính)
Dễ dàng kiểm tra rằng các quan hệ EMP, PAY, PROJ, ASG là ở 5NF Như vậy, các lược đồ mà chúng ta kết thúc sau phân tích là như sau:
EMP (ENO, ENAME, TITLE)
PAY (TITLE, SAL)
PROJ (PNO, PNAME, BUDGET)
ASG (ENO, PNO, RESP, DUR)
Tất cả các dạng chuẩn trình bày ở trên là không mất mát Một kết quả quan trọng là một quan hệ 5NF không thể tách thêm mà không bị mất thông tin (Fagin, 1977) Chúng ta có CSDL:
Trang 21Các quy tắc toàn vẹn là các ràng buộc xác định các trạng thái tương thích của
cơ sở dữ liệu Các ràng buộc toàn vẹn có thể là cấu trúc hay hành vi Các ràng buộc cấu trúc là vốn có đối với mô hình dữ liệu theo nghĩa là chúng bắt giữ thông tin trên các liên kết dữ liệu không thể được mô hình hóa một cách trực tiếp Các ràng buộc hành vi cho phép sự bắt giữ ngữ nghĩa của các ứng dụng Các sự phụ thuộc được định nghĩa trong phần trước là các ràng buộc hành vi Việc duy trì các ràng buộc toàn vẹn nói chung là đắt trong phạm vi tài nguyên
hệ thống Một cách lý tưởng, chúng phải được kiểm soát tại mỗi cập nhật CSDL bởi vì các cập nhật có thể dẫn đến các trạng thái CSDL không tương thích
ENO PNO RESP DUR E1 P1 Manager 12 E2 P1 Analyst 24 E2 P2 Analyst 6 E3 P3 Concultant 10 E3 P4 Engineer 48 E4 P2 Programmer 18 E5 P2 Manager 24 E6 P4 Manager 48 E7 P3 Engineer 36 E8 P3 Manager 40
PNO PNAME BUDGET
PROJ
Trang 22Theo Codd (Codd, 1982), hai ràng buộc cấu trúc tối thiểu của mô hình quan
hệ là ràng buộc toàn vẹn thực thể và quy tắc toàn vẹn tham chiếu Theo định nghĩa, mỗi quan hệ có một khóa chính Ràng buộc thực thể tuyên bố rằng mỗi thuộc tính của khóa là xác định (non null) Trong ví dụ 1, thuộc tính PNO của quan hệ PROJ và các thuộc tính (ENO, PNO) của quan hệ EMP không thể có các giá trị không xác định Ràng buộc này là cần thiết để áp buộc sự kiện các khóa là duy nhất
Ràng buộc tham chiếu (Date, 1983) là có lợi cho việc giữ các liên kết giữa các đối tượng mà mô hình quan hệ không thể biểu diễn Chúng ta sẽ sử dụng toàn vẹn tham chiếu khi thảo luận về thiết kế cơ sở dữ liệu phân tán
Ràng buộc toàn vẹn bao gồm hai quan hệ và áp buộc ràng buộc là một nhóm thuộc tính trong một quan hệ là khóa của quan hệ kia Trong ví dụ 1 có thể có một ràng buộc tham chiếu giữa các quan hệ PROJ và EMP trên thuôc tính PNO Quy tắc này quy định rằng mỗi nhân viên thuộc về ít nhất là một dự án đang có Nói cách khác, tập hợp các giá trị của PNO trong quan hệ EMP là được bao hàm trong quan hệ PROJ Như vậy sẽ không có các nhân viên thuộc về các dự án không có trong quan hệ PROJ
1.1.4 Các ngôn ngữ quan hệ dữ liệu
Các ngôn ngữ thao tác dữ liệu được phát triển cho mô hình quan hệ (thường được gọi là ngôn ngữ truy vấn) rơi vào hai nhóm cơ bản: ngôn ngữ quan hệ dựa trên đại số và ngôn ngữ quan hệ dựa trên tính toán Sự khác nhau giữa chúng là dựa trên việc truy vấn của user được diễn đạt như thế nào
Đại số quan hệ là ngôn ngữ thủ tục Bằng cách sử dụng các phép toán bậc cao, trong truy vấn người sử dụng phải chỉ rõ kết quả sẽ nhận được như thế nào Các tính toán quan hệ là phi thủ tục, trong truy vấn người sử dụng chỉ rõ các quan hệ sẽ nhận được trong kết quả Cả hai ngôn ngữ này đều được Codd (Codd, 1970) đề nghị, ông ta cũng chứng minh rằng chúng là tương đương theo nghĩa sức mạnh diễn đạt (Codd, 1972)
Đại số quan hệ được sử dụng nhiều hơn các tính toán quan hệ trong nghiên cứu của các vấn đề CSDL phân tán bởi vì nó ở mức thấp hơn và tương ứng trực
Trang 23tiếp hơn với các chương trình được trao đổi trên một mạng Điều này chủ yếu là tính toán quan hệ có thể được chuyển đổi thành đại số quan hệ Để cho đầy đủ,
ta trình bày cả hai
1.1.4.1 Đại số quan hệ
Đại số quan hệ bao gồm một tập hợp các phép toán thao tác trên các quan hệ
Nó có nguồn gốc từ lý thuyết tập hợp (các quan hệ tương ứng với các tập hợp) Mỗi phép toán lấy một hoặc hai quan hệ làm toán hạng và tạo ra một quan hệ kết quả Kết quả đó có thể lại là toán hạng của phép toán khác Các phép toán này cho phép truy vấn và cập nhật cơ sở dữ liệu
Các phép toán đại số
Có 5 phép toán đại số quan hệ và 5 phép toán khác có thể được định nghĩa theo các phép toán này Các phép toán cơ bản là phép chọn, phép chiếu, phép hợp, phép trừ quan hệ và tích Đecac Hai phép toán đầu là hai phép toán một ngôi và ba phép toán sau là các phép toán hai ngôi Các phép toán thêm vào có thể được định nghĩa theo các phép toán cơ bản này là phép giao, nối θ, nối tự nhiên, nửa nối và phép chia Trên thực tế, đại số quan hệ được mở rộng với các phép toán để nhóm hoặc sắp xếp các quan hệ và để thực hiện các hàm số học hoặc hàm nhóm
Các toán hạng của một số các phép toán hai ngôi phải tương thích hợp Hai quan hệ R và S là tương thích hợp khi và chỉ khi chúng cùng cấp và thuộc tính thứ i của mỗi quan hệ là được định nghĩa trên cùng một miền Dĩ nhiên, phần thứ hai của định nghĩa là đúng khi và chỉ khi các thuộc tính của quan hệ được xác định bằng các vị trí tương quan của chúng ở bên trong quan hệ chứ không phải bằng tên của chúng Nếu thứ tự tương quan của các thuộc tính là không quan trọng thì cần phải thay phần thứ hai của định nghĩa bằng câu: các thuộc tính tương ứng của hai quan hệ phải được định nghĩa trên cùng một miền
Phép chọn
Phép chọn tạo ra một tập con ngang của một quan hệ cho trước Tập hợp con bao gồm tất cả các bộ thỏa mãn một công thức (điều kiện) Phép chọn từ một quan hệ R được ký hiệu là:
Trang 24σ F (R)
Phép chiếu
Phép chiếu tạo ra một tập hợp con dọc của một quan hệ Quan hệ kết quả chỉ chứa các thuộc tính của quan hệ nguyên thủy nào mà trên đó phép chiếu được thực hiện Như vậy, cấp của một quan hệ kết quả là nhỏ hơn hoặc bằng cấp của quan hệ nguyên thủy
Phép tính của quan hệ R trên các thuộc tính A, B được ký hiệu là:
A,B (R)
Để ý rằng kết quả của một phép chiếu có thể chứa các bộ giống nhau Trong trường hợp này, các bộ lặp lại có thể bị xóa khỏi quan hệ kết quả Có thể chỉ rõ phép chiếu có hoặc không có loại bỏ lặp
Phép hợp
Hợp của hai quan hệ R và S, ký hiệu R S, là tập hợp của tất cả các bộ trong
R, hoặc trong S, hoặc trong cả hai Điều kiện là R và S phải tương thích hợp Cũng như trong trường hợp của phép chiếu, các bộ lặp cũng thường được loại
bỏ Phép hợp có thể được sử dụng để chèn các bộ mới vào một quan hệ đang tồn tại, trong đó các bộ mới này tạo nên một trong các quan hệ toán hạng
Phép hiệu tập hợp
Hiệu tập hợp của hai quan hệ R và S, ký hiệu là R – S, là một tập hợp tất cả các bộ ở trong R nhưng không ở trong S Trong trường hợp này R và S cũng phải tương thích hợp Phép toán này không đối xứng, nghĩa là R – S S – R Phép toán này cho phép loại bỏ các bộ ra khỏi một quan hệ Cùng với phép hợp chúng ta có thể thực hiện các thay đổi các bộ bằng cách loại bỏ sau đó bằng các phép chèn
Tích Đề-các
Tích Đề-các của hai quan hệ R cấp k1 và S cấp k2 là một tập hợp của các (k1+k2)-bộ, trong đó mỗi bộ kết quả là một kết nối của một bộ của R với mỗi bộ của S, với tất cả các bộ của R và S
Tích Đề-các của R và S được ký hiệu là R x S
Trang 25Có khả năng là hai quan hệ có thể có các thuộc tính trùng tên Trong trường hợp này các tên thuộc tính được bắt đầu bằng tên của quan hệ để duy trì tính duy nhất của các tên thuộc tính bên trong một quan hệ
Phép giao
Phép giao của hai quan hệ R và S, ký hiệu R S, bao gồm tập hợp tất cả các
bộ vừa ở trong R vừa ở trong S Theo các phép toán cơ bản, nó có thể được biểu diễn là
Phép nối của hai quan hệ tương đương với việc thực hiện một phép chọn, sử dụng vị từ nối như là công thức chọn trên tích Đecac của hai quan hệ toán hạng Như vậy
R F S = σ F(R x S) Trong sự tương đương ở trên chúng ta cần chú ý rằng nếu F bao hàm cả hai thuộc tính của quan hệ mà chúng là chung cho cả hai thì một phép chiếu là cần thiết để đảm
Nối tự nhiên
Một nối tự nhiên là một nối bằng của hai quan hệ trên một thuộc tính được chỉ ra, cụ thể hơn trên các thuộc tính có miền xác định như nhau Có một sự khác nhau là thông thường các thuộc tính mà trên nó phép nối tự nhiên được thực hiện chỉ xuất hiện một làn trong kết quả Một nối tự nhiên được thể hiện như một phép nối không có công thức:
R A S
Trang 26Trong đó A là thuộc tính chung của R và S Chú ý rằng các thuộc tính nối
tự nhiên có thể có các tên khác nhau trong hai quan hệ Trong trường hợp đó, cái cần đòi hỏi là chúng có chung một miền giá trị Trong trường hợp này phép nối được ký hiệu là R A B S, trong đó A là thuộc tính nối của R, B là của S
Phép nửa nối
Phép nửa nối của quan hệ R được xác định trên tập thuộc tính A và quan hệ
S được xác định trên tập thuộc tính B là tập con của các thuộc tính của R tham gia vào phép nối của R và S Nó được ký hiệu là:
R F S = A(R F S)
Ưu điểm của phép nửa nối là nó giảm số các bộ cần phải thực hiện để tạo thành phép nối Trong các hệ CSDL tập trung, điều đó là quan trọng bởi vì nó thường dẫn đến việc sử dụng bộ nhớ tốt hơn, làm giảm các truy cập bộ nhớ phụ Điều đó còn quan trọng hơn trong CSDL phân tán vì nó thường làm giảm số dữ liệu cần truyền giữa các trạm để thực hiện một truy vấn Chú ý rằng phép nửa nối là không đối xứng, nghĩa là R F S S F R
Phép chia
Phép chia của quan hệ R cấp r với quan hệ S cấp s (r > s và s 0) là một tập các (r-s)-bộ t sao cho với mọi bộ u trong S, bộ tu trong R Phép chia được ký hiệu là R S và được biểu diễn qua các phép toán cơ bản như sau:
R S = A(R) – A(( A(R x S) – R)
Trong đó A là tập các thuộc tính của R không có trong S
Các chương trình đại số quan hệ
Vì tất cả các phép toán lấy các quan hệ là dữ liệu vào (input) và tạo ra các quan hệ như là dữ liệu ra (output), chúng ta có thể lồng các phép toán quan hệ bằng cách sử dụng dấu ngoặc và biểu diễn các chương trình đại số quan hệ Các dấu ngoặc chỉ thứ tự của việc thực hiện
1.1.4.2 Các tính toán quan hệ
Trong các quan hệ dựa trên tính toán quan hệ, thay vì chỉ rõ làm thế nào để nhận được kết quả, người ta chỉ ra kết quả là gì bằng cách biểu diễn mối liên kết
Trang 27được đề nghị để đảm nhận kết quả Các ngôn ngữ tính toán quan hệ rơi vào hai nhóm: tính toán quan hệ bộ và tính toán quan hệ miền Sự khác nhau của hai nhóm là theo thuật ngữ của biến nguyên thủy được sử dụng trong việc diễn đạt truy vấn
Các ngôn ngữ tính toán quan hệ có một cơ sở lý thuyết vững chắc bởi vì chúng dựa trên logic vị từ bậc nhất Ngữ nghĩa được cho trước đối với các công thức bằng cách thể hiện chúng như là các khẳng định trên CSDL Một CSDL quan hệ có thể được xem như một tập hợp các bộ hoặc một tập hợp các miền Tính toán quan hệ bộ thể hiện một biến trong một công thức như là một bộ của quan hệ trong khi đó tính toán quan hệ miền thể hiện một biến như giá trị của một miền
Các tính toán quan hệ bộ (tuple relational calculus)
Biến nguyên thủy được sử dụng trong các tính toán quan hệ là một biến bộ,
nó chỉ rõ một bộ của quan hệ Nói cách khác, nó biến thiên trên các bộ của quan
hệ Các tính toán bộ là các tính toán quan hệ ban đầu được Codd phát triển (Codd-1970)
Trong tính toán quan hệ bộ, các truy vấn được chỉ ra dưới dạng:
{ t | F(t) } Trong đó: t là một biến bộ, F là một công thức xây dựng tốt (wff) Các công thức nguyên tử thuộc hai dạng:
a Biểu thức thành viên của bộ: nếu t là một biến bộ biến thiên trên các bộ của quan hệ R thì biểu thức “bộ t thuộc quan hệ R” là một công thức nguyên tử và được diễn đạt là R.t hoặc R(t)
b Điều kiện Các điều kiện được định nghĩa như sau:
(a) s[A] θ t[B], trong đó s và t là các biến bộ, A và B là các thành phần của s và t tương ứng, θ là một trong các so sánh số học <, >, =, , Điều kiện này chỉ rõ rằng thành phần A của s đứng trong quan hệ θ đối với thành phần B của t Ví dụ, s[SAL] > t[SAL]
(b) s[A] θ c, trong đó s, A và θ được định nghĩa như trên và c là một hằng Ví dụ, s[NAME] = “Smith”
Trang 28Để ý rằng A được định nghĩa như một thành phần của biến bộ s Bởi vì biến thiên của s là một quan hệ cụ thể, chẳng hạn S nó bị bắt buộc là thành phần A của s tương ứng với thuộc tính A của s
Có nhiều ngôn ngữ dựa trên tính toán bộ, ngôn ngữ phổ biến nhất là SQL SQL bây giờ là một chuẩn quốc tế với các phiên bản công bố vào năm 1986 (SQL 1), 1989 (sửa đổi SQL 1) và 1992 (SQL 2) Một phiên bản mới bao gồm các mở rộng ngôn ngữ hướng đối tượng đang được công bố từng phần từ 1998 SQL cung cấp một cách tiếp cận không đổi đến thao tác dữ liệu (trích rút, cập nhật), định nghĩa dữ liệu (thao tác lược đồ) và kiểm soát (quyền, tính toàn vẹn,
Ví dụ 1.8: Truy vấn cập nhật
UPDATE PAY SET SAL = 25000 WHERE P.TITLE = “Programmer”;
Các tính toán quan hệ trên miền
Sự khác nhau cơ bản giữa ngôn ngữ quan hệ bộ và ngôn ngữ quan hệ miền là việc sử dụng biến miền trong ngôn ngữ quan hệ miền Một biến miền biến thiên trên các giá trị trong một miền và chỉ rõ một thành phần của một bộ Nói cách khác, miền biến thiên của một biến miền bao gồm các miền mà trên đó quan hệ được định nghĩa Các wff được thể hiện theo hoàn cảnh đó Các truy vấn được chỉ ra dưới dạng sau đây:
x1, x2, …, xn | F(x1, x2,…, xn) Trong đó: F là một wff và x1, x2, …, xn là các biến tự do
Trang 29Thành công của ngôn ngữ tính toán quan hệ miền chủ yếu là ngôn ngữ QBE (Zloof 1977), đó là một ứng dụng hiển thị của tính toán miền Các truy vấn trích rút và cập nhật tương ứng với các truy vấn SQL ở trên được viết trong QBE như sau:
EMP ENO ENAME TITLE
Trong đó P có nghĩa là Print
Hình 1.5 Truy vấn trích rút trong QBE
Trong đó U có nghĩa là Update
Hình 1.6 Truy vấn cập nhật trong QBE
1.1.4.3 Tương tác với các ngôn ngữ lập trình
Các ngôn ngữ dữ liệu quan hệ là không đủ để viết các chương trình ứng dụng phức tạp Vì vậy việc tương tác một ngôn ngữ dữ liệu quan hệ với một ngôn ngữ lập trình mà trong đó ứng dụng được viết là điều cần thiết Có hai cách tiếp cận chính trong việc cung cấp dịch vụ này: buộc chặt (tighly coupled) và buộc lỏng (loosely couple) Phương pháp tighly couple bao gồm việc mở rộng ngôn ngữ lập trình nào đấy với các lệnh thao tác dữ liệu Ví dụ ngôn ngữ thế hệ
4 (4GL-Martin 1985) Phương pháp loosly couple bao gồm việc tích hợp ngôn ngữ dữ liệu với một ngôn ngữ lập trình bằng cách sử dụng các lời gọi CSDL, ví
dụ embedded SQL
1.1.5 Hệ Quản trị CSDL quan hệ
Programmer U.250000
Trang 30Hệ QTCSDL là một thành phần phần mềm hỗ trợ mô hình quan hệ và ngôn ngữ quan hệ Một hệ QTCSDL là một chương trình reentrant được phân chia bởi nhiều thực thể hoạt động được gọi là các giao tác (transaction), chạy các chương trình CSDL Khi chạy trên một máy tính vạn năng, hệ QTCSDL được tương tác với hai thành phần khác: hệ thống con truyền thông và hệ điều hành
Kiến trúc chung của một hệ QTCSDL (tập trung) được mô tả như ở hình 1.7
Hình 1.7 Kiến trúc chung của HQTCSDL tập trung
Hệ thống con truyền thông cho phép tương tác HQTCSDL với các hệ thống con khác để truyền thông tin với các ứng dụng Ví dụ, monitor đầu cuối cần truyền thông với HQTCSDL để chạy các giao tác tương tác Hệ điều hành cung cấp sự tương tác giữa HQTCSDL với các tài nguyên của máy tính (bộ xử lý, bộ nhớ, chương trình điều khiển đĩa,…)
Các chức năng của một HQTCSDL thực hiện có thể được xếp tầng như hình 1.8, trong đó các mũi tên chỉ hướng của CSDL và luồng kiểm soát Lấy cách tiếp cận trên xuống, các tầng là giao diện, kiểm tra, dịch, thực hiện, truy cập dữ liệu và quản trị tương thích
Hệ thống con truyền thông
Hệ QTCSDL
Hệ điều hành
CSDL
Trang 31Tầng giao diện quản trị giao diện đối với các ứng dụng Có thể có nhiều giao diện như là SQL nhúng trong C hay QBE Các chương trình ứng dụng CSDL được thực hiện trên các khung nhìn ngoài của CSDL Với một ứng dụng, một khung nhìn là có lợi, biểu diễn sự cảm nhận cụ thể của nó với CSDL (được nhiều ứng dụng chia sẻ)
Một khung nhìn quan hệ là một quan hệ ảo suy từ các quan hệ cơ sở bằng việc áp dụng các phép toán đại số quan hệ Quản trị khung nhìn bao gồm việc dịch các truy vấn của user từ dữ liệu bên ngoài thành dữ liệu quan niệm (các quan hệ cơ sở) Nếu truy vấn của user được diễn đạt trong tính toán quan hệ, truy vẫn áp dụng cho dữ liệu vẫn còn cùng một dạng
Tầng kiểm tra (control layer) kiểm tra truy vấn bằng cách thêm vào các vị từ
toàn vẹn ngữ nghĩa và vị từ quyền Các ràng buộc toàn vẹn ngữ nghĩa và các quyền được chỉ rõ trong tính toán quan hệ Dữ liệu ra của tầng này là một truy vấn được làm giàu trong tính toán quan hệ
Tầng xử lý truy vấn (query processing layer) ánh xạ truy vấn thành một dãy
tối ưu mức thấp hơn Tầng này liên quan với thao tác Nó phân tích truy vấn thành một cây phép toán quan hệ và cố gắng tìm thứ tự “tối ưu” của các phép toán Kết quả được lưu trữ trong phương án thực hiện Dữ liệu ra của tầng này là một truy vấn được diễn đạt trong đại số quan hệ (hoặc trong mã mức thấp hơn)
Tầng thực hiện (execution layer) điều khiền việc thực hiện phương án truy
cập, bao gồm cả quản lý giao tác (commit, restart) làm đồng bộ hóa các phép toán quan hệ Nó thông dịch các phép toán quan hệ bằng cách gọi tầng truy cập
dữ liệu thông qua các truy vấn trích rút và cập nhật
Tầng truy cập dữ liệu (data access layer) quản trị các cấu trúc dữ liệu thể
hiện các quan hệ (files, indices) Nó cũng quản lý các buffer bằng việc lưu trữ các dữ liệu được truy cập đến các đĩa để nhận hoặc ghi dữ liệu
Cuối cùng, tầng tương thích (consistency layer) quản lý các kiểm soát đồng
thời và ghi nhật ký đối với các truy vấn cập nhật Tầng này cho phép các giao tác, hệ thống, và các phương tiện khôi phục sau hư hỏng
Trang 32Relational calculus Relational calculus
1.2 CÁC RÀNG BUỘC TOÀN VẸN TRÊN CSDL QUAN HỆ
Một vấn đề quan trọng và khó khăn khác đối với hệ CSDL là làm thế nào
để đảm bảo tính tương thích cơ sở dữ liệu Một trạng thái cơ sở dữ liệu được nói
là tương thích nếu cơ sở dữ liệu thỏa mãn một tập hợp các ràng buộc gọi là các ràng buộc toàn vẹn ngữ nghĩa Việc duy trì một cơ sở dữ liệu tương thích đòi hỏi
User interface View manegerment
Semantic Intergrity Control Authorization Checking
Query Decomposition and Optimisation Access Plan Management
Access Plan Execution Control Algebra Operation Execution
Buffer management Access method
Concurrency Control Logging
DATABASE
result
Trang 33nhiều cơ cấu như là kiểm soát đồng thời, tính tin cậy, sự bảo vệ, kiểm soát toàn vẹn ngữ nghĩa Kiểm soát toàn vẹn ngữ nghĩa đảm bảo tính tương thích của cơ
sở dữ liệu bằng cách chối bỏ các chương trình cập nhật dẫn đến trạng thái cơ sở
dữ liệu không tương thích hoặc là bằng cách kích hoạt các hành động cụ thể trên trạng thái CSDL, chúng đền bù đối với ảnh hưởng của các chương trình cập nhật Nghĩa là cơ sở dữ liệu được cập nhật phải thỏa mãn một tập hợp các ràng buộc toàn vẹn
Nói chung, các ràng buộc toàn vẹn ngữ nghĩa là các quy tắc diễn đạt các hiểu biết về các tính chất của ứng dụng Chúng định nghĩa các tính chất ứng dụng tĩnh hoặc động mà các đối tượng hoặc các khái niệm thao tác của một mô hình dữ liệu không thể bắt được một cách trực tiếp Khái niệm của một quy tắc toàn vẹn như vậy được liên kết mạnh mẽ với quy tắc của mô hình dữ liệu theo nghĩa là các quy tắc này có thể bắt giữ được thông tin ngữ nghĩa về ứng dụng nhiều hơn
Có hai kiểu ràng buộc toàn vẹn có thể được phân biệt: các ràng buộc cấu trúc và các ràng buộc ứng xử Các ràng buộc cấu trúc diễn đạt các tính chất ngữ nghĩa có sẵn đối với mô hình Ví dụ về các ràng buộc như vậy là ràng buộc khóa duy nhất trong mô hình mạng Về phía khác, các ràng buộc ứng xử điều chỉnh các ứng xử của ứng dụng Như vậy nó là chủ yếu trong quá trình thiết kế cơ sở
dữ liệu Chúng có thể biểu thị các liên kết giữa các đối tượng như là đưa vào sự phụ thuộc trong mô hình quan hệ hoặc mô tả các cấu trúc và tính chất của đối tượng Việc tăng sự đa dạng của các ứng dụng cơ sở dữ liệu và sự phát triển mới đây của các công cụ giúp đỡ thiết kế cơ sở dữ liệu kêu gọi đối với các ràng buộc toàn vẹn mạnh mẽ có thể làm giàu mô hình dữ liệu
Kiểm soát toàn vẹn đã xuất hiện với xử lý dữ liệu và đã tiến hóa từ các phương pháp thủ tục (trong đó các kiểm soát được nhúng vào trong các chương trình ứng dụng) đến các phương pháp mô tả Các phương pháp mô tả đã nổi lên với mô hình quan hệ để làm giảm nhẹ vấn đề độc lập dữ liệu/chương trình, dư thừa mã và sự thực hiện nghèo nàn của các phương pháp thủ tục Tư tưởng là diễn đạt các ràng buộc toàn vẹn bằng cách sử dụng các khẳng định của tính toán
Trang 34vị từ Một tập hợp các khẳng định toàn vẹn ngữ nghĩa như vậy định nghĩa sự tương thích cơ sở dữ liệu Phương pháp này cho phép người ta mô tả và sửa đổi các khẳng định toàn vẹn phức tạp một cách dễ dàng
Vấn đề chính trong việc hỗ trợ việc kiểm soát toàn vẹn ngữ nghĩa tự động
là chi phí của việc kiểm tra các khẳng định có thể quá cao Việc áp đặt các khẳng định toàn vẹn là tốn kém nói chung nó đòi hỏi truy cập đến một lượng dữ liệu lớn không bao hàm trong các cập nhật cơ sở dữ liệu Vấn đề sẽ khó khăn hơn khi các khẳng định được định nghĩa trên một cơ sở dữ liệu phân tán
Có nhiều cách giải quyết đã được nghiên cứu để thiết kế một hệ thống toàn vẹn con bằng cách tổ hợp các chiến lược tối ưu Mục đích của chúng là (1) hạn chế số các khẳng định cần được áp buộc, (2) làm giảm số các truy cập dữ liệu để
áp buộc một khẳng định cho trước trong sự có mặt của một chương trình cập nhật, (3) định nghĩa một chiến lược ngăn ngừa phát hiện các không tương thích theo cách tránh các cập nhật không thực hiện, (4) thực hiện càng nhiều càng tốt các kiểm soát toàn vẹn tại thời điểm dịch Một số ít các cách giải quyết này đã được cài đặt nhưng chúng chịu một sự mất tổng quát Hoặc là chúng được hạn chế đến một tập hợp nhỏ các khẳng định (các ràng buộc tổng quát hơn sẽ có một chi phí kiểm tra quá cao)
Trong phần này trình bày các giải pháp kiểm tra toàn vẹn ngữ nghĩa trong các hệ thống tập trung Bởi vì ngữ cảnh của chúng ta mô hình quan hệ, chúng ta chỉ xem xét các phương pháp mô tả Nội dung của phần này phần lớn dựa trên công trình kiểm soát toàn vẹn ngữ nghĩa đối với các hệ thống tập trung và đối với các hệ thống phân tán (của các tác giả Simon và Valduriez)
1.2.1 Kiểm soát toàn vẹn ngữ nghĩa tập trung
Một hệ thống con toàn vẹn ngữ nghĩa có hai thành phần chính: một ngôn ngữ để diễn đạt và thao tác các khẳng định và một cơ cấu tăng cường thực hiện các hành động cụ thể để bắt tuân theo toàn vẹn cơ sở dữ liệu tại các update
1.2.1.1 Khái niệm ràng buộc toàn vẹn
Trong mỗi CSDL luôn tồn tại nhiều mối liên hệ giữa các thuộc tính, giữa các bộ; sự liên hệ này có thể xảy ra trong cùng một quan hệ hoặc trong các quan hệ
Trang 35của một lược đồ CSDL Các mối liên hệ này là những điều kiện bất biến mà tất
cả các bộ của những quan hệ có liên quan trong CSDL đều phải thoả mãn ở mọi thời điểm Những điều kiện bất biến đó được gọi là ràng buộc toàn vẹn Trong thực tế ràng buộc toàn vẹn là các quy tắc quản lý được áp đặt trên các đối tượng của thế giới thực Chẳng hạn mỗi sinh viên phải có một mã sinh viên duy nhất, hai thí sinh dự thi vào một trường phải có số báo danh khác nhau, một sinh viên
dự thi một môn học không quá 3 lần,…
Nhiệm vụ của người phân tích thiết kế là phải phát hiện càng đầy đủ các ràng buộc toàn vẹn càng tốt và mô tả chúng một cách chính xác trong hồ sơ phân tích thiết kế - đó là một việc làm rất quan trọng Ràng buộc toàn vẹn được xem như
là một công cụ để diễn đạt ngữ nghĩa của CSDL Một CSDL được thiết kế cồng kềnh nhưng nó thể hiện được đầy đủ ngữ nghĩa của thực tế vẫn có giá trị cao hơn rất nhiều so với một cách thiết kế gọn nhẹ nhưng nghèo nàn về ngữ nghĩa vì thiếu các ràng buộc toàn vẹn của CSDL
Công việc kiểm tra ràng buộc toàn vẹn thường được tiến hành vào thời điểm cập nhật dữ liệu (thêm, sửa, xoá) Những ràng buộc toàn vẹn phát sinh phải cần được ghi nhận và xử lý một cách tường minh (thường là bởi một hàm chuẩn hoặc một đoạn chương trình)
Ràng buộc toàn vẹn và kiểm tra sự vi phạm ràng buộc toàn vẹn là hai trong
số những vấn đề quan trọng trong quá trình phân tích thiết kế cơ sở dữ liệu, nếu không quan tâm đúng mức đến những vấn đề trên, thì có thể dẫn đến những hậu quả nghiêm trọng về tính an toàn và toàn vẹn dữ liệu, đặc biệt là đối với những
cơ sở dữ liệu lớn
1.2.1.2 Các yếu tố của ràng buộc toàn vẹn
Mỗi ràng buộc toàn vẹn có bốn yếu tố: điều kiện, bối cảnh, bảng tầm ảnh hưởng
và hành động phải cần thực hiện khi phát hiện có ràng buộc toàn vẹn bị vi phạm:
- Điều kiện:
Điều kiện của ràng buộc toàn vẹn là sự mô tả, và biểu diễn hình thức nội dung của nó Điều kiện của một ràng buộc toàn vẹn R có thể được biểu diễn bằng ngôn ngữ tự nhiên, ngôn ngữ đại số quan hệ, ngôn ngữ mã giả, ngôn ngữ
Trang 36truy vấn SQL,… ngoài ra điều kiện của ràng buộc toàn vẹn cũng có thể được
biểu diễn bằng phụ thuộc hàm
Ví dụ: Sau đây là một số ràng buộc toàn vẹn trên lược đồ CSDL quản lý sinh viên
Mỗi lớp học phải có một mã số duy nhất để phân biệt với các lớp học khác trong trường
Mỗi lớp học phải thuộc về một khoa của trường
Mỗi sinh viên có một mã số sinh viên duy nhất, không trùng với bất cứ sinh viên nào trong trường
Mỗi học viên phải đăng ký vào một lớp học trong trường Mỗi học viên chỉ được thi tối đa 3 lần cho mỗi môn học
Tổng số học viên của một lớp phải lớn hơn hoặc bằng số lượng đếm được của một lớp tại một thời điểm nào đó
- Bối cảnh:
Bối cảnh của ràng buộc toàn vẹn là những quan hệ mà ràng buộc đó có hiệu lực hay nói một cách khác, đó là những quan hệ cần phải được kiểm tra khi tiến hành cập nhật dữ liệu Bối cảnh của một ràng buộc toàn vẹn có thể là một hoặc nhiều quan hệ
Chẳng hạn với ràng buộc toàn vẹn R trên thì bối cảnh của nó là quan hệ Sinhvien
- Bảng tầm ảnh hưởng:
Trong quá trình phân tích thiết kế một CSDL, người phân tích cần lập bảng tầm ảnh hưởng cho một ràng buộc toàn vẹn nhằm xác định thời điểm cần phải tiến hành kiểm tra khi tiến hành cập nhật dữ liệu
Thời điểm cần phải kiểm tra ràng buộc toàn vẹn chính là thời điểm cập nhật dữ liệu
Một bảng tầm ảnh hưởng của một ràng buộc toàn vẹn có dạng sau:
Tên quan hệ Thêm (T) Sửa (S) Xoá (X)
Trang 37r2 -
…
rn
Bảng này chứa toàn các ký hiệu +, – hoặc -(*)
Chẳng hạn + tại (dòng r1, cột Thêm) thì có nghĩa là khi thêm một bộ vào quan hệ
r1 thì ràng buộc toàn vẹn bị vi phạm
Dấu - Tại ô (dòng r2, cột sửa) thì có nghĩa là khi sửa một bộ trên quan hệ r2 thì ràng buộc toàn vẹn không bị vi phạm
Quy ước:
- Không được sửa thuộc tính khoá
- Nếu không bị vi phạm do không được phép sửa đổi thì ký hiệu là - (*)
- Hành động cần phải có khi phát hiện có ràng buộc toàn vẹn bị vi phạm: Khi một ràng buộc toàn vẹn bị vi phạm, cần có những hành động thích hợp Thông thường có 2 giải pháp:
Thứ nhất: Đưa ra thông báo và yêu cầu sửa chữa dữ liệu của các thuộc
tính cho phù hợp với quy tắc đảm bảo tính nhất quán dữ liệu Thông báo phải đầy đủ và phải thân thiện với người sử dụng Giải pháp này là phù hợp cho việc xử lý thời gian thực
Thứ hai: Từ chối thao tác cập nhật Giải pháp này là phù hợp đối với việc
xử lý theo lô Việc từ chối cũng phải được lưu lại bằng những thông báo đầy đủ, rõ ràng vì sao thao tác bị từ chối và cần phải sữa lại những dữ liệu nào?
Khóa nội, khoá ngoại, giá trị NOT NULL là những ràng buộc toàn vẹn miền giá trị của các thuộc tính Những ràng buộc toàn vẹn này là những ràng buộc toàn vẹn đơn giản trong CSDL
Các hệ quản trị cơ sở dữ liệu thường có các cơ chế tự động kiểm tra các ràng buộc toàn vẹn về miền giá trị của khoa nội, khoá ngoại, giá trị NOT NULL Việc kiểm tra ràng buộc toàn vẹn có thể tiến hành vào những thời điểm sau đây
Trang 38Thứ nhất: Kiểm tra ngay sau khi thực hiện một thao tác cặp nhật CSDL
Thao tác cặp nhật chỉ được xem là hợp lệ nếu như nó không vi phạm bất cứ một ràng buộc toàn vẹn nào, nghĩa là nó không làm mất tính toàn vẹn của CSDL Nếu vi phạm ràng buộc toàn vẹn, thao tác cặp nhật bị coi là không hợp lệ và sẽ bị hệ thống huỷ bỏ (hoặc có một xử lý thích hợp nào đó)
Thứ hai: Kiểm tra định kỳ hay đột xuất, nghĩa là việc kiểm tra ràng buộc
toàn vẹn được tiến hành độc lập với thao tác cặp nhật dữ liệu Đối với những trường hợp vi phạm ràng buộc toàn vẹn, hệ thống có những xử lý ngầm định hoặc yêu cầu người sử dụng xử lý những sai sót một cách tường minh
1.2.1.3 Phân loại ràng buộc toàn vẹn
Trong quá trình phân tích thiết kế CSDL, người phân tích phải phát hiện tất
cả các ràng buộc toàn vẹn tiềm ẩn trong CSDL đó Việc phân loại các ràng buộc toàn vẹn là rất có ích, nó nhằm giúp cho người phân tích có được một định hướng để phát hiện các ràng buộc toàn vẹn, tránh bỏ sót Các ràng buộc toàn vẹn
có thể được chia làm hai loại chính như sau:
- Thứ nhất: Ràng buộc toàn vẹn có phạm vi là một quan hệ bao gồm:
Ràng buộc toàn vẹn miền giá trị, ràng buộc toàn vẹn liên thuộc tính, ràng buộc toàn vẹn liên bộ
Thứ hai: Ràng buộc toàn vẹn có phạm vi là nhiều quan hệ bao gồm: Ràng
buộc toàn vẹn phụ thuộc tồn tại, ràng buộc toàn vẹn liên bộ - liên quan hệ, ràng buộc toàn vẹn liên thuộc tính - liên quan hệ
Để minh hoạ, chúng ta xét ví dụ sau đây:
Ví dụ 1.9:
Cho một CSDL C dùng để quản lý việc đặt hàng và giao hàng của một công
ty Lược đồ CSDL C gồm các lược đồ quan hệ sau:
Q1: Khach (MAKH, TENKH, DIACHIKH, DIENTHOAI)
Mô tả:
Trang 39Mỗi khách hàng có một mã khách hàng (MAKH) duy nhất, mỗi MAKH xác định tên khách hàng (TENKH), địa chỉ (DIACHIKH), số điện thoại (DIENTHOAI)
Q2: Hang (MAHANG, TENHANG, QUYCACH, DVTINH)
Mô tả:
Mỗi mặt hàng có một mã hàng (MAHANG) duy nhất, mỗi MAHANG xác định tên hàng (TENHANG), quy cách hàng (QUYCACH), đơn vị tính (DVTINH)
Q3: Dathang (SODH, MAHANG, SLDAT, NGAYDH, MAKH)
Mô tả:
Mỗi mã số đặt hàng (SODH) xác định một ngày đặt hàng (NGAYDH) và mã khách hàng tương ứng (MAKH) Biết mã số đặt hàng và mã mặt hàng thì biết được số lượng đặt hàng (SLDAT) Mỗi khách hàng trong một ngày có thể có nhiều lần đặt hàng
Q4: Hoadon (SOHD, NGAYLAP, SODH, TRIGIAHD, NGAYXUAT)
Mô tả:
Mỗi hoá đơn tổng hợp có một mã số duy nhất là SOHD, mỗi hoá đơn bán hàng có thể gồm nhiều mặt hàng Mỗi hoá đơn xác định ngày lập hoá đơn (NGAYLAP), ứng với số đặt hàng nào (SODH) Giả sử rằng hoá đơn bán hàng theo yêu cầu của chỉ một đơn đặt hàng có mã số là SODH và ngược lại, mỗi đơn đặt hàng chỉ được giải quyết chỉ trong một hoá đơn Do điều kiện khách quan có thể công ty không giao đầy đủ các mặt hàng cũng như số lượng từng mặt hàng yêu cầu trong đơn đặt hàng nhưng không bao giờ giao vượt ngoài yêu cầu Mỗi hoá đơn xác định một trị giá của những mặt hàng trong hoá đơn (TRIGÍAHD)
và một ngày xuất kho giao hàng cho khách (NGAYXUAT)
Q5: Chitiethd (SOHD, MAHANG, GIABAN, SLBAN)