ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜ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,
Ngô Thị Thanh Hoà
L
2MỤ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
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 43.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
5BẢ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
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 7huố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.
được định nghĩa trên n tập hợp D
1
, D
2
, … , D
n
(không nhất thiết phân biệt) là
một tập hợp các n-bộ <d
1,
d
2,
…, d
n
> sao cho d
1
D
1
, d
2
D
2
, …., d
n
D
n
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
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. 10ENO ENAME
TITLE SAL PNO RESP DUR
PNO PNAME
BUDGET
EMP
PROJ
Hình 1.1 Lược đồ CSDL
PROJ
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
11đượ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
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. 1314Mộ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
SKILL
về MVDhinh
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 16Quan 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
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:
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
P1 Instrucmentation 150000
P2 Database Develop 135000
P3 CAD/CAM 250000
P4 maintemance 310000
TITLE SAL
Elect.Eng. 40000
Syst.Anal 34000
Mech.Eng 27000
Programmer 24000
PAY
PROJ
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 20tiế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
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. 22Có 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à
R S = R – (R – S).
Nối θ