You are on page 1of 152

BỘ NÔNG NGHIỆP VÀ PHÁT TRIỂN NÔNG THÔN

HỌC VIỆN NÔNG NGHIỆP VIỆT NAM


KHOA CÔNG NGHỆ THÔNG TIN

PGS.TS. NGUYỄN VĂN ĐỊNH

BÀI GIẢNG

CƠ SỞ DỮ LIỆU NÂNG CAO

CHƯƠNG TRÌNH ĐÀO TẠO THẠC SĨ NGÀNH CÔNG NGHỆ THÔNG TIN

HÀ NỘI 2015

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 0


Chương 1

TỔNG QUAN VỀ CSDL PHÂN TÁN


Chương này, đề cập đến một số khái niệm và kết quả cơ bản liên quan đến việc thiết kế
một CSDL phân tán.

1.1. CẤU TRÚC CỦA HỆ CƠ SỞ DỮ LIỆU PHÂN TÁN

Dữ liệu là một thành phần không thể thiếu trong các ứng dụng công nghệ
thông tin. Quá trình phát triển của CNTT cũng kéo theo quá trình phát triển của công nghệ
CSDL.

1.1.1. Sự phát triển của công nghệ CSDL

Công nghệ lưu trữ và xử lý dữ liệu cho đến nay đã trải qua các giai đoạn phát triển chính
như sau:
- Xử lý tệp truyền thống: Trong mô hình này, dữ liệu lưu trữ thành các tệp riêng rẽ, được
mô tả và gắn kết với từng chương trình ứng dụng.

Hình 1.1. Sơ đồ xử lý tệp truyền thống

Cách xử lý này sẽ phát sinh vấn đề dư thừa dữ liệu và các dị thường trong cập nhật. Chẳng
hạn, có thể có 2 chương trình ứng dụng với 2 tệp dữ liệu riêng, nhưng mỗi tệp dữ liệu này lại có
những thông tin giống nhau, vì vậy tạo nên sự dư thừa dữ liệu, gây lãng phí cho lưu trữ và quản lý.
Nguy hại hơn là khi cập nhật thay đổi thông tin về một thực thể trong tệp dữ liệu này thì cũng phải
thay đổi trong tệp kia với đối tượng đó. Điều này rất khó thực hiện triệt để khi có nhiều tệp dữ liệu
có chứa các thông tin trùng lặp, và sẽ gây ra các dị thường trong cập nhật (thông tin không nhất
quán, thông tin mâu thuẫn...).
- Xử lý CSDL (Database-DB): Để khắc phục các nhược điểm của mô hình xử lý tệp, dữ
liệu của các ứng dụng được lưu trữ tập trung, được mô tả và xử lý thống nhất cho mọi chương
trình ứng dụng. Các dữ liệu tập trung lại thành một CSDL, được xử lý theo cách thống nhất cho
tất cả các ứng dụng có liên quan.
Như vậy vấn đề tập trung dữ liệu là mấu chốt của xử lý CSDL. Công nghệ CSDL là một
bước tiến lớn của công nghệ xử lý dữ liệu. Rõ ràng là nhờ sự tập trung dữ liệu, CSDL đã khắc
phục được sự dư thừa dữ liệu, hạn chế các dị thường trong cập nhật.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 1


Hình 1.2. Sơ đồ xử lý CSDL

Các hệ CSDL đầu tiên đã xuất hiện từ những năm 1960, từ đó đến nay chúng ta đã chứng
kiến nhiều hệ quản trị CSDL ra đời như FoxBase, FoxPro, MS Access, MySQL, SQL Server,
Firebird, Oracle.

Hình 1.3. Sơ đồ hình thành CSDL phân tán

- Công nghệ CSDL phân tán (Distributed Database-DDB): Khi công nghệ mạng máy
tính ra đời, người ta phân chia CSDL tập trung thành các CSDL cục bộ đặt trên các máy tính
khác nhau (các trạm/ sites) và được kết nối bởi mạng truyền thông. Các CSDL cục bộ này tích
hợp được với nhau qua mạng máy tính mà không cần có sự tập trung dữ liệu. Do đó có thể xây
dựng được một hệ thống CSDL, trong đó dữ liệu phân tán trên một mạng máy tính. Đó là cách
tiếp cận của CSDL phân tán.
Có thể nhận thấy một điều thú vị là: Công nghệ mạng máy tính xúc tiến một kiểu làm việc
đi ngược lại nỗ lực tập trung hóa của công nghệ CSDL, tuy vậy hai xu hướng trái ngược nhau

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 2


này lại có thể được tổng hợp lại để cho ra đời một công nghệ mạnh mẽ hơn nhiều so với từng
công nghệ riêng lẻ: đó là công nghệ CSDL phân tán.
Do đó có thể thấy rằng mục tiêu quan trọng nhất của công nghệ CSDL là sự tích hợp dữ liệu
chứ không phải là sự tập trung hóa, có nghĩa là có thể tích hợp dữ liệu để quản lý và sử dụng
chung mà không cần tập trung hóa và đó là bản chất của CSDL phân tán.
Một số ứng dụng của CSDL phân tán. Có rất nhiều lý do để cần phải có nhiều CSDL trong
một hệ thống phân tán như:
+ Nhiều database có thể gắn với nhiều chức năng của một hệ thống như: Bộ phận sản xuất,
bộ phận quản lý nhân sự, bộ phận bán hàng… và các chức năng này lại là những hệ thống độc
lập có nhu cầu lấy thông tin lẫn nhau.
+ Đơn vị sử dụng hệ thống database có nhiều trụ sở đặt ở nhiều vị trí địa lý khác nhau và
cách xa nhau, Thí dụ như hệ thống quản lý tài khoản của mạng điện thoại di động, các server
game…
+ Những ứng dụng đòi hỏi dữ liệu có tốc độ truy xuất rất cao được đặt các bản copy ở
nhiều server, việc truy xuất được phân tải cho các server này để đảm bảo hiệu năng, nhưng dữ
liệu trên các phần copy này phải đảm bảo đồng bộ tuyệt đối với nhau.
+ Nhiều ứng dụng khác nhau có thể đòi hỏi phải truy xuất vào cùng một dữ liệu theo cách
khác nhau, khi đó đòi hỏi phải có cơ chế truy xuất khác nhau.

Hình. 1.4. Một ứng dụng của CSDL phân tán

Hình 1.4 mô tả một ứng dụng điển hình của CSDL phân tán trong doanh nghiệp gồm có 3
bộ phận chính: Trụ sở chính là nơi điều hành mọi hoạt động của doanh nghiệp, cân đối dự báo tài
chính…, Bộ phận sản xuất là nơi sản xuất, lập kế hoạch SX và kế hoạch nguyên liệu… và Bộ
phận bán hàng nhận các đơn đặt hàng, phân phối hàng hóa, dịch vụ sau bán hàng…

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 3


Các bộ phận này của doanh nghiệp đặt ở 3 vị trí địa lý khác nhau, CSDL của doanh nghiệp
được kết nối theo mô hình CSDL phân tán.

1.1.2. Cấu trúc của hệ CSDL phân tán

Có thể đưa ra định nghĩa cho CSDL phân tán theo cách mô tả như sau:
Định nghĩa 1.1: CSDL phân tán là một tập hợp các CSDL cùng hợp tác hoạt động, được
lưu trữ trên các máy tính khác nhau (gọi là các trạm/sites) được kết nối với nhau bởi một mạng
truyền thông và được quản lý bởi một hệ quản trị CSDL phân tán.
Một cách lý tưởng, người dùng tại một trạm bất kỳ có thể truy cập và thao tác dữ liệu trên
bất cứ trạm nào, các CSDL đó được người dùng nhìn thấy và xử lý chỉ như là một CSDL tập
trung, người dùng có thể không biết và không cần biết đến sự phân tán của dữ liệu. Tính chất này
được phát biểu: “sự phân tán của dữ liệu là trong suốt đối với người dùng”.
Các thành phần của CSDL phân tán:
* Về mặt vật lý: Yếu tố chính để phân biệt một cơ sở dữ liệu phân tán với một cơ sở dữ liệu
tập trung là:
- Cơ sở dữ liệu phân tán phải có nhiều máy tính gọi là các trạm (sites/nodes).
- Các trạm phải được kết nối bởi một kênh truyền thông nào đó để truyền dữ liệu (trao đổi
dữ liệu) bao gồm các giao thức truyền thông.

Hình 1.4. Các thành phần của CSDL phân tán

* Về mặt logic: Phần mềm quản trị CSDL phân tán gồm 3 module chính sau:
- Xử lý dữ liệu (DP-Database Processing): Quản lý dữ liệu cục bộ tại các trạm giống như
với cơ sở dữ liệu tập trung.
- Xử lý ứng dụng (AP-Application Processing): Module này sẽ xử lý các ứng dụng dữ liệu
trên mỗi trạm, xử lý các giao dịch con trên các trạm và truy cập các thông tin phân tán trên các
trạm.
- Xử lý truyền thông (CP-Communication Processing): Module này có nhiệm vụ liên kết
(kết nối) các trạm với kênh truyền thông.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 4


* Ngoài ra hệ quản trị cơ sở dữ liệu phân tán còn có thêm một số chức năng:
- Quản lý từ điển dữ liệu tổng thể lưu trữ thông tin liên quan đến các dữ liệu phân tán (các
thông tin này được xem như siêu dữ liệu - Super Data).
- Định nghĩa các dữ liệu phân tán.
- Kiểm tra các ngữ nghĩa của các dữ liệu.
- Định giá (trả lời) các câu hỏi phân tán.
- Quản lý các giao dịch phân tán.
* Một số ưu điểm tiềm năng của hệ CSDL phân tán:
- Thích hợp cho bản chất phân tán của nhiều ứng dụng cơ sở dữ liệu.
- Cho phép dùng chung dữ liệu trong khi vẫn duy trì được các điều khiển cục bộ.
- Nâng cao hiệu năng hệ thống: do CSDL phân tán bao gồm nhiều CSDL cục bộ tại nhiều
trạm, nên cho phép tăng khả năng truy cập, thực hiện được nhiều xử lý song song, do đó tăng được
hiệu suất, tốc độ xử lý dữ liệu và ứng dụng
- Tăng độ tin cậy và an toàn dữ liệu: do dữ liệu được lưu trữ trên nhiều bản sao đồng bộ
nên có khả năng khôi phục dữ liệu khi xảy ra sự cố ở một vài trạm.
Kết luận: Như vậy, có thể xem CSDL phân tán là một bộ sưu tập các dữ liệu mà về mặt
logic thuộc cùng một hệ thống CSDL nhưng về mặt vật lý được phân bố trên các trạm của một
mạng máy tính. Hệ quản trị CSDL phân tán (để cho gọn ta cũng gọi chung là hệ quản trị CSDL
hay DBMS, nếu không gây nhầm lẫn) là hệ thống phần mềm cho phép quản lý CSDL phân tán,
làm cho việc phân tán trở nên trong suốt với người dùng (Hồ Thuần và Hồ Cẩm Hà, 2007).

1.2. CÁC MÔ HÌNH PHÂN TÁN DỮ LIỆU

1.2.1 Tính thuần nhất và không thuần nhất của một hệ CSDL phân tán

Để xây dựng CSDL phân tán, người ta phải phân bố dữ liệu trên các trạm khác nhau. Mỗi
cách tiếp cận cho việc phân bố dữ liệu sẽ nhận được một CSDL phân tán với những tính chất
khác nhau.

1.2.1.1. CSDL phân tán thuần nhất (Homogeneous DDB)


Tính thuần nhất của một CSDL phân tán thể hiện ở các tính chất cơ bản:
(i) Các CSDL cục bộ đều có cùng mô hình CSDL và có cùng cấu trúc dữ liệu.
(ii) Các CSDL cục bộ được quản trị bởi cùng một hệ quản trị CSDL.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 5


Hình 1.5. Thiết kế CSDL phân tán thuần nhất

Nói chung điều kiện (ii) thường bao gồm cả điều kiện (i), bởi vì khi các CSDL cục bộ được
quản trị bởi cùng một hệ QTCSDL thì các CSDL đó phải có cùng mô hình (chẳng hạn mô hình
quan hệ). Một CSDL phân tán thuần nhất thường có được từ việc chia một CSDL tập trung thành
một tập các CSDL cục bộ.
Như vậy, CSDL phân tán thuần nhất thường là kết quả của một cách thiết kế “từ trên
xuống”. Theo cách này, ta thiết kế một CSDL phân tán từ một CSDL tập trung, rồi tách thành các
trạm, tạo thuận lợi cho cho sự tăng trưởng của một tổ chức (cơ quan, doanh nghiệp…). Mô hình
này cũng cải thiện hiệu năng của việc quản lý và khai thác dữ liệu nhờ khả năng xử lý song song
được cung cấp bởi sự có mặt của nhiều trạm.

1.2.1.2. CSDL phân tán không thuần nhất (Hetorogeneous DDB)


Tính không thuần nhất của một CSDL phân tán thể hiện ở việc nó không thỏa một trong
(hoặc cả hai) tính chất (i) và (ii) trên đây.
Một CSDL phân tán không thuần thường được xây dựng bằng việc tích hợp các CSDL cục
bộ đã có thành một hệ thống CSDL. Các CSDL cục bộ này có thể được thiết kế theo nhiều mô
hình dữ liệu khác nhau, vì vậy có thể có cấu trúc dữ liệu khác nhau và được quản trị bởi các hệ
quản trị dữ liệu khác nhau.
Như vậy, CSDL phân tán không thuần nhất thường là kết quả của các thiết kế “từ dưới
lên”, cho phép tích hợp các CSDL hiện có và độc lập với nhau, như vậy, không phải tạo ra một
CSDL hoàn toàn mới. Như vậy, ngoài các chức năng chung, các hệ quản trị CSDL phân tán
không thuần nhất phải cung cấp các giao diện để các hệ quản trị CSDL cục bộ có thể giao tiếp
được với nhau, việc này thường được giải quyết bằng cách xây dựng một “mô hình trụ cột”
chung cho tất cả các CSDL cục bộ, mọi thao tác của các CSDL cục bộ đều thông qua mô hình
trụ cột này.
Rõ ràng các tiếp cận không thuần nhất cho việc phân tán dữ liệu là phức tạp hơn nhiều so
với cách tiếp cận thuần nhất.
Oracle là một hệ quản trị CSDL hỗ trợ việc liên kết dữ liệu trong một CSDL phân tán
không thuần nhất.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 6


Hình 1.6. Thiết kế CSDL phân tán thuần nhất không thuần nhất

1.2.2. Các mô hình phân tán dữ liệu

1.2.2.1. Cơ sở dữ liệu từ xa (Remote Database).


- Khái niệm: Cơ sở dữ liệu từ xa (remote database) là một CSDL đặt trên một máy tính
khác với máy tính của người dùng và được truy cập nhờ vào các lệnh truyền thông được xác định
bởi người dùng.
- Các đặc điểm của remote DB:
+ Máy tính của người dùng duy trì một CSDL riêng được nạp từ CSDL từ xa trên máy chủ.

+ Việc quản trị CSDL từ xa được thực hiện bởi một DBMS trên máy chủ.
+ Việc quản trị CSDL người dùng thực hiện trên máy trạm của người dùng, bởi phiên bản
micro của DBMS trên máy chủ, người dùng phải đảm bảo sự nhất quán dự liệu riêng với dữ liệu
máy chủ.
+ Nói chung việc truy cập CSDL từ xa thường được hạn chế trong việc tra cứu thông tin,
các phép cập nhật được làm theo cách tập trung trên máy chủ.
Cách tiếp cận CSDL từ xa cho một chức năng hạn chế, nhưng không vấp phải những vấn
đề khó khăn nhất của CSDL phân tán (quản lý từ điển dữ liệu, xử lý các giao dịch phân tán…).
Thí dụ 1.1. Phòng đào tạo có một CSDL đặt trên một máy chủ gồm danh sách SV mỗi
khóa của mỗi môn học, điểm kiểm tra, điểm chuyên cần, điểm thi. Giáo viên và sinh viên có thể
truy cập và tải về đề sử dụng. Đây là một mô hình CSDL từ xa.

1.2.2.2. Cơ sở dữ liệu liên hiệp (federated database)


Cơ sở dữ liệu liên hiệp (federated database) là một mô hình phân tán dữ liệu bao gồm các
CSDL cục bộ, nhưng các CSDL cục bộ này không tích hợp thành một CSDL duy nhất như với
CSDL phân tán mà chúng tạo thành các liên tác, trong phạm vi chúng có thể trao đổi dữ liệu.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 7


Cách tiếp cận CSDL liên hiệp nhằm tránh gặp phải những khó khăn rất lớn của việc quản trị tập
trung các CSDL phân tán, nhất là khi có một số lớn các CSDL cục bộ tham gia, đó là:
- Việc quản trị tập trung của CSDL phân tán là rất phức tạp nhất là khi số trạm là rất lớn.
- Mọi truy cập tới CSDL phân tán đều thông qua hệ quản trị CSDL.
- Khi truy cập tới một đơn vị dữ liệu dù trên trạm cục bộ nhưng vẫn thông qua hệ quản trị
CSDL phân tán làm cho tốc độ xử lý dữ liệu cục bộ chậm lại bởi các chi phí của việc quản lý các
dữ liệu phân tán.
Trong CSDL liên hiệp, người ta nới lỏng các ràng buộc chặt giừa các CSDL cục bộ và
cung cấp cho người dùng một ngôn ngữ để định nghĩa các mối quan hệ giữa các CSDL khác
nhau và thao tác trên nhiều CSDL cùng một lúc nhờ một ngôn ngữ đa cơ sở dữ liệu
(multidatabase language) Thường là không có quá nhiều máy trạm trong một CSDL liên hiệp..
Một số đặc điểm của CSDL liên hiệp:
- Nhằm ưu tiên người dùng thao tác CSDL cục bộ và xem việc truy cập tới một CSDL
khác là không thường xuyên.
- Sự phân tán là không trong suốt đối với người dùng.
Sự khác nhau giữa hệ quản trị CSDL liên hiệp và hệ quản trị CSDL phân tán là:
- Không quản lý từ điển dữ liệu tổng thể.
- Hỗ trợ một ngôn ngữ để định nghĩa các phụ thuộc có thể có giữa các CSDL trong liên
hiệp (multidatabase language).
- Hỗ trợ một ngôn ngữ để định nghĩa và thao tác trên các CSDL thuộc liên hiệp
(multidatabase language).

1.2.2.3. Cơ sở dữ liệu song song (parallel database)


Một mô hình phân tán dữ liệu được khai thác nhiều trong thời gian gần đây là việc phân bố
dữ liệu trên một tập các nút (nodes) của một máy tính song song (siêu máy tính với bộ đa xử lý)
để tăng hiệu quả của việc quản lý dữ liệu. Mô hình này còn được gọi là cơ sở dữ liệu song song
(parallel database) (Hình 1.7).
CSDL song song có thể được mô tả như sau:
- Phần cứng: Là một máy tính song song (siêu máy tính với nhiều bộ vi xử lý), mỗi một
node của máy tính song song sẽ xử lý một CSDL cục bộ. Các liên hệ giữa các node sẽ thông qua
bus dữ liệu của máy tính.
- Phần mềm: Dùng chung một phần mềm quản trị CSDL duy nhất.
Cơ sở dữ liệu song song được xem như một hộp đen xử lý dữ liệu và thường gọi là “máy
Cơ sở dữ liệu” (database machine).
Sự giống nhau và khác nhau giữa CSDL phân tán và CSDL song song:
- Giống nhau:

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 8


+ Cùng có nhiều CSDL cục bộ.
+ Có chung một phần mềm quản lý CSDL.
+ Hoạt động như một CSDL phân tán thuần nhất.
- Khác nhau:
+ Chỉ có một máy đặt tại một trạm.
+ Không dùng kênh truyền thông.

Hình 1.7. Cơ sở dữ liệu song song (Máy cơ sở dữ liệu)

1.3. CÁC TÍNH CHẤT CƠ BẢN CỦA MỘT HỆ CƠ SỞ DỮ LIỆU PHÂN TÁN

Các hệ quản trị CSDL phân tán phải làm cho người sử dụng trong hệ thống không biết và
không cần biết tới sự phân tán của dữ liệu và việc sử dụng CSDL phân tán phải không khó hơn
CSDL tập trung. Như vậy các hệ quản trị CSDL phân tán phải cung cấp các mức độc lập khác
nhau đối với dữ liệu và đối với người dùng, nói cách khac, các hệ quản trị CSDL phân tán phải
tạo nên các tính chất cơ bản của một hệ CSDL phân tán, đó cũng là các mục tiêu của một hệ
CSDL phân tán.

1.3.1. Tính độc lập đối với sự phân bố dữ liệu

Nhờ tính chất này, người dùng sẽ không cần quan tâm tới sự phân tán của dữ liệu và có thể
không biết là có sự phân tán. Thông tin về sự phân tán của dữ liệu (chẳng hạn một quan hệ được
phân tán thành các quan hệ con và đặt trên các trạm khác nhau) được lưu trữ trong từ điển dữ
liệu tổng thể và được hệ quản trị CSDL phân tán tham khảo để xác định vị trí của các thông tin

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 9


được phân tán (các quan hệ con có liên quan đến một quan hệ nào đó). Lưu trữ từ điển dữ liệu
tổng thể có 3 cách:
- Tập trung tại một trạm xem như máy chủ: từ điển DL được tổ chức tập trung.
- Mỗi một trạm được cung cấp một từ điển dữ liệu tổng thể: từ điển DL được tổ chức có
nhân bản.
- Từ điển dữ liệu được phân đoạn và lưu trữ trên các trạm: Từ điển được tổ chức phân tán.
Tính độc lập với sự phân tán dữ liệu sẽ đảm bảo sự định vị dữ liệu sẽ độc lập với sự phân
bố dữ liệu vật lý: Khi thay đổi dữ liệu về mặt vật lý thì chỉ có từ điển dữ liệu là thay đổi; không
làm thay đổi phần mềm ứng dụng.

1.3.2. Tính độc lập đối với sự phân đoạn của các quan hệ

Tính độc lập đối với sự phân đoạn sẽ che dấu người dùng về việc các dữ liệu đã bị phân
đoạn (hoặc: sự phân đoạn là trong suốt đối với người dùng).
Trong CSDL phân tán, các quan hệ được phân đoạn và có thể lưu trữ ở các trạm khác
nhau, việc phân đoạn là nhằm tăng tính hiệu quả của một CSDL phân tán và nó cho phép đơn
giản hóa các truy cập địa phương.
Khi người dùng truy cập tới các quan hệ tổng thể, hệ quản trị CSDL phân tán sẽ tham
chiếu tới các đoạn một cách phù hợp, thông tin về sự phân đoạn được lưu trữ trong từ điển, vì
vậy sự phân đoạn là độc lập với người dùng.
Tính độc lập đối với sự phân đoạn được đảm bảo bởi hệ quản trị CSDL phân tán.

1.3.3. Tính độc lập đối với sự nhân bản

Sự nhân bản là một giải pháp cho an toàn dữ liệu. Sự nhân bản là việc tạo ra các bản sao
dư thừa. Một đoạn được nhân bản khi tồn tại hai hay nhiều bản sao của nó. Mỗi bản sao được lưu
trữ trên một hay nhiều trạm khác nhau. Ngoài ra, sự nhân bản còn làm tăng tính sẵn sàng truy
cập và tăng khả năng xử lý cục bộ.
Việc duy trì và đồng bộ các bản sao là khá phức tạp và tốn kém. Tuy nhiên, do vấn đề an
toàn dữ liệu thì mọi CSDL phân tán đều phải thực hiện nhân bản.
Tính độc lập đối với sự nhân bản là làm cho người dùng không biết là có sự nhân bản mà
chỉ nhìn thấy các quan hệ không nhân bản. Như vậy, sự nhân bản là trong suốt đối với người
dùng.

1.3.4. Tính độc lập đối với các hệ quản trị CSDL cục bộ

- Tính độc lập này cho phép che dấu một sự kiện là các hệ quản trị CSDL địa phương có
thể khác nhau. Mục tiêu này rất khó thực hiện hoàn toàn, nhất là đối với hệ CSDL phân tán
không thuần nhất, người ta đưa ra một giải pháp gần đây nhất, là dùng một mô hình trụ cột
(thường chọn là mô hình quan hệ) và xác định một bộ chương trình dịch giữa các mô hình cục bộ
và mô hình trụ cột.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 10


- Người dùng ở các trạm không cần quan tâm đến các hệ quản trị CSDL ở các trạm khác,
họ cứ việc dùng chương trình quen thuộc của mình. Việc dịch các lệnh, câu hỏi từ các mô hình
cục bộ về mô hình trụ cột do hệ quản trị CSDL phân tán đảm nhận.
- Tính độc lập này được đảm bảo bởi hệ quản trị CSDL phân tán.
Hệ quản trị CSDL Oracle hỗ trợ tính độc lập của các mô hình phân tán, cho phép các user
truy nhập tới CSDL phân tán như một khối thống nhất, vì vậy nó được đánh giá là ưu việt nhất
hiện nay, đặc biệt là cho các CSDL phân tán.

1.3.5. Tính tự trị của các trạm

- Đây là một tính chất cho phép các trạm điều khiển và thao tác dữ liệu cục bộ của mình
độc lập với các trạm khác. Mỗi trạm có thể tự quản trị CSDL cục bộ, nhưng cũng có thể tham gia
trong hệ thống CSDL phân tán với vai trò như là máy khách (client) hoặc với vai trò như máy
chủ (server). Việc quản trị CSDL phân tán hoàn toàn phi tập trung.
- Tính tự trị được đảm bảo bởi hệ quản trị CSDL phân tán.

1.3.6. Tính mở rộng

Là một khả năng tăng trưởng hệ thống CSDL phân tán bằng việc đưa thêm vào các trạm
mới với các tác động tối thiểu lên các CSDL cục bộ và các chương trình ứng dụng hiện có.

1.3.7. Tính ổn định

Tính chất này đảm bảo rằng mọi sự cố trên một phần nhỏ của hệ thống rất ít hoặc hoàn
toàn không ảnh hưởng đến hoạt động của toàn bộ hệ thống.

1.3.8. Cải thiện hiệu năng khai thác và xử lý dữ liệu

- Đây là tính chất sống còn của cách tiếp cận CSDL phân tán.
- Vấn đề cốt yếu là phân đoạn hợp lý và nhân bản dữ liệu để có thể khai thác và xử lý song
song trên CSDL phân tán.

1.4. CÁC KIẾN TRÚC CỦA MỘT HỆ CƠ SỞ DỮ LIỆU PHÂN TÁN

1.4.1. Kiến trúc lược đồ của CSDLPT

Kiến trúc lược đồ nhằm đề xuất việc tổ chức lý tưởng nhất một CSDLPT hỗ trợ các mức
độc lập đối với dữ liệu và người dùng. Kiến trúc lược đồ của CSDL phân tán là sự mở rộng kiến
trúc 3 mức cho CSDL tập trung.

1.4.1.1. Nhắc lại kiến trúc 3 mức trong CSDL tập trung
Kiến trúc 3 mức theo tiêu chuẩn ANSI/SPARC (American National Standards Institute:
Viện Tiêu chuẩn quốc gia Mỹ/Planing and Requirement Committee: Ủy ban nhu cầu và kế hoạch
Mỹ) được mô tả hình 1.8.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 11


Hình 1.8. Ba mức của kiến trúc lược đồ trong các CSDL cục bộ

- Mức khung nhìn: Gồm các lược đồ ngoài, mỗi lược đồ ngoài mô tả chỉ một phần của
CSDL, thích hợp với một nhóm người sử dụng nhất định. Mỗi người sử dụng có thể không quan
tâm đến toàn bộ CSDL mà chỉ cần một phần thông tin nào đó.
- Mức logic: Gồm các lược đồ khái niệm, các lược đồ này mô tả những dữ liệu nào được
lưu trữ trong CSDL, mối quan hệ giữa chúng. Chẳng hạn lược đồ khái niệm chỉ quan tâm đến
các quan hệ được lưu trữ trong CSDL và các mối liên hệ giữa chúng chứ không quan tâm đến
cách thức lưu trữ các quan hệ này.
- Mức vật lý: Gồm các lược đồ trong, các lược đồ này mô tả dữ liệu được lưu trữ như thế
nào trong bộ nhớ thứ cấp. Mức này phản ánh cấu trúc dữ liệu, cách tổ chức tệp, các kỹ thuật nén
dữ liệu, cấp phát vùng nhớ…
Dưới đây chúng ta sẽ xem xét kiến trúc lược đồ của một CSDL phân tán.

1.4.1.2. Kiến trúc lược đồ của CSDL phân tán


Kiến trúc lược đồ của CSDL phân tán là sự mở rộng kiến trúc 3 mức cho CSDL tập trung.
Với kiến trúc lược đồ này, tính độc lập dữ liệu dễ dàng được đảm bảo. Mọi thông tin liên quan
đến các lược đồ và các phép biến đổi giữa các lược đồ (các ánh xạ) được lưu giữ trong từ điển dữ
liệu.
Trước hết ta đưa ra một số khái niệm liên quan đến các lược đồ CSDL phân tán, trong đó các
mức của lược đồ mô tả CSDLPT mà độc lập với mọi CSDL cục bộ thì được gọi là mức tổng thể,
các mức lược đồ mô tả một CSDL cục bộ được là mức cục bộ.
Định nghĩa 1.2: Lược đồ tổng thể (Global Scheme) là một mô tả tổng thể và thống nhất
của tất cả các dữ liệu của CSDL phân tán và độc lập với môi trường phân tán.
Định nghĩa 1.3: Câu hỏi phân tán (Distributed Query) là câu hỏi được diễn tả phù hợp với
các dữ liệu được mô tả bởi lược đồ tổng thể của CSDL phân tán.
Định nghĩa 1.4: Câu hỏi cục bộ (Local Query) là câu hỏi diễn tả phù hợp với các dữ liệu
được mô tả bởi lược đồ của một CSDL cục bộ.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 12


Trong kiến trúc lược đồ của một CSDL phân tán (Hình 1.9) có phân biệt 3 mức của lược
đồ tổng thể và 3 mức của các lược đồ cục bộ:

Hình 1.9. Kiến trúc lược đồ của CSDL phân tán

Ba mức của lược đồ tổng thể:


- Lược đồ khái niệm tổng thể: Định nghĩa tất cả các quan hệ có trong CSDL phân tán và
cung cấp tính độc lập dữ liệu đối với môi trường phân tán.
- Các lược đồ ngoài tổng thể: Mỗi lược đồ ngoài tổng thể xác định một khung nhìn của một
lớp người dùng nhất định. Các quy tắc định nghĩa khung nhìn được dùng để biến đổi dữ liệu ở
mức lược đồ ngoài tổng thể thành dữ liệu ở mức lược đồ khái niệm tổng thể. Nhờ các quy tắc
này mà tính độc lập logic của dữ liệu được đảm bảo.
- Lược đồ sắp đặt: Xác định chính xác cách thức và vị trí các quan hệ được sắp đặt trên các
trạm khác nhau trong mạng. Nó chứa tất cả các thông tin liên quan đến sự định vị, sự phân đoạn
và nhân bản dữ liệu, cùng với các quy tắc biến đổi dữ liệu ở mức lược đồ khái niệm tổng thể
thành dữ liệu cục bộ có phân đoạn và nhân bản.
Ba mức của các lược đồ cục bộ:
Cấu trúc lược đồ của một CSDL phân tán gồm 3 mức của lược đồ tổng thể và 3 mức của
lược đồ cục bộ, được mô tả trong hình 1.9.
- Các lược đồ trong cục bộ: Là mức vật lý của các lược đồ CSDL cục bộ, ý nghĩa và hoạt
động giống như các lược đồ trong của CSDL tập trung.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 13


- Các lược đồ khái niệm cục bộ: Là mức logic của các lược đồ CSDL cục bộ, ý nghĩa và
hoạt động giống như các lược đồ khái niệm của CSDL tập trung.
- Các lược đồ ngoài cục bộ: Có vai trò biểu diễn các đoạn của quan hệ như đã mô tả trong
lược đồ sắp đặt thành các đối tượng của lược đồ ngoài, được xem như các khung nhìn của CSDL
cục bộ. Các lược đồ ngoài cục bộ có nhiệm vụ kết nối lược đồ sắt đặt của các lược đồ tổng thể
với các CSDL cục bộ. Các lược đồ ngoài cục bộ còn đảm bảo tính độc lập của các hệ quản trị
CSDL và phải có nếu môi trường là không thuần nhất.

1.4.2. Kiến trúc chức năng của CSDL phân tán

Các chức năng trong một hệ thống CSDL được chia thành 2 nhóm chính trong quan hệ
Khách/Chủ (Client/Server). Nhóm khách bao gồm các chức năng xử lý ứng dụng (trình quản lý
ứng dụng) và nhóm chủ bao gồm các chức năng xử lý dữ liệu (trình quản lý dữ liệu) có mặt tại
mỗi trạm, như vậy mỗi trạm sẽ vừa có vai trò là trạm khách và vừa có vai trò là trạm chủ.
Kiến trúc chức năng của hệ CSDL phân tán bao gồm các nhóm chức năng sau:

1.4.2.1. Các chức năng xử lý ứng dụng


Các chức năng này còn gọi là trình quản lý ứng dụng, được thực hiện ở các mức của lược
đồ tổng thể, bao gồm:
- Giao diện người dùng: Kiểm tra các dữ liệu trong câu hỏi người dùng có phù hợp với lược
đồ ngoài tổng thể, sau khi thực thi câu hỏi thì trả về kết quả cho người dùng.
- Kiểm tra ngữ nghĩa: Biến đổi câu hỏi được diễn đạt trên các khung nhìn trong lược đồ
ngoài tổng thể thành câu hỏi diễn đạt trên các quan hệ trong lược đồ khái niệm tổng thể (còn gọi
là câu hỏi chính tắc, được biểu diễn bởi các biểu thức đại số quan hệ).
- Định giá câu hỏi phân tán: Biến đổi các câu hỏi chính tắc (là các biểu thức đại số quan hệ
trên các quan hệ tổng thể trong các quan hệ ở lược đồ khái niệm tổng thể) thành một phương án
thực thi phân tán trên các đoạn trong các CSDL cục bộ (nhờ các thông tin trong lược đồ sắp đặt).
Chức năng này cũng cho phép tối ưu hóa các câu hỏi phân tán để làm cực tiểu một hàm chi phí
(theo thời gian thực hiện hoặc dung lượng dữ liệu cần phải truyền tải giữa các trạm).
- Quản lý các giao dịch phân tán: Chức năng này đảm bảo việc điều khiển tương tranh và
tính nguyên tố của các giao dịch phân tán.

1.4.2.2. Các chức năng xử lý dữ liệu

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 14


Hình 1.10. Kiến trúc chức năng của một hệ CSDL phân tán

Các chức năng này còn gọi là trình quản lý dữ liệu, được thực hiện ở các mức của lược đồ
cục bộ, bao gồm:
- Định giá các câu hỏi cục bộ: Các câu hỏi cục bộ này nhận được từ các câu hỏi được diễn
đạt theo lược đồ sắp đặt thành các câu hỏi diễn đạt theo lược đồ ngoài cục bộ của CSDL cục bộ.
- Quản lý các giao dịch con trên mỗi CSDL cục bộ.
- Truy cập các CSDL cục bộ
Sơ đồ quan hệ Client/Server trong CSDL phân tán được mô tả trong hình 1.10. Nói chung,
một câu hỏi của người dùng sẽ viện dẫn tới phần mềm quản lý ứng dụng của trạm khách và phần
mềm quản lý dữ liệu của một hay nhiều trạm chủ. Các chức năng xử lý ứng dụng và chức năng
xử lý dữ liệu đều được tích hợp trong phần mềm quản trị CSDL phân tán.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 15


BÀI TẬP CHƯƠNG 1
1. Hãy trình bày những thành phần chính của một hệ Cơ sở dữ liệu phân tán (DDB). Mục đích và yêu
cầu của một hệ CSDL phân tán?
2. Thế nào là một CSDL phân tán thuần nhất và không thuần nhất? Nêu các đặc điểm chính của các mô
hình phân tán dữ liệu: CSDL từ xa, CSDL song song, CSDL liên hiệp. So sánh mỗi mô hình này với
CSDL phân tán.
3. Một CSDL phân tán phải đảm bảo các tính độc lập gì đối với dữ liệu và các hệ quản trị CSDL của
các CSDL cục bộ?
4. Hãy phân biệt các khái niệm: Dữ liệu cục bộ, dữ liệu phân tán, câu hỏi cục bộ, câu hỏi phân tán.
5. Phân tích kiến trúc lược đồ và kiến trúc chức năng của một hệ CSDL phân tán. Đối với các lược đồ
tổng thể, theo anh/chị thì lược đồ nào là quan trọng nhất đối với một hệ CSDL phân tán.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 16


Chương 2

TỐI ƯU HÓA CÂU HỔI VÀ QUẢN LÝ CÁC GIAO DỊCH PHÂN TÁN

2.1. ĐỊNH NGHĨA DỮ LIỆU TRONG CƠ SỞ DỮ LIỆU PHÂN TÁN

Việc định nghĩa dữ liệu trong CSDL phân tán bao gồm hai vấn đề quan trọng,
đó là:
- Sự mô tả dữ liệu tổng thể.
- Sự phân đoạn và sắp đặt dữ liệu trong mạng máy tính của CSDL phân tán.

2.1.1. Mô tả dữ liệu

Thao tác mô tả dữ liệu tổng thể, chẳng hạn thêm một quan hệ mới, hay sửa đổi mô tả đó
phụ thuộc chủ yếu vào việc tổ chức từ điển dữ liệu.
- Với 1 từ điển DL được tổ chức tập trung, thao tác mô tả dữ liệu rất đơn giản vì nó chỉ liên
quan đến một trạm trung tâm lưu trữ từ điển DL.
- Với 1 từ điển DL được lưu trữ có nhân bản, thao tác mô tả phải được làm đồng bộ với tất
cả các trạm có lưu các bản sao của từ điển DL.
- Với 1 từ điển được lưu trữ phân tán thì thao tác mô tả là phức tạp nhất, mô tả dữ liệu
thoạt đầu được đưa vào trạm cục bộ mà tại đó dữ liệu được tạo ra, trạm này gọi là trạm “tạo
sinh”, sau đó trạm “tạo sinh” và các trạm khác được phép truy cập dữ liệu mới sẽ hợp tác và trao
đổi thông tin về mô tả dữ liệu.
Trạm tạo sinh có thể biết danh sách các trạm được phép truy cập các dữ liệu riêng của nó,
nhằm thông báo cho các trạm này mọi thay đổi về mô tả dữ liệu.

2.1.2. Các kiểu phân đoạn dữ liệu

Sự sắp đặt dữ liệu bằng cách chia một quan hệ tổng thể thành các đơn vị logic trong lược
đồ khái niệm tổng thể gọi là sự phân đoạn dữ liệu. Sự phân đoạn nhằm chia các quan hệ thành
các đơn vị nhỏ hơn (gọi là các đoạn) để có thể sắp đặt tối ưu trong CSDL phân tán. Có ba kiểu
phân đoạn: phân đoạn ngang, phân đoạn dọc và phân đoạn hỗn hợp nhằm chia các quan hệ R
thành các quan hệ con, được khai báo trong lược đồ khái niệm tổng thể và được sắp đặt phù hợp
trên các trạm (Hình 2.1).

R1 R1 R2
R1 R2
R2 R3

(a) Phân đoạn ngang (b) Phân đoạn dọc (c) Phân đoạn hỗn hợp

Hình 2.1. Các kiểu phân đoạn dữ liệu

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 17


Sự phân đoạn một quan hệ được xác định bởi người quản trị CSDL, theo thiết kế của hệ
thống thông tin nhằm tối ưu hóa việc cập nhật dữ liệu. Sự phân đoạn một quan hệ phải thỏa mãn
các yêu cầu:
- Mỗi phép phân đoạn l à một phân tách không mất thông tin: Tức là mỗi phần tử dữ liệu
của quan hệ tổng thể phải thuộc một hay nhiều đoạn của phân tách, dữ liệu không mất đi nhưng
cũng không thêm dữ liệu mới.
- Khôi phục lại được quan hệ ban đầu từ các đoạn.
- Các đoạn là không trùng lặp: Nhằm tránh dư thừa dữ liệu (đối với các phân đoạn ngang
điều này là bắt buộc, đối với các phân đoạn dọc thì mỗi đoạn chỉ cho phép trùng lặp các thuộc
tính khóa để khôi phục được quan hệ ban đầu).
Thao tác phân đoạn và việc khôi phục lại các quan hệ được thực hiện dựa trên các phép
toán của đại số quan hệ. Trước khi nghiên cứu các phương pháp phân đoạn dữ liệu, ta nhắc lại
các phép toán của đại số quan hệ.

2.1.3. Các phép toán đại số quan hệ trong phân đoạn dữ liệu

Việc phân đoạn một quan hệ tổng thể thành các đoạn (mảnh) và khôi phục các quan hệ
tổng thể từ các đoạn được thực hiện bởi các phép toán đại số quan hệ. Đại số quan hệ là cơ sở
quan trọng của một ngôn ngữ bậc cao được sử dụng để thao tác trên các quan hệ. Ngôn ngữ này
bao gồm hai nhóm phép toán: các phép toán trên tập hợp (phép hợp, phép giao, phép trừ và tích
Đề các) và các phép toán chỉ trên các quan hệ (phép chọn, phép chiếu, phép kết nối và phép nửa
kết nối). Trước hết chúng ta đưa ra một số quy ước về ký pháp và nhắc lại các khái niệm liên
quan đến các phép toán đại số quan hệ:

- Một lược đồ quan hệ R xác định trên tập thuộc tính  = {A1, A2,…, An}, có thể ký hiệu
R(A1, A2,…, An), hay R = {A1, A2,…, An}. Một thể hiện của lược đồ quan hệ R là một quan hệ, được
ký hiệu bằng chữ r (in thường). Quan hệ r có thể biểu diễn bằng một bảng.
- Tập các giá trị có thể của thuộc tính Aj, ký hiệu Dom(Aj) và gọi là miền trị của thứ j của
quan hệ r trên lược đồ quan hệ R.
- Hai quan hệ là cùng bậc nếu chúng có cùng số thuộc tính.
- Hai quan hệ là khả hợp nếu chúng có cùng bậc và thuộc tính thứ j của quan hệ này có
cùng miền trị với thuộc tính thứ j của quan hệ kia.
- Rõ ràng, các quan hệ xác định trên cùng một lược đồ quan hệ là các quan hệ
khả hợp.
Sau đây, chúng ta nhắc lại một số định nghĩa về các phép toán đại số quan hệ và một số
công thức thường được sử dụng trong đại số quan hệ.

2.1.3.1. Định nghĩa các phép toán đại số quan hệ


(1) Phép hợp: Hợp (union) của hai quan hệ khả hợp r và s, là một quan hệ, được ký hiệu và
xác định như sau:

r  s = {t | t  r hoặc t  s}

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 18


Như vậy, hợp của hai quan hệ r và s là một quan hệ chứa tất cả các bộ của r và s (những
bộ chung chỉ xuất hiện 1 lần).
(2) Phép giao: Giao (intersection) của hai quan hệ khả hợp r và s, là một quan hệ, được ký
hiệu và xác định như sau:

r  s = {t | t  r và t  s}

Như vậy, giao của hai quan hệ r và s là một quan hệ chỉ chứa các bộ chung của r và s.
(3) Phép trừ: Hiệu (set difference) của hai quan hệ khả hợp r và s, là một quan hệ, được ký
hiệu và xác định như sau:

r – s = {t | t  r và t  s}

Như vậy, hiệu của hai quan hệ r và s là một quan hệ chỉ chứa các bộ thuộc r mà không
thuộc s.
(4) Tích Đề các (Descartes): Cho r là một quan hệ xác định trên tập thuộc tính {A1, A2,…,
An} và s là quan hệ xác định trên {B1, B2,…, Bm}. Tích Đề các của hai quan hệ r và s là một quan
hệ được ký hiệu và xác định như sau:

r  s = {t | t = (a1,..., an, b1,..., bm), với (a1,..., an)  r ; (b1,..., bm)  s}

Như vậy, Tích Đề các của hai quan hệ r và s là một quan hệ mà mỗi bộ là ghép nối của
một bộ trong r với một bộ trong s. Rõ ràng nếu r có p bộ và s có q bộ thì r  s chứa p.q bộ.

(5) Phép chiếu: Cho r là một quan hệ trên tập thuộc tính  = {A1, A2,…, An}, giả sử X  ,
chiếu (projection) của quan hệ r lên tập thuộc tính X cho kết quả là một quan hệ con của quan hệ
r, được ký hiệu và xác định như sau:

X(r) = { t[X] | t  r }

Trong đó t  X  là hạn chế của bộ t của r trên tập thuộc tính X, với X = Ai1 ,..., Aik , thì  

t  X  = t  A i1  ,..., t  A ik  
Như vậy, chiếu của quan hệ r trên tập thuộc tính X, là quan hệ con nhận được từ r bằng
cách bỏ đi những thuộc tính (các cột) trong r mà không có mặt trong X. Với quan hệ con nhận
được, nếu xuất hiện nhiều bộ giống nhau thì chỉ giữ lại một bộ trong số các bộ giống nhau.
(6) Phép chọn: Phép chọn (selection) là phép toán cho kết quả là một quan hệ con gồm
một tập con các bộ của quan hệ r thỏa mãn điều kiện C nào đó, được ký hiệu và xác định như
sau:

C(r) = {t  r | C(t) = True (đúng)}

Trong đó, điều kiện C là một biểu thức boolean của các toán hạng, mỗi toán hạng là một
phép so sánh giữa hai biến là hai thuộc tính, hoặc giữa một biến là thuộc tính và một hằng, C cho
giá trị đúng hoặc sai đối với mỗi bộ của r, nếu đúng, bộ đó được chọn vào quan hệ mới c(r).

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 19


Các phép so sánh trong C bao gồm: = ; < ;  ; > ;  và , các phép toán logic gồm  (và), 
(hoặc),  (phủ định).

Như vậy, chọn của quan hệ r theo điều kiện C, ta được một quan hệ con c(r) với cùng
tập thuộc tính của r, mà chỉ chứa những bộ thỏa điều kiện C.
(7) Phép kết nối (join): Cho r là một quan hệ xác định trên tập thuộc tính {A1, A2,…, An} và
s là quan hệ xác định trên {B1, B2,…, Bm}. Giả sử r và s có một số thuộc tính chung (tức là  i, j
để Ai = Bj), khi đó kết nối của quan hệ r và quan hệ s là một quan hệ với các bộ là kết nối của các
bộ trong r với các bộ trong s có giá trị các thuộc tính chung bằng nhau. Kết nối của hai quan hệ r
và s được ký hiệu và xác định như sau:

r s = {(t,u) | t r, u s , t[Ai] = u[Bj]}

Như vậy, kết nối của hai quan hệ r và s là một quan hệ có tập thuộc tính là tất cả các
thuộc tính của cả r và s (với mỗi cặp thuộc tính chung cùng tên ở cả 2 quan hệ chỉ giữ lại 1
thuộc tính cho quan hệ mới), các bộ của quan hệ mới là ghép của 2 bộ trong r và s mà có giá trị
các thuộc tính chung là bằng nhau. Phép kết nối theo định nghĩa trên cũng gọi là kết nối tự
nhiên.
(8) Phép nửa kết nối (semi-join): Cho r là một quan hệ xác định trên tập thuộc tính {A1,
A2,…, An} và s là quan hệ xác định trên {B1, B2,…, Bm}. Giả sử r và s có một số thuộc tính chung
(tức là  i, j để Ai = Bj), khi đó nửa kết nối của quan hệ r và quan hệ s là một quan hệ được ký
hiệu và xác định như sau:

r s = R (r s)

Như vậy, nửa kết nối của hai quan hệ r và s thực chất là việc loại đi những bộ của r mà
không kết nối được với s.
Thí dụ 2.1. Cho các quan hệ r và s như sau:
r A B s B C D
1 2 1 2 1
2 4 2 4 0
3 6 2 6 1
4 8 0
Tính được kết nối r s:
r s A B C D
1 2 4 0
1 2 6 1
2 4 8 0
Dễ dàng kiểm tra được rằng với hai quan hệ trên thì: r s=s r. Bạn đọc có thể tự tính
và kiểm tra, xem như là bài tập.
Thí dụ 2.2. Với các quan hệ r và s như trong thí dụ 2.1, tính được các nửa kết nối:

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 20


r s A B s r B C D
1 2 2 4 0
2 4 2 6 1
4 8 0

2.1.3.2. Một số công thức trong đại số quan hệ


Trong CSDL phân tán, việc định giá câu hỏi đưa về việc tính toán các biểu thức đại số
quan hệ, là các biểu thức gồm các phép toán đại số quan hệ và các toán hạng là các quan hệ.
Ký hiệu r, s, t là các quan hệ còn R, S, T là các tập thuộc tính tương ứng của chúng.
Ta có các công thức tương đương dưới đây, có thể được dùng trong khi tính toán các biểu
thức đại số quan hệ.
(1) Luật giao hoán đối với tích Đề các và phép kết nối:

rs=sr
r s=s r
(2) Luật kết hợp đối với tích Đề các và phép kết nối:

(r  s)  t = r  (s  t)
(r s) t=r (s t)

(3) Các phép chiếu tương đương: Nếu r là một quan hệ trên tập thuộc tính  = {A1, A2,…,
An}, và giả sử {A1, A2,…, Ak}  {B1, B2, … Bm}  , tức là A1, A2,…, Ak phải ở trong số các
thuộc tính B1, B2, … Bm thì:

 
 A1 ,A2 ,...,Ak  B1 ,B2 ,...,Bm  r    A1 ,A2 ,...,Ak  r 

(4) Các phép chọn tương đương:

 
F1 F2  r   F2F2  r 

trong đó F1 và F2 là các điều kiện logic nào đó.


(5) Phép chiếu liên kết với phép chọn:


 A1 ,A2 ,...,Ak  F  r    F  A1 ,A2 ,...,Ak  r  
(6) Phép chọn liên kết với phép hợp, phép giao, phép trừ:

F  r  s   F  r   F  s 

F  r  s   F  r   F  s 

F  r  s   F  r   F  s 

(7) Phép chiếu liên kết với phép hợp, phép giao, phép trừ:

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 21


X  r  s   X  r   X s 

X  r  s   X  r   X s 

X  r  s   X  r   X s 

(8) Phép chọn liên kết với phép kết nối:

F  r s   F  r  F  s 

(9) Tính kết nối qua phép nửa kết nối:


r s  r  s s  s  r  r

(10) Tính nửa kết nối qua phép kết nối và phép chiếu:
r sr  R S  s 
s r s  R S  r 

với  R S  s  là chiếu của s trên tập thuộc tính chung của r và s, còn  R S  r  là chiếu của r trên
tập thuộc tính chung của r và s.

2.2. PHÂN ĐOẠN DỮ LIỆU TRONG CƠ SỞ DỮ LIỆU PHÂN TÁN

Có ba kiểu phân đoạn các quan hệ trong CSDL phân tán: phân đoạn ngang (gồm phân
đoạn ngang trực tiếp và phân đoạn ngang gián tiếp), phân đoạn dọc và phân đoạn hỗn hợp.

2.2.1. Sự phân đoạn ngang trực tiếp

Định nghĩa 2.1: Sự phân đoạn ngang trực tiếp là sự phân hoạch một quan hệ thành các
tập con các bộ; mỗi tập con là một quan hệ con được xác định bởi một phép chọn trên quan hệ
tổng thể.
Thí dụ 2.3: Giả sử có quan hệ R_VANG (Rượu vang)

R_VANG MARV V_NHO N_HIEU D_RUOU GIA

V1 AA 1982 13.2 12
V2 BB 1987 12.9 7
V3 AA 1984 12.8 10
V4 CC 1983 12.3 14
- Giải thích:
MARV: Mã loại rượu vang.
V_NHO: Vùng nho (vùng nguyên liệu, chẳng hạn vang Bordeaux thì có vùng nho là
Bordeaux, vang Đà Lạt thì vùng nho là Đà Lạt…).

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 22


N_HIEU: Niên hiệu (năm sản xuất).
D_RUOU: Độ rượu (nồng độ cồn của rượu vang).
GIA: Giá tiền 1 chai rượu (với đơn vị tiền tệ nào đó).
Ta có thể phân hoạch quan hệ R_VANG thành các đoạn con bằng phép phân đoạn
ngang trực tiếp nhờ các phép chọn sau:
R_VANG1 =N.HIEU<1984(R_VANG) và

R_VANG2 = =N.HIEU1984(R_VANG)
Kết quả nhận được là các đoạn R_VANG1 và R_VANG2, là các quan hệ con
như sau:
R_VANG1 MARV V_NHO N_HIEU D_RUOU GIA
V1 AA 1982 13.2 12
V4 CC 1983 12.3 14

R_VANG2 MARV V_NHO N_HIEU D_RUOU GIA


V2 BB 1987 12.9 7
V3 AA 1984 12.8 10

Sự phân đoạn của quan hệ R_VANG như trên sẽ là một phân tách không mất thông tin,
không trùng lặp và khôi phục lại được.

Thật vậy, vì R_VANG1  R_VANG2 =  nên các đoạn con của quan hệ R_VANG là
không trùng lặp.
Sự khôi phục có thể được thực hiện nhờ phép toán:

R_VANG = R_VANG1  R_VANG2


Chú ý rằng việc lựa chọn các điều kiện của phép chọn là quan trọng, vì chẳng hạn nếu ta
chọn điều kiện trong phép chọn xác định R_VANG2 là ‘N_HIEU > 1983’ thì khi đó tính không
trùng lặp sẽ bị vi phạm vì bộ thứ tư của quan hệ R_VANG sẽ thuộc về cả hai đoạn.
Nhận xét: Sự phân đoạn ngang sẽ tạo thuận lợi trong khai thác CSDL, chẳng hạn nếu tìm
kiếm các loại rượu vang có niên hiệu 1982 thì chỉ cần tham chiếu đến đoạn R_VANG1, số các
thao tác tìm kiếm sẽ giảm đi rất nhiều.

2.2.2. Sự phân đoạn ngang gián tiếp

Định nghĩa 2.2: Sự phân đoạn ngang gián tiếp là sự phân hoạch một quan hệ thành các
tập con các bộ; mỗi tập con là một quan hệ con được xác định bởi một phép nửa kết nối của
quan hệ tổng thể với mỗi đoạn của một quan hệ khác.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 23


Thí dụ 2.4: Giả sử có quan hệ T_THU (Tiêu thụ):

T_THU MAKH MARV NGAY D_DIEM S_LUONG


B1 V1 12/4/15 HANOI 8
B2 V2 25/9/15 HUE 2
B3 V3 12/4/15 HANOI 7
Giải thích:
- MAKH: mã khách hàng.
- MARV: mã loại rượu vang.
- NGAY: ngày/ tháng/ năm mua hàng.
- D_DIEM: địa điểm mua hàng.
- S_LUONG: số chai rượu được khách hàng mua.
Ta có thể phân hoạch quan hệ T_THU thành các đoạn con bằng phép phân đoạn ngang
gián tiếp nhờ các phép nửa kết nối với các đoạn của quan hệ R_VANG như sau:
T_THU1 = T_THU R_VANG1
T_THU2 = T_THU R_VANG2
Thực hiện nửa kết nối T_THU R_VANG1, nhận được quan hệ con T_THU1:

T_THU MAKH MARV NGAY D_DIEM S_LUONG


B1 V1 12/4 HANOI 5
B2 V2 25/9 HUE 2
B3 V3 12/4 HANOI 7

R_VANG1 MARV V_NHO N_HIEU D_RUOU GIA


V1 AA 1982 13.2 12
V4 CC 1983 12.3 14
Kết quả phép nửa kết nối T_THU R_VANG1= T_THU1:
T_THU1 MAKH MARV NGAY D_DIEM S_LUONG
B1 V1 12/4/15 HANOI 5

Thực hiện phép nửa kết nối T_THU R_VANG2, nhận được quan hệ con T_THU2:
T_THU MAKH MARV NGAY D_DIEM S_LUONG
B1 V1 12/4 HANOI 5
B2 V2 25/9 HUE 2
B3 V3 12/4 HANOI 7

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 24


R_VANG2 MARV V_NHO N_HIEU D_RUOU GIA
V2 BB 1987 12.9 7
V3 AA 1984 12.8 10

Kết quả phép nửa kết nối T_THU R_VANG2 = T_THU2:

T_THU2 MAKH MARV NGAY D_DIEM S_LUONG


B2 V2 25/9/15 HUE 2
B3 V3 12/4/15 HANOI 7

Sự phân đoạn của quan hệ T_THU như trên sẽ là một phân tách không mất thông tin,
không trùng lặp và khôi phục lại được.

Thật vậy, vì T_THU1  T_THU2 =  nên các đoạn con của quan hệ T_THU là không
trùng lặp

Sự khôi phục có thể được thực hiện nhờ phép toán:

T_THU = T_THU1  T_THU2


Nhận xét: Sự phân đoạn ngang gián tiếp như trên sẽ cho phép tăng hiệu năng của phép kết
nối các quan hệ R_VANG với T_THU, nếu ta bố trí trên cùng một trạm các cặp đoạn
(R_VANG1, T_THU1) và (R_VANG2, T_THU2) thì có thể thực hiện song song hai phép kết
nối R_VANG1 T_THU1 và R_VANG2 T_THU2, tăng hiệu năng xử lý dữ liệu.

2.2.3. Sự phân đoạn dọc

Định nghĩa 2.3: Sự phân đoạn dọc là sự phân hoạch một quan hệ thành các tập các bộ
con; mỗi tập là một quan hệ con được xác định bởi một phép chiếu cho quan hệ tổng thể.
Để khôi phục lại quan hệ tổng thể từ các đoạn dọc, cần thêm vào mỗi đoạn dọc một hay
nhiều thuôc tính chung làm khóa. Khi đó, việc khôi phục có được nhờ vào phép kết nối các đoạn
con theo sự bằng nhau của các thuộc tính chung. Do việc thêm vào các thuộc tính chung này mà
quy tắc không trùng lặp bị vi phạm, nhưng phải chấp nhận sự vi phạm này để đảm bảo sự khôi
phục lại của quan hệ tổng thể.
Thí dụ 2.5. Trở lại quan hệ R_VANG:
R_VANG MARV V_NHO N_HIEU D_RUOU GIA
V1 AA 1982 13.2 12
V2 BB 1987 12.9 7
V3 AA 1984 12.8 10
V4 CC 1983 12.3 14

Ta phân hoạch quan hệ này thành hai đoạn dọc nhờ các phép chiếu:

- Với phép chiếu: VANG1 = MARV, V.NHO, N.HIEU(R_VANG), ta được quan hệ:

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 25


VANG1 MARV V_NHO N_HIEU
V1 AA 1982
V2 BB 1987
V3 AA 1984
V4 CC 1983

- Với phép chiếu VANG2 = MARV, V.RUOU, GIA(R_VANG), ta được quan hệ:

VANG2 MARV D_RUOU GIA


V1 13.2 12
V2 12.9 7
V3 12.8 10
V4 12.3 14

Sự khôi phục quan hệ R_VANG nhờ phép kết nối:


R_VANG = VANG1 VANG2
Nhận xét: Sự phân đoạn dọc như trên làm thuận lợi cho việc xử lý các câu hỏi có liên quan
đến các thuộc tính được dùng để định nghĩa các đoạn. Chẳng hạn, để tìm các vùng nho và niên
hiệu của các loại rượu vang, ta chỉ cần hướng tới đoạn VANG1.

2.2.4. Sự phân đoạn hỗn hợp

Định nghĩa 2.4: Sự phân đoạn hỗn hợp là sự phân hoạch một quan hệ thành các tập con
các bộ con; các bộ con được xác định bởi sự phân đoạn dọc, còn các tập con được xác định bởi
sự phân đoạn ngang. Mỗi tập con này là một quan hệ con của quan hệ tổng thể.
Thí dụ 2.6. Trở lại quan hệ R_VANG đã xét trong thí dụ 2.5:

R_VANG MARV V_NHO N_HIEU D_RUOU GIA


V1 AA 1982 13.2 12
V2 BB 1987 12.9 7
V3 AA 1984 12.8 10
V4 CC 1983 12.3 14

Ta áp dụng phép phân đoạn hỗn hợp quan hệ này thành các đoạn con như sau:

- VANG1* =  MARV , D.RUOU , GIA (R_VANG)

- VANG2* =  N . HIEU 1984 ( MARV ,V . NHO ,N . HIEU ( R _ VANG))

- VANG3* =  N . HIEU  1984 ( MARV ,V . NHO ,N . HIEU ( R _ VANG))

- Với phép chiếu VANG1* =  MARV , D.RUOU , GIA (R_VANG), ta được quan hệ:

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 26


VANG2 MARV D_RUOU GIA
V1 13.2 12
V2 12.9 7
V3 12.8 10
V4 12.3 14

- Với phép chiếu VANG2* =  N . HIEU 1984 ( MARV ,V . NHO ,N . HIEU ( R _ VANG)) :

VANG2* MARV V_NHO N_HIEU


V1 AA 1982
V4 CC 1983

- Với phép chiếu VANG3* =  N . HIEU  1984 ( MARV ,V . NHO ,N . HIEU ( R _ VANG)) :

VANG3* MARV V_NHO N_HIEU


V2 BB 1987
V3 AA 1984
Như vậy, quan hệ R_VANG được phân đoạn hỗn hợp như sau:
MARV V_NHO N_HIEU MARV D_RUOU GIA
V1 AA 1982 V1 13.2 12
V4 CC 1983 V4 12.3 14
V2 BB 1987 V2 12.9 7
V3 AA 1984 V3 12.8 10
Sự khôi phục quan hệ ban đầu, trước hết phải bắt đầu từ các đoạn bên trong:

R_VANG = VANG1* (VANG2*  VANG3*)


Phân đoạn hỗn hợp cho phép tối ưu hóa các câu hỏi chọn-chiếu hay kết nối-chiếu.

2.3. ĐỊNH GIÁ CÁC CÂU HỎI PHÂN TÁN

2.3.1. Các bước định giá câu hỏi phân tán

Trước tiên ta sẽ làm rõ một số khái niệm:


- Câu hỏi phân tán là câu hỏi được diễn tả phù hợp hợp với các dữ liệu được mô tả bởi lược
đồ tổng thể của CSDL phân tán (Định nghĩa 1.3). Các câu hỏi phân tán thường được đưa ra ở
mức lược đồ ngoài tổng thể là các khung nhìn.
- Định giá một câu hỏi phân tán là quá trình biến đổi câu hỏi phân tán thành các câu hỏi có
thể trả lời được bằng việc thực hiện các xử lý cục bộ trên các trạm (gọi là một phương án thực thi
phân tán) để cho các kết quả phù hợp với yêu cầu của câu hỏi ban đầu.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 27


Để hiểu rõ quá trình định giá câu hỏi phân tán, chúng ta nhắc lại quá trình định giá câu hỏi
trong CSDL tập trung.

2.3.1.1. Định giá câu hỏi trong CSDL tập trung


Trong CSDL tập trung thì việc định giá câu hỏi được chia làm 3 giai đoạn và thực thi trên
một CSDL duy nhất.
- Giai đoạn 1: Sự phân tách
Giai đoạn này chuyển câu hỏi được diễn đạt bởi ngôn ngữ bậc cao (chẳng hạn SQL hay
QUEL) thành 1 câu hỏi được diễn đạt trong 1 biểu thức của đại số quan hệ. Biểu thức này được
gọi là câu hỏi chính tắc. Kết quả của giai đoạn này là một biểu thức hỏi biểu diễn bằng đại số
quan hệ, được gọi là câu hỏi chính tắc.
- Giai đoạn 2: Sự tối ưu hóa
Sự tối ưu ở đây được hiểu là nhằm làm cực tiểu một hàm chi phí nào đó (chẳng hạn về thời
gian tính toán, chi phí truyền dữ liệu...). Giai đoạn này sẽ biến đổi câu hỏi chính tắc nhận được
sau giai đoạn phân tách, thành các câu hỏi tương đương ngắn gọn hơn, và xác định một trình tự
tính toán tối ưu để thực hiện các phép toán trong biểu thức đại số quan hệ, cũng như xác định các
thuật toán tối ưu để truy cập, truyền tải dữ liệu. Kết quả của giai đoạn này là đưa ra một biểu
thức đại số quan hệ tương đương với câu hỏi chính tắc, nhưng tối ưu hóa việc định giá câu hỏi.
- Giai đoạn 3: Thực thi (thực hiện các phép toán trên CSDL tập trung)
Giai đoạn này sẽ thực hiện các phép toán của câu hỏi đã tối ưu để nhận được kết quả.

2.3.1.2. Định giá câu hỏi trong CSDL phân tán


Đối với CSDL phân tán thì việc định giá câu hỏi cũng tương tự như trên, nhưng sau giai
đoạn phân tách phải thêm một giai đoạn định vị, để biến đổi câu hỏi chính tắc (câu hỏi phân tán)
thành một câu hỏi chính tắc tương đương được diễn đạt trên các đoạn, dựa trên các thông tin của
lược đồ sắp đặt.
Như vậy, việc định giá câu hỏi phân tán sẽ gồm 4 giai đoạn: Giai đoạn 1: Sự phân tách,
Giai đoạn 2: Sự định vị, Giai đoạn 3: Sự tối ưu hóa, Giai đoạn 4: Thực thi phân tán (thực hiện
các phép toán trên các trạm). Các giai đoạn này được minh họa trong sơ đồ dưới đây (Hình 2.1)
Giai đoạn phân tách (giai đoạn 1) được thực hiện hoàn toàn giống như việc định giá các
câu hỏi trong CSDL tập trung, tức là từ câu hỏi ban đầu, cần xác định một biểu thức hỏi biểu
diễn bằng đại số quan hệ.
Giai đoạn thực thi phân tán (giai đoạn 4) cũng giống như trong CSDL tập trung, chỉ khác là
phải tính toán các biểu thức đại số quan hệ trên các trạm (các CSDL cục bộ).
Trong các phần dưới đây, chúng ta chỉ tập trung phân tích 2 giai đoạn định vị và tối ưu hóa
vì đây là hai giai đoạn cần có những xử lý đặc biệt đối với CSDL phân tán.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 28


Vào: Câu hỏi tổng thể
Câu hỏi phân tán
bằng ngôn ngữ SQL

Cho kết quả là một


Sự Phân tách
câu hỏi chính tắc

Câu hỏi chính tắc được


Sự Định vị
định vị trên các đoạn
Lược đồ
Sắp đặt
Xác định chiến lược
Sự Tối ưu hóa
thực thi tối ưu

Tính toán các biểu


Thực thi phân tán
thức đại số quan hệ

Ra:
Câu trả lời

Hình 2.1. Các bước định giá một câu hỏi phân tán

2.3.2. Định vị câu hỏi phân tán

Từ câu hỏi tổng thể được cho ở ngôn ngữ bậc cao (chẳng hạn SQL), sau giai đoạn phân
tách ta nhận được một câu hỏi chính tắc (ta cũng gọi câu hỏi chính tắc này là câu hỏi phân tán),
giai đoạn tiếp theo là định vị câu hỏi, đó là một quá trình gồm 2 bước: diễn đạt câu hỏi chính tắc
trên các đoạn và sau đó là giản lược câu hỏi này.
Thông tin cần thiết cho sự định vị câu hỏi phân tán được lưu trữ trong lược đồ
sắp đặt.

2.3.2.1. Diễn đạt câu hỏi chính tắc trên các đoạn.

Câu hỏi chính tắc được diễn đạt trên các đoạn, là một biểu thức đại số quan hệ tương
đương với câu hỏi chính tắc ban đầu, nhận được bằng việc thay thế mỗi quan hệ tổng thể trong
câu hỏi phân tán bằng sự khôi phục quan hệ đó từ các đoạn của nó bằng một phép toán đại số
quan hệ xác định sự khôi phục. (đôi khi gọi phép toán này là yêu cầu khôi phục)
Thí dụ 2.7. Giả sử có các quan hệ R_VANG và T_THỤ trong các thí dụ trên đây. Hãy xét
câu hỏi phân tán:
“Tìm các vùng nho của các loại rượu vang được tiêu thụ tại HANOI”. (*)
Rõ ràng câu hỏi này viện dẫn tới các quan hệ R_VANG và T_THỤ đã biết, và giả sử các
quan hệ này đã được phân đoạn:

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 29


VANG1 =  MARV , V . NHO , N .HIEU (R_VANG)

VANG2 =  MARV , D.RUOU , GIA (R_VANG)

T_THU1 =  D. DIEM  HANOI (T_THU)

T_THU2 =  D. DIEM  HANOI (T_THU).


Ta có các quan hệ đã phân đoạn như sau:
VANG 1 MARV V_NHO N_HIEU VANG 2 MARV D_RUOU GIA
V1 AA 1982 V1 13.2 12
V2 BB 1987 V2 12.9 7
V3 AA 1984 V3 12.8 10
V4 CC 1983 V4 12.3 14

T_THU1 MAKH MARV NGAY D_DIEM S_LUONG


B1 V1 12/4 HANOI 5

B3 V3 12/4 HANOI 7

T_THU2 MAKH MARV NGAY D_DIEM S_LUONG


B2 V2 25/9 HUE 2

Câu hỏi chính tắc được xác định như sau:

 V.NHO (D.DIEM  HANOI (R_VANG T_THU)) (1)

Do phép chiếu chỉ liên quan đến quan hệ R_VANG, còn phép chọn chỉ liên quan đến quan
hệ T_THỤ, cho nên biểu thức (1) có thể viết lại là:

 V.NHO {[ MARV , V.NHO (R_VANG)] [ MARV (D.DIEM  HANOI (T_THU))]} (2)

Biểu thức (2) là câu hỏi chính tắc nhận được từ câu hỏi phân tán (*) sau giai đoạn phân
tách. Để diễn đạt câu hỏi này, ta chỉ cần khôi phục các quan hệ tổng thể từ các đoạn của nó, tức
là trong (2) ta thay: R_VANG bởi VANG1 VANG2 và thay T_THU bởi T_THU1 
T_THU2.
Khi đó ta có câu hỏi chính tắc được diễn đạt trên các đoạn là biểu thức (3)
dưới đây:

 V.NHO{[ MARV , V.NHO (VANG1 VANG2)]


[ MARV (D.DIEM  HANOI (T_THU1T_THU2))]} (3)

Biểu thức (3) trên đây là câu hỏi chính tắc đã được diễn đạt trên các đoạn, có thể được biểu
diễn bởi cây đại số quan hệ sau (cây T1)

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 30


Hình 2.2. Cây đại số quan hệ T1 của câu hỏi chính tắc (3)

2.3.2.2. Giản lược câu hỏi


Câu hỏi chính tắc sau khi định vị là một biểu thức đại số quan hệ, có thể thực hiện biểu
thức này trên các trạm. Tuy nhiên, nói chung câu hỏi chính tắc sau khi định vị có thể chứa đựng
các phép toán vô ích và có thể giản lược nhờ các quy tắc trong đại số quan hệ, từ đó có thể cấu
trúc lại cây đại số quan hệ, để được các biểu thức tương đương nhưng đơn giản hơn.
Các quy tắc giản lược cho các biểu thức đại số quan hệ:
(1) Các phép toán một ngôi (chiếu và chọn) càng đẩy xuống gần các đoạn (tại các trạm)
càng tốt, vì sẽ làm giảm kích thước các quan hệ trước khi thực hiện các phép toán 2 ngôi.
(2) Một phép chọn trên một đoạn ngang với điều kiện của phép chọn mâu thuẫn với điều
kiện của sự phân đoạn ngang sẽ là vô ích (vì cho kết quả là rỗng).
(3) Một phép chọn trên một đoạn ngang với điều kiện của phép chọn trùng với điều kiện
của sự phân đoạn ngang sẽ là vô ích (vì cho kết quả bằng đoạn đó).
(4) Một phép chiếu của một đoạn dọc mà tất cả các thuộc tính chiếu (trừ thuộc tính chung
cho sự khôi phục) đều không thuộc về đoạn đó sẽ là vô ích (vì cho kết quả
là rỗng).
Các quy tắc trên dựa trên tính giao hoán của phép chiếu với phép kết nối, tính giao hoán
của phép chọn và phép hợp đã trình bày ở phần trên,
Chẳng hạn sau khi thực hiện quy tắc giản lược 1 cho câu hỏi (3): đưa các phép chiếu và
chọn xuống càng thấp càng tốt, ta có cây đại số quan hệ T2 tương đương
với T1:

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 31


Hình 2.3. Cây đại số quan hệ T2 tương đương cây T1 của câu hỏi chính tắc (3)
Tiếp tục áp dụng các quy tắc giản lược:
- Do  SHRV ,V _ NHO (VANG2) =  nên ta loại bỏ cây con tương ứng của nó

- Do  DDIEM  "HANOI " (T_THU2) =  nên ta loại bỏ cây con tương ứng của nó.
Cuối cùng, sau các phép giản lược, ta nhận được cây đại số quan hệ T3 của câu hỏi phân
tán đã được định vị và giản lược là:

Hình 2.4. Cây đại số quan hệ T3 của câu hỏi chính tắc đã định vị và giản lược

Từ cây T3 (tương đương T2 và T1), ta xác định được câu hỏi chính tắc đã được định vị và
giản lược cho bởi biểu thức sau:
 V . NHO { MARV , VNHO (VANG1)  MARV (T_THU1)} (4)
Như vậy, từ câu hỏi ban đầu (bằng ngôn ngữ bậc cao) ta xác định được biểu thức (4) là câu
hỏi chính tắc đã được giản lược và định vị trên các đoạn. Việc định giá câu hỏi (*) ban đầu được
thực thi nhờ thực hiện biểu thức (4), theo các bước sau:

(1) Tính phép chiếu:  MARV , VNHO (VANG1), đặt bằng (P1):

(P1) MARV V_NHO


V1 AA
V2 BB
V3 AA
V4 CC

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 32


(2) Tính phép chiếu:  MARV (T_THU1), đặt bằng (P2):

(P2) MARV
V1
V3

(3) Kết nối (P1) với (P2):


(P1) (P2) MARV V_NHO
V1 AA
V3 AA
(4) Thực hiện phép chiếu trên thuộc tính ‘V_NHO’ cho quan hệ (P1) (P2), nhận được
kết quả cuối cùng (quan hệ KQ):
(KQ) V_NHO
AA

Từ đó có câu trả lời: Các loại rượu vang được tiêu thụ tại Hà Nội có vùng nho ‘AA’.

2.3.3. Tối ưu hóa câu hỏi phân tán

Sau giai đoạn định vị, câu hỏi phân tán (là một biểu thức đại số quan hệ, hay còn gọi là câu
hỏi chính tắc) đã được diễn đạt trên các đoạn, tức là biểu thức đại số quan hệ chỉ chứa các quan
hệ con là các đoạn của các quan hệ tổng thể được đặt trên các trạm, vì vậy việc tính các biểu thức
đại số quan hệ này là có thể thực hiện được từ các CSDL cục bộ. Tuy nhiên, có nhiều cách tính
tương đương cho mỗi biểu thức đại số quan hệ, mỗi cách tính đó gọi là một chiến lược thực thi
câu hỏi phân tán.
Khái niệm: Tối ưu hóa câu hỏi phân tán là việc xác định một chiến lược thực thi câu hỏi
phân tán, làm cực tiểu hóa một hàm chi phí nào đó.
Với mỗi câu hỏi phân tán, sẽ có rất nhiều chiến lược thực thi câu hỏi, bài toán chọn một
chiến lược tối ưu là bài toán thuộc lớp NPC (NP- đầy đủ), nói chung rất khó để chọn được một
chiến lược tối ưu hóa đúng tuyệt đối. Cho nên mục tiêu của tối ưu hóa câu hỏi phân tán là lựa
chọn một chiến lược gần với tối ưu hóa, để tránh các chiến lược dẫn đến một chi phí quá lớn.
Để đơn giản, ta chọn hàm chi phí là thời gian thực thi câu hỏi và cũng hạn chế các phép
toán trong câu hỏi chỉ là ‘phép chiếu (P)’, ‘phép chọn (S)’ và phép ‘kết nối (J)’. Các biểu thức
đại số quan hệ như vậy thường gọi là ‘biểu thức P-S-J’.
Giả sử rằng thời gian tính toán với các quan hệ trên cùng một trạm là không đáng kể. (Với
các phép chiếu và chọn, là các phép toán ‘1 ngôi’, chỉ thực hiện trên một quan hệ con (một đoạn)
trên một trạm, nên thời gian là không đáng kể). Như vậy thời gian tính toán chủ yếu lại là thời
gian truyền dữ liệu giữa các trạm để thực hiện các phép kết nối. Thời gian truyền dữ liệu giữa
các trạm tỷ lệ với kích thước các quan hệ (tính bằng số phần tử dữ liệu trong mỗi quan hệ) tham
gia vào phép kết nối. Vì vậy từ nay ta gọi chi phí cần tối ưu là chi phí truyền tải dữ liệu giữa các
trạm, chi phí này tỷ lệ với số phần tử dữ liệu cần truyền tải giữa các trạm.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 33


Với những giả thiết và phân tích trên đây, việc tối ưu hóa câu hỏi phân tán sẽ là tối ưu hóa
việc tính các kết nối trong quá trình thực thi phân tán. Giả sử rằng cần tính kết nối của hai quan
hệ (kết nối của nhiều quan hệ cũng phải tính lần lượt kết nối của từng cặp quan hệ), mỗi quan hệ
có thể ở mỗi trạm khác nhau và trước khi tính ta phải chuyển 1 quan hệ về trạm của quan hệ kia
để tính. Như vậy chiến lược tối ưu câu hỏi phân tán là một chiến lược thực thi câu hỏi sao cho
chi phí truyền dữ liệu giữa các trạm là nhỏ nhất.
Ta sẽ lần lượt xét 2 vấn đề cần thực hiện để giảm chi phí truyền dữ liệu:
(1) Xác định một trình tự kết nối tối ưu của nhiều quan hệ
(2) Rút gọn kích thước các quan hệ trước khi kết nối.

2.3.3.1. Xác định trình tự kết nối tối ưu


Giả sử ta phải tính kết nối của các quan hệ r1, r2, r3 và r4 bằng một dãy các kết nối từng cặp.
Trước tiên ta có thể tính r1 r2 để nhận được một quan hệ, giả sử là có năm trăm bộ. Sau đó ta
kết nối quan hệ trên với r3 và nhận được một quan hệ mới với một ngàn bộ, cuối cùng ta kết nối
quan hệ gồm một ngàn bộ này với r4 và nhận được kết quả cuối cùng chỉ có 100 bộ. Trình tự kết
nối trên đây dưđược xác định bởi biểu thức:

 r
1 r2  r3  r4 (*)

Rõ ràng trình tự kết nối này là chưa tốt, vì có các kết quả trung gian có số bộ lớn hơn số bộ
ở kết quả cuối cùng. Điều này sẽ lãng phí công sức để tính toán, lưu trữ và truyền tải các quan hệ
rất lớn trong quá trình tính toán, mà kết quả lại là một quan hệ có số bộ nhỏ hơn nhiều.
Với 4 quan hệ trên có thể có nhiều trình tự kết nối khác, chẳng hạn
 r1 r2   r3 r4  ,... Do phép kết nối có tính giao hoán, nên dù kết nối theo trình tự nào thì
việc kết nối 4 quan hệ trên vẫn cho kết quả là một quan hệ duy nhất với 100 bộ, vậy vấn đề đặt ra
là có thể tìm một trình tự kết nối tối ưu, trong đó mọi quan hệ kết quả trung gian có số bộ không
lớn hơn số bộ ở kết quả cuối cùng.
Định nghĩa 2.5: Một trình tự kết nối tối ưu cho các quan hệ r1, r2, ... , rk là một thứ tự thực
hiện các phép kết nối sao cho mọi kết quả trung gian có số bộ không lớn hơn số bộ ở kết quả
cuối cùng.
Việc xác định một trình tự kết nối tối ưu là khá phức tạp [4], chúng ta chưa trình bày trong
giáo trình này, mà chỉ minh họa vấn đề này bằng một thí dụ.
Thí dụ 2.7. Giả sử cần tính kết nối: r1 r2 r3 , với các quan hệ được cho như sau:

r1 A B C r2 C D E r3 B C D F
1 3 5 5 7 10 3 5 7 1
1 4 5 5 8 10 4 5 8 2
2 3 5 5 9 11 3 5 9 3
2 4 6 6 8 11 4 6 8 4
Ta có thể tính dãy kết nối trên theo nhiều thứ tự: (r1 r2) r3, r1 (r2 r3),
(r1 r3) r2,… có tất cả 3! = 6 trình tự kết nối. Do phép kết nối có tính giao hoán, nên mọi trình

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 34


tự kết nối đều cho kết quả như nhau, vấn đề là ta cần chọn một trình tự kết nối tối ưu, tức là trình
tự kết nối sao cho số bộ ở mọi kết quả trung gian không lớn hơn số bộ ở kết quả cuối cùng.
Với trình tự 1: ta thực hiện phép kết nối trên theo thứ tự: (r1 r2) r3,
- Bước 1: tính r1 r2, cho kết quả kết nối của 2 quan hệ (trong ngoặc đơn)
r1 r2 A B C D E
1 3 5 7 10
1 3 5 8 10
1 3 5 9 10
1 4 5 7 10
1 4 5 8 10
1 4 5 9 10
2 3 5 7 10
2 3 5 8 10
2 3 5 9 10
2 4 6 8 11

Ta nhận được kết quả kết quả trung gian là một quan hệ có 10 bộ.
- Bước 2: tính (r1 r2) r3, cho kết quả cuối cùng của kết nối của 3 quan hệ
(r1 r2) r3 A B C D E F
1 3 5 7 10 1
1 3 5 9 10 3
1 4 5 8 10 2
2 3 5 7 10 1
2 3 5 9 10 3
2 4 6 8 11 4

Theo trình tự kết nối này, ta có số bộ ở kết quả trung gian là 10 bộ, nhiều hơn số bộ ở kết
quả cuối cùng là 6 bộ, vậy đây không phải là trình tự kết nối tối ưu.
Với trình tự 2: ta thực hiện phép kết nối trên theo thứ tự: r1 (r2 r3)
- Bước 1: tính r2 r3 cho kết quả kết nối của 2 quan hệ (trong ngoặc đơn)
r2 r3 B C D E F
3 5 7 10 1
4 5 8 10 2
3 5 9 11 3
4 6 8 11 4
Đây là kết quả của kết nối r2 r3, cho một quan hệ trung gian gồm 4 bộ.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 35


- Bước 2: tính r1 (r2 r3): cho kết quả kết nối của 3 quan hệ (kết quả cuối cùng)
r1 (r2 r3) A B C D E F
1 3 5 7 10 1
1 3 5 9 10 3
1 4 5 8 10 2
2 3 5 7 10 1
2 3 5 9 10 3
2 4 6 8 11 4

Theo trình tự kết nối này, ta có số bộ ở kết quả trung gian là 4 bộ, số bộ ở kết quả cuối
cùng là 6 bộ, vậy số bộ ở kết quả trung gian không lớn hơn số bộ ở kết quả cuối cùng. Vậy đây là
trình tự kết nối tối ưu.

2.3.3.2. Rút gọn các quan hệ nhờ phép nửa kết nối
Một phép kết nối có thể được thực hiện bằng một tổ hợp các phép nửa kết nối và kết nối.
Áp dụng các công thức tương đương trong đại số quan hệ, ta có:

- r s  r  s s) (hoặc r s  s  r  r), trong đó có thể tính các nửa kết nối


qua phép kết nối và phép chiếu:

- r sr  R S  s  (hoặc s  r  s  R S  r ), với  R S  s  là chiếu của quan hệ s


trên tập thuộc tính chung của r và s, còn  R S  r  là chiếu của quan hệ r trên tập thuộc tính chung
của r và s.
Giả sử ta cần kết nối 2 quan hệ r và s là các quan hệ đặt ở các trạm khác nhau, mỗi quan hệ
có tương ứng T(r) và T(s) phần tử dữ liệu. Ta có thể tính r s bằng 2 cách:
Cách 1. Kết nối trực tiếp: Do phép kết nối là phép toán 2 ngôi, ta cần chuyển r sang trạm
chứa s hoặc chuyển s sang trạm chứa r (tùy theo Tr < Ts, hoặc ngược lại) sau đó thực hiện phép
kết nối tại trạm chứa cả r và s. Chi phí cho phép kết nối sẽ tỷ lệ với số phần tử cần truyền tải, để
đơn giản ta coi chi phí bằng số phần tử này.
- Vậy chi phí theo cách kết nối trực tiếp (costtt) là:
costtt (r, s) = min {T(r), T(s)} (1)
Cách 2. Chiến lược nửa kết nối: Áp dụng tính kết nối qua phép nửa kết nối (còn gọi là kết
nối theo chiến lược nửa kết nối), giả sử ta áp dụng công thức r s  r  s s ta thực hiện
các bước sau:

(1) Tính  R S  s  tại trạm chứa quan hệ s, không phải tryền dữ liệu, chi phí bằng 0.

(2) Chuyển  R S  s  sang trạm chứa r, chi phí là T’(s), số phần tử dữ liệu của  R S  s 

(3) Tính r s = r   R S (s) tại trạm chứa r, chi phí bằng 0

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 36


(4) Chuyển r s vừa tính được sang trạm chứa s, chi phí là T’’(r), bằng số phần tử của r s

(5) Tính kết nối tại vị trí của s theo công thức: r s  r  s s với chi phí bằng 0.

Trong 5 bước trên, chi phí truyền dữ liệu mà ta quan tâm chỉ phát sinh ở bước 2 và bước 4,
vậy tổng chi phí truyền dữ liệu theo chiến lược nửa kết nối là T’(s) + T’’(r) (hoặc T’(r) + T’’(s),
nếu áp dụng công thức r  s  (s  r )  r

Vậy ta có chi phí theo chiến lược nửa kết nối (costnkn) là:
costnkn (r, s) = min {T’(s) + T’’(r) ; T’(r) + T’’(s)} (2)
Vậy chiến lược nửa kết nối sẽ tốt hơn kết nối trực tiếp, nếu có (2) < (1), tức là:
min {T’(s) + T’’(r) ; T’(r) + T’’(s)} < min {T(r), T(s)} (3)
Những điều kiện làm cho bất đẳng thức (3) thỏa mãn là:
(i) r và s có kích thước gần như nhau,
(ii) T’(s) và T’’(s) có kích thước nhỏ hơn nhiều so với T(s) (tương tự: T’(r) và T’’(r) có
kích thước nhỏ hơn nhiều so với T(r)).
Những điều kiện trên trong thực tế thường được thỏa mãn, chẳng hạn, do các quan hệ
thường có rất ít các thuộc tính chung, do đó T’(s) thường rất nhỏ so với T(s), mặt khác quan hệ s
thường chỉ có một số ít bộ kết nối được với r, cho nên T’’(s) cũng rất nhỏ so với T(s)...
Vì vậy, có thể khẳng định rằng chiến lược nửa kết nối thường có chi phí nhỏ hơn nhiều so
với kết nối trực tiếp.
Thí dụ 2.8. Trong CSDL phân tán, có các quan hệ r, s đặt tại hai trạm ở cách xa nhau:
r A B E s B C D F
7 4 1 4 6 7 1
8 5 2 5 6 7 2
7 6 3 4 11 9 3
9 7 4 5 11 9 4
8 8 5

Hãy tính kết nối của r với s theo cách trực tiếp và theo chiến lược nửa kết nối. Đánh giá chi
phí theo mối cách kết nối.
Giải:
(a) Kết nối trực tiếp: Do T(r) < T(s) nên ta chuyển r sang trạm chứa s và thực hiện kết nối:
r s A B C D E F
7 4 6 7 1 1
8 5 6 7 2 2
7 4 11 9 1 3
8 5 11 3 2 4

Chi phí truyền dữ liệu theo cách kết nối trực tiếp: costtt (r, s) = min {T(s), T(r)} = 15.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 37


(b) Sử dụng chiến lược nửa kết nối qua các bước:

(1) Tính  RS (s) tại trạm chứa s:

 R S  s  B

4
5

(2) Chuyển  R S  s  sang trạm chứa r, chi phí ở bước này là: T’(s) = 2.

(3) Tính r  s  r  R S  s  tại trạm chứa r:

r s A B E
7 4 1
8 5 2

(4) Chuyển r  s sang trạm chứa s, chi phí ở bước này là: T’’(r) = 6.

(5) Tính kết nối tại trạm chứa s theo công thức r s  r  s s, nhận được kết quả:

r s A B C D E F
7 4 6 7 1 1
8 5 6 7 2 2
7 4 11 9 1 3
8 5 11 3 2 4

Tổng chi phí theo chiến lược nửa kết nối: costnkn (r, s) = T’(s) + T’’(r) = 8
Nhận xét: Việc dùng chiến lược nửa kết nối sẽ làm tăng số phép toán so với các kết nối
trực tiếp, tuy nhiên lại giảm đáng kể kích thước các quan hệ tham gia vào các phép kết nối.
Chính vì vậy chi phí theo chiến lược nửa kết nối thường nhỏ hơn nhiều so với chi phí theo cách
kết nối trực tiếp.
Chú ý 2.3.3. Nếu kích thước quan hệ s nhỏ hơn kích thước quan hệ r, tức là T(s) < T(r) thì
ta cần chuyển s sang trạm chứa r. Khi đó ta sử dụng các công thức: r s  s  r  r và
s r s  R S  r  . Các bước thực hiện trong chiến lược nửa kết nối hoàn toàn tương tự như
đã trình bày trên đây, chỉ cần đổi vai trò r và s.

2.4. QUẢN LÝ CÁC GIAO DỊCH PHÂN TÁN

2.4.1. Khái niệm về giao dịch trong CSDL phân tán

- Khái niệm giao dịch trong CSDL

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 38


+ Một giao dịch (transaction) được tạo bởi một dãy các thao tác đọc và ghi trên CSDL
cùng với các bước tính toán cần thiết. (có thể hiểu giao dịch là thực hiện 1 chương trình, còn thao
tác là thực hiện câu lệnh trong chương trình đó).
+ Định nghĩa khác của Ullman [9]: Giao dịch là sự thực hiện của một chương trình có các
câu vấn tin truy xuất đến CSDL.

- Hoạt động của một giao dịch trong CSDL

Một giao dịch sẽ đọc/ghi một đơn vị dữ liệu (mục dữ liệu | item) của CSDL thông qua một
bộ đệm của giao dịch (vùng làm việc riêng - private work space). Mỗi giao dịch có thể thực hiện
các thao tác tính toán dẫn đến thay đổi giá trị của dữ liệu, nhưng những thay đổi này sẽ không tác
động ngay vào CSDL cho đến khi các giá trị mới được ghi vào CSDL nhờ một thủ tục hợp thức
(commited) khi kết thúc giao dịch. Giao dịch chỉ đọc sẽ không làm thay đổi CSDL.
- Các giao dịch phân tán
Các giao dịch được thực hiện trên một CSDL phân tán gọi là các giao dịch phân tán. Một
giao dịch phân tán bao gồm nhiều giao dịch con thực hiện trên các trạm.
Tính nguyên tố của một giao dịch phân tán được hiểu là giao dịch đó đã được thực hiện
trọn vẹn khi tất cả các giao dịch con của nó đều đã được thực hiện, hoặc trái lại, nếu có dù chỉ
một giao dịch con trên một trạm chưa được thực hiện thì toàn bộ giao dịch phân tán là chưa được
thực hiện (chưa commited, chưa được ghi các thay đổi vào CSDL). Như vậy giao dịch phân tán
chỉ có hai trạng thái kết quả: đã thực hiện hoặc không thực hiện. Các thủ tục hợp thức hóa sẽ
đảm bảo tính nguyên tố của các giao dịch phân tán.
Một số thí dụ vể giao dịch phân tán:
+ Truy vấn tài khoản/chuyển tiền qua dịch vụ Internet banking, rút tiền ở
máy ATM...
+ Mua vé/đặt chỗ máy bay (qua mạng) ...
- Giao dịch và sự nhất quán của CSDL
Mọi CSDL tập trung hay phân tán luôn luôn là nhất quán (thỏa mãn các ràng buộc toàn
vẹn) trước và sau khi thực hiện một giao dịch. Trong khi giao dịch đang thực hiện, CSDL có thể
tạm thời không nhất quán, nhưng sau khi thực hiện xong giao dịch, CSDL được cập nhật và phải
ở trạng thái nhất quán, hệ thống sẽ hủy bỏ giao dịch nếu kết quả cập nhật của giao dịch làm cho
CSDL trở nên không nhất quán. Chẳng hạn, nếu nhập tuổi của cha ít hơn tuổi của con, hay
chuyển khoản số tiền lớn hơn số dư thì sẽ làm cho CSDL trở nên không nhất quán, trong trường
hợp này giao dịch bị hủy.

2.4.2 Khái niệm về sự đặt khóa (locking)

- Khái niệm mục dữ liệu


Để quản lý các hoạt động tương tranh (các hoạt động đồng thời) trên một CSDL, người ta
chia CSDL thành các đơn vị dữ liệu nhỏ nhất, cần được truy xuất có điều khiển, gọi là các mục
dữ liệu (items) hay các hạt dữ liệu.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 39


Bản chất và kích thước của các mục dữ liệu do người thiết kế hệ thống quyết định. Chẳng
hạn, đối với mô hình quan hệ, ta có thể chọn các mục dữ liệu lớn như các quan hệ, hay chọn các
mục dữ liệu nhỏ hơn như các bộ hay thành phần của các bộ. Một hệ thống hạt mịn (fine -
grained) sẽ sử dụng các mục dữ liệu nhỏ, còn hệ thống hạt thô (coarse grained) sẽ sử dụng các
mục dữ liệu có kích thước lớn.
Việc chọn kích thước mục dữ liệu là rất quan trọng trong việc quản lý CSDLPT: nếu chọn hạt
thô sẽ giảm được chi phí quản lý các mục dữ liệu, trái lại nếu chọn hạt mịn sẽ cho phép nhiều giao
dịch thực hiện song song. Xác suất để các giao dịch có yêu cầu truy xuất cùng một mục dữ liệu với
hệ thống hạt mịn sẽ nhỏ hơn khi chọn hệ thống hạt thô.
- Việc lựa chọn kích thước mục dữ liệu phụ thuộc vào thao tác điển hình của các giao dịch
trong CSDL:
- Nếu thao tác điển hình là đọc ghi các bộ của một quan hệ qua một chỉ mục: ta chọn mỗi
bộ làm một mục dữ liệu.
- Nếu thao tác điển hình là kết nối các quan hệ, ta chọn mỗi quan hệ làm một mục dữ liệu
(vì phải truy xuất tất cả các bộ của mỗi quan hệ cho một phép kết nối).
- Khái niệm sự đặt khóa (locking)
Sự đặt khóa (còn gọi là khóa chốt, hay locking) trên một mục dữ liệu là việc hệ thống trao
quyền truy xuất mục dữ liệu đó cho một giao dịch, hoặc thu hồi lại quyền này.
Có hai loại mô hình khóa: Mô hình khóa cơ bản và mô hình khóa đọc/ghi.
+ Mô hình khóa cơ bản: gồm các khóa Lock và UnLock:
Ký hiệu LOCK A là chỉ mục dữ liệu A đã được trao quyền truy xuất cho một giao dịch T,
giao dịch T có toàn quyền đọc hoặc ghi trên A.
Ký hiệu UNLOCK A là chỉ mục dữ liệu A đã thu hồi quyền truy xuất của giao dịch T trước
đó và sẵn sàng trao quyền truy xuất cho một giao dịch mới.
+ Mô hình khóa đọc/ghi: gồm các khóa Read Lock, Write Lock và UnLock:
Ký hiệu RLOCK A (khóa đọc): Cho phép giao dịch T chỉ đọc mục dữ liệu A, mà không
được phép ghi trên A.
Ký hiệu WLOCK A (khóa ghi): Cho phép giao dịch T được đọc và ghi trên mục dữ liệu A,
như vậy khóa ghi WLOCK A là tương đương khóa cơ bản LOCK A.
Tại mỗi thời điểm, chỉ có một tập con các mục dữ liệu được đặt khóa. Bộ quản lý khóa sẽ
lưu trữ các khóa hiện hành trong “bảng khóa”, là tập các bộ sau:
Lock table = {(I, L, T)}
Trong đó, mỗi bộ của bảng gồm 3 thành phần I, L, T với ý nghĩa như sau: Giao dịch T
được đặt một khóa L (với L là khóa LOCK, RLOCK hoặc WLOCK) trên mục dữ liệu I. Như vậy
khóa L không chỉ gắn với mỗi giao dịch T, mà còn gắn với mục dữ liệu I. Nếu L = Null có nghĩa
là tại thời điểm đó mục dữ liệu I chưa có giao dịch nào đặt khóa.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 40


2.4.3. Lịch biểu trong các giao dịch phân tán

- Các khái niệm về Lịch biểu trong giao dịch phân tán (Schedule)
(1) Lịch biểu cho một tập các giao dịch là một thứ tự (các bước) thực hiện các thao tác cơ
bản (như đặt khóa, đọc, ghi...) của các giao dịch trên một CSDL phân tán. Kết quả của một lịch
biểu là kết quả được cập nhật vào CSDL sau khi thực hiện các giao dịch theo lịch biểu này.
(2) Lịch biểu gọi là tuần tự nếu tất cả các bước thao tác của cùng một giao dịch xảy ra liền
nhau. Lịch biểu tuần tự luôn cho kết quả mong muốn (kết quả đúng).
(3) Lịch biểu gọi là khả tuần tự nếu các bước của các giao dịch khác nhau có
thể thực hiện xen kẽ nhau, nhưng cho kết quả như kết quả của một lịch biểu tuần tự (kết quả
đúng).
(4) Lịch biểu gọi là bất khả tuần tự nếu các bước của các giao dịch khác nhau có thể thực
hiện xen kẽ nhau, nhưng cho kết quả khác với kết quả của một lịch biểu tuần tự (kết quả sai).
Thí dụ 3.1: Giả sử có 2 giao dịch T1 và T2, thực hiện các thao tác theo chương trình P như
sau:

T1: Re ad A; A : A  10; Write A; Re ad B; B : B  10; Write B;


P:
 T2 : Re ad B; B : B  20; Write B; Re ad C; C : C  10; Write C;
Xét 3 lịch biểu của 2 giao dịch T1 và T2:
(a) T1 T2 (b) T1 T2 (c) T1 T2

READ A READ A READ A

A:= A-10 READ B A:= A-10

WRITE A A:= A-10 READ B

READ B B:= B-20 WRITE A

B:= B+10 WRITE A B:= B-20

WRITE B WRITE B READ B

READ B READ B WRITE B

B := B-20 READ C B:= B+10

WRITE B B := B+10 READ C

READ C C := C+20 WRITE B

C := C+20 WRITE B C:= C+20

WRITE C WRITE C WRITE C

Hình 3.1. Các lịch biểu (a), (b) và (c) của hai giao dịch T1, T2

Các giao dịch T1 và T2 có thể hiểu là dịch vụ chuyển tiền giữa các tài khoản A, B và C, cụ
thể A chuyển 10 (đơn vị tiền), B chuyển 10 còn C nhận 20.
Với mọi lịch biểu tuần tự thì tổng A + B + C không đổi trước và sau khi thực hiện các giao
dịch. Chẳng hạn, nếu ban đầu A = B = C =100, thì sau khi thực hiện lịch biểu tuần tự cho 2 giao
dịch, kết quả trong CSDL sẽ là: A= 90, B = 90, C = 120, tổng A + B + C trước và sau khi thực

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 41


hiện các giao dịch đều là 300, đây là nguyên tắc cốt lõi của dịch vụ chuyển tiền giữa các tài
khoản trong hệ thống ngân hàng.

Trong các lịch biểu trên:

(a) Là lịch biểu tuần tự, kết quả đúng là: A := A – 10 ; B := B – 10; C:= C + 20.
(tổng A + B + C = 300)
(b) Là lịch biểu khả tuần tự, cho kết quả như lịch biểu tuần tự (a), (tổng A + B +
C = 300)
(c) Là lịch biểu bất khả tuần tự tuần tự: cho kết quả A := A – 10 ; B := B + 10;
C:= C + 20, khác với kết quả của lịch biểu tuần tự (a), tổng A + B + C = 320, tăng thêm 20, điều
này thật nguy hiểm cho ngân hàng!! (do T1 ghi giá trị B := B+10 = 110, ghi đè lên kết quả của B
:= B – 20 = 80 mà T2 đã ghi trước đó, cuối cùng có: A = 90, B = 110, C = 120!)
Kết luận: Điều khiển tương tranh các giao dịch phân tán là tìm một lịch biểu khả tuần tự
cho một tập các giao dịch, nhằm tăng khả năng xử lý song song cho hệ thống, và ngăn chặn việc
phát sinh các lịch biểu bất khả tuần tự.

2.5. ĐIỀU KHIỂN TƯƠNG TRANH BẰNG ĐẶT KHÓA

Điều khiển tương tranh bằng đặt khóa là việc sử dụng một bảng khóa cho các mục dữ liệu
đối với một tập giao dịch để ngăn chặn việc phát sinh các lịch biểu bất khả tuần tự. Chúng ta
phân biệt các mô hình khóa cơ bản (LOCK/UNLOCK) và mô hình khóa phân biệt đọc / ghi
(RLOCK/WLOCK/UNLOCK).

2.5.1. Mô hình khóa cơ bản

2.5.1.1. Thí dụ về sự phát sinh lịch biểu bất khả tuần tự


Thí dụ 3.2. Xét 2 giao dịch T1 và T2 cần truy xuất mục dữ liệu A (A có giá trị nguyên), rồi
cộng thêm 1 vào A. Hai giao dịch này là các bước thực hiện của một chương trình P dưới đây:
P: READ A; A := A+1 ; WRITE A
Khi một giao dịch T1 hay T2 thực hiện, nó sẽ đọc A vào vùng đệm của nó, cộng thêm 1
vào giá trị của A, rồi ghi kết quả vào mục dữ liệu A trong CSDL khi kết thúc giao dịch. Giả sử
giá trị ban đầu của A là 5, hoạt động của T1 và T2 theo chương trình P được mô tả trong hình
sau:
Thứ tự A trong A trong A trong
T1 T2
(steps) CSDL vùng đệm của T1 vùng đệm của T2
1 READ A 5 5 NULL
2 READ A 5 5 5
3 A := A+1 5 6 5
4 A := A+1 5 6 6
5 WRITE A 6 6 6
6 WRITE A 6 6

Hình 3.2. Hoạt động của 2 giao dịch T1 và T2

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 42


Nếu 2 giao dịch T1 và T2 được thực hiện theo một lịch biểu tuần tự, mỗi giao dịch đều
cộng thêm 1 vào A, thì A phải tăng thêm 2, nhưng theo các bước của lịch biểu trên thì kết quả A
chỉ tăng thêm 1, đây là kết quả không mong muốn (kết quả sai). Hãy tưởng tượng A là số vé máy
bay đã bán, thì kết quả sai như trên thật là nguy hiểm!
Lịch biểu tự phát sinh trên đây của 2 giao dịch T1 và T2 là do các hoạt động tương tranh
của 2 giao dịch T1 và T2 trên cùng mục dữ liệu A đã không được kiểm soát, đây là một lịch biểu
bất khả tuần tự.

2.5.1.2. Điều khiển tương tranh bằng khóa cơ bản


Điều khiển tương tranh bằng khóa cơ bản là việc tuần tự hóa các hoạt động tương tranh
bằng việc đặt khóa, được mô tả như sau: Mỗi giao dịch trước khi truy xuất mục dữ liệu A phải
làm thủ tục đặt khóa trên A (LOCK A), sau khi hoàn thành các thao tác thì hủy bỏ việc đặt khóa
trên A (UNLOCK A), mục dữ liệu A được giải phóng và giao dịch khác lại có thể đặt khóa trên
A ...
Trở lại thí dụ trên, cung cấp một khóa (cơ bản) cho A, trước khi truy xuất A, một giao dịch
phải khóa A (LOCK A), sau khi thực hiện xong các thao tác, giao dịch này mở khóa cho A
(UNLOCK A). Trong khi một giao dịch LOCK A, không giao dịch nào khác có thể truy xuất A
cho nên không thể phát sinh các lịch biểu không tuần tự.
Thí dụ 3.3. Áp dụng việc đặt khóa cho các giao dịch trong thí dụ 1, chương trình thực hiện
cho T1 và T2 ở thí dụ trên được sửa đổi như sau:

P*: LOCK A; READ A; A := A+1 ; WRITE A; UNLOCK A.

Sơ đồ hoạt động của T1 và T2 theo chương trình P* được mô tả trong hình sau:
Thứ tự A trong A trong A trong
T1 T2
(steps) CSDL vùng đệm của T1 vùng đệm của T2
1 LOCK A 5 5 NULL
2 READ A 5 5 #
3 A := A+1 5 6 #
4 WRITE A 6 6 #
5 UNLOCK A 6 6 #
6 LOCK A 6 NULL 6
7 READ A 6 # 6
8 A := A+1 6 # 7
9 WRITE A 7 # 7
10 UNLOCK A 7 # 7

Hình 3.3. Hoạt động của 2 giao dịch T1 và T2 có đặt khóa

Do có sự đặt khóa, các giao dịch không thể tiến triển tự do, mà giao dịch T2 phải chờ giao
dịch T1 thực hiện xong UNLOCK A thì T2 mới truy cập A được. Như vậy nhờ việc đặt khóa cơ
bản, các giao dịch đã tự động phát sinh một lịch biểu tuần tự, sau khi T1 và T2 thực hiện xong
lịch biểu này, mục dữ liệu A trong CSDL có giá trị là 7 (kết quả đúng).

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 43


2.5.2. Một số tình huống xung đột khóa

2.5.2.1. Tình huống khóa sống (live-lock)


Một tình huống không mong muốn có thể xảy ra trong việc đặt khóa là một giao dịch T có
thể không bao giờ nhận được khóa mà nó yêu cầu đối với một mục dữ liệu.
Chẳng hạn, với thí dụ 3.3 trên đây, giả sử khi T1 giải phóng mục dữ liệu A (UNLOCK A),
thì khóa này được trao cho T2, tuy nhiên có thể xảy ra tình huống là trong khi T2 chờ nhận khóa
trên A, thì một giao dịch khác T3 đã được đặt khóa trên A, sau T3 lại là T4... Như vậy rất có thể
giao dịch T2 không bao giờ nhận được khóa trên A, dù rằng nó có cơ hội để nhận. Tình huống
như vậy được gọi là “khóa sống” (live-lock).
Một chiến lược để tránh “khóa sống” là hệ thống phải ghi nhận tất cả các yêu cầu đặt khóa
đối với một mục dữ liệu A, khi A đã UNLOCK thì phải trao khóa cho giao dịch đầu tiên trong số
các giao dịch có yêu cầu đặt khóa trên A. Đó là nguyên tắc “xếp hàng”: đến trước thì được phục
vụ trước.

2.5.2.2. Tình huống khóa chết (hay tắc nghẽn | dead-lock)


Một tình huống nghiêm trọng hơn có thể xảy ra: Hai giao dịch có yêu cầu truy xuất một số
mục dữ liệu, trong đó giao dịch này phải chờ giao dịch kia UNLOCK
mục dữ liệu cần truy cập để thực hiện tiếp các thao tác và không giao dịch nào tiến
triển được.
Thí dụ 3.4. Giả sử có 2 giao dịch T1 và T2 đồng thời thực hiện theo các chương trình sau:
T1: LOCK A ; LOCK B ; UNLOCK A ; UNLOCK B.
T2: LOCK B ; LOCK A ; UNLOCK B ; UNLOCK A.
(Chú ý rằng T1 và T2 sau khi đặt khóa, có thể thực hiện các tác vụ khác trên A
và B)
Giả sử là T1 và T2 cùng thực hiện tại 1 thời điểm mà A và B đều đang không bị đặt khóa.
T1 yêu cầu và được đặt khóa trên A, T2 yêu cầu và được đặt khóa trên B, sau đó T1 yêu cầu
LOCK B, nó phải chờ T2 giải phóng khóa này, nhưng T2 đang yêu cầu LOCK A, cũng phải chờ
T1 giải phóng khóa này, giao dịch này phải chờ giao dịch kia giải phóng khóa trên mục dữ liệu
cần truy cập, kết quả là cả hai giao dịch không thể tiến triển được. Đã xảy ra tình trạng tắc nghẽn
(hay dead-lock) giữa 2 giao dịch.
Để khắc phục dead lock, một giao dịch phải bị hủy bỏ và khởi động lại sau khi giao dịch
kia đã thực hiện xong, tức là thực hiện một lịch biểu tuần tự cho 2 giao dịch.

2.5.2.3. Tình huống tắc nghẽn toàn cục


Tình trạng tắc nghẽn sẽ trở nên trầm trọng nếu nó xảy ra với một tập các giao dịch trên một
tập các mục dữ liệu.
Kí hiệu: {Ti  Tj} để biểu diễn quan hệ chờ đợi: “giao dịch Ti chờ sự giải phóng một
khóa được đặt bởi Tj”.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 44


Chẳng hạn, tình huống trong thí dụ 3.4 được biểu diễn bởi tập các quan hệ
chờ đợi:

{ T2  T1 ; T1  T2 }
Đồ thị chờ đợi toàn cục cho một tập giao dịch: là một đồ thị G có hướng, trong đó các đỉnh
được gán nhãn là các giao dịch, các cung được xác định như sau: từ Ti có cung đến Tj nếu giao
dịch Ti chờ sự giải phóng 1 khóa được đặt bởi Tj, tức là có quan hệ chờ đợi: {Ti  Tj}.
Nếu đồ thị chờ đợi có chu trình: có tắc nghẽn toàn cục
Khắc phục tắc nghẽn toàn cục: hủy bỏ một trong các giao dịch tham gia vào chu trình, và
khởi động lại giao dịch này sau khi các giao dịch trong chu trình cũ đã được thực hiện.
Thí dụ 3.5.
(a) Chẳng hạn, với các giao dịch trong thí dụ 3, ta có đồ thị đợi:

T1 T2

Hình 3.4. Đồ thị đợi cho 2 giao dịch đặt khóa cơ bản

Đồ thị này có chu trình, đã xảy ra tắc nghẽn, để khắc phục tắc nghẽn, ta hủy bỏ một giao
dịch và khởi động lại sau khi giao dịch kia đã hoàn thành.
(b) Dưới đây là đồ thị đợi toàn cục cho 6 giao dịch:

T1 T4 T5

T2 T3 T6

Hình 3.5. Đồ thị đợi toàn cục cho 6 giao dịch

Các giao dịch T1, T2, T3, T4 làm thành một chu trình, xảy ra tắc nghẽn toàn cục. Để khắc
phục tắc nghẽn, ta có thể hủy bỏ bất kỳ giao dịch nào trong số các giao dịch T1, T2, T3, T4, và
khởi động lại sau khi các giao dịch còn lại của chu trình cũ đã được thực hiện.

2.5.3. Mô hình khóa đọc/ ghi

Ở các phần trên, với khóa cơ bản, ta đã giả sử rằng khi một giao dịch khóa một mục dữ liệu
A (LOCK A) thì nó sẽ toàn quyền đọc hoặc ghi trên A. Tuy nhiên, thực tế có những giao dịch
chỉ truy xuất A để đọc giá trị trên A và không cần ghi trên A. Nếu phân biệt một giao dịch chỉ
đọc (Read only) và một giao dịch đọc và ghi (read/write) thì việc sử dụng các khóa có phân biệt
đọc/ghi sẽ cho một điều khiển hiệu quả hơn so với mô hình khóa cơ bản.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 45


Trong mô hình khóa có phân biệt đọc/ghi, sẽ có 3 loại khóa: RLOCK (khóa chỉ đọc),
WLOCK (khóa có thể đọc/ghi) và UNLOCK (mở khóa cho mục dữ liệu). Các giao dịch sẽ đặt
khóa như sau:
- Khóa đọc (Read Lock: RLOCK): Khi giao dịch T muốn chỉ đọc một mục dữ liệu A, T sẽ
đặt khóa RLOCK A, khi đó giao dịch T sẽ được đọc dữ liệu trên A, các giao dịch khác không
được ghi vào A, nhưng vẫn được phép đọc trên A.
- Khóa ghi (Write Lock: WLOCK): Khóa này có ý nghĩa như khóa cơ bản trên đây. Khi
giao dịch T đã đặt khóa WLOCK A, thì không một giao dịch nào có thể thực hiện bất kỳ thao tác
gì trên A, tức là mọi giao dịch khác không thể đặt bất kỳ khóa nào trên A (RLOCK hoặc
WLOCK). Chỉ khi A được UNLOCK bởi giao dịch T, thì các giao dịch khác mới được phép đặt
khóa (truy cập) trên A.
- UNLOCK: Khi giao dịch thực hiện xong các thao tác trên A, đặt khóa UNLOCK để giải
phóng mục dữ liệu này, cho phép các giao dịch khác có thể truy cập.
Rõ ràng với mô hình khóa đọc/ghi thì sẽ tăng hiệu quả xử lý tương tranh (xử lý đồng thời)
giữa các giao dịch và giảm tắc nghẽn. Xem xét thí dụ sau:
Thí dụ 3.6. Trong thí dụ 3.4, giả sử các giao dịch T1 và T2 đọc và ghi dữ liệu trên A,
nhưng cả 2 giao dịch chỉ đọc dữ liệu trên B. Áp dụng mô hình khóa đọc/ ghi cho 2 giao dịch này,
ta có các chương trình cho mỗi giao dịch:
T1: WLOCK A ; RLOCK B ; UNLOCK A ; UNLOCK B.
T2: RLOCK B ; WLOCK A ; UNLOCK B ; UNLOCK A.

Đồ thị chờ đợi toàn cục sẽ là {T2  T1}:

T1 T2

Hình 3.6. Đồ thị chờ đợi cho 2 giao dịch đã được đặt khóa đọc/ ghi

Đồ thị này không có chu trình, không có tình trạng khóa chết, không xảy ra tắc nghẽn,
trong đó T1 tiến triển bình thường, T2 thực hiện RLOCK B, chờ T1 thực hiện UNLOCK A, sau
đó cả hai giao dịch tiến triển cho đến khi kết thúc. Lịch biểu thực hiện các giao dịch là khả tuần
tự.

2.6. ĐIỀU KHIỂN TƯƠNG TRANH BẰNG THỜI DẤU

Một cách tiếp cận khác cho việc điều khiển tương tranh là đặt cho các giao dịch các ‘nhãn
thời gian’ (thời dấu: Time-Stamps). Tùy theo thời dấu của các giao dịch mà hệ thống cho phép
giao dịch đó được thực hiện thao tác truy xuất dữ liệu trên A hay hủy bỏ giao dịch đó.
Cũng như với mô hình điều khiển bằng đặt khóa, ta cũng có hai mô hình điều khiển bằng
thời dấu: mô hình thời dấu cơ bản và mô hình thời dấu phân biệt đọc/ ghi.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 46


2.6.1. Các khái niệm

2.6.1.1. Thời dấu của các giao dịch


Khi một giao dịch được khởi động, nó sẽ được gán một số hiệu duy nhất trong hệ thống gọi
là thời dấu (hay nhãn thời gian: Time Stamps). Thời dấu của giao dịch sẽ quyết định việc cho
phép giao dịch thực hiện các thao tác truy cập dữ liệu (read/write), hay hủy bỏ giao dịch đó. Như
vậy, có thể sử dụng thời dấu để điều khiển các hoạt động tương tranh của các giao dịch trong
CSDL phân tán.
Việc tạo các thời dấu duy nhất cho các giao dịch trong một hệ thống phân tán là việc rất
khó khăn. Thường có hai cách tiếp cận:
- Cách tiếp cận tập trung: Tạo thời dấu từ một bộ đệm toàn cục, được quản lý bởi một trạm
duy nhất. Cách này tuy đơn giản nhưng lại phải mất một truy cập phân tán để khởi đầu việc thực
hiện mỗi giao dịch.
- Cách tiếp cận phân tán: Mỗi trạm đặt thời dấu một cách tự trị theo đồng hồ địa phương
(bộ đếm cục bộ) và số hiệu của trạm. Một giao dịch khởi động tại trạm thứ i, tại thời điểm t theo
đồng hồ tại trạm đó, sẽ được gán thời dấu là bộ < t, i >. Một số bit cuối cùng của nhãn thời gian
sẽ được dùng để xác định duy nhất số hiệu trạm, chẳng hạn, nếu có không quá 256 trạm, ta chỉ
cẩn 8 bit là đủ để xác định số hiệu mọi trạm.

2.6.1.2. Vấn đề đồng bộ hóa đồng hồ


Với cách tiếp cận phân tán, cần phải đồng bộ hóa đồng hồ (bộ đếm thời gian) của các trạm.
Vấn đề này đã được giải quyết bằng cách: khi một trạm j nhận được thông báo về một giao dịch
từ một trạm i với thời dấu của trạm gửi < ti, i >, nếu thông báo mang thời dấu ti lớn hơn giá trị
đồng hồ của trạm nhận tj, thì trạm nhận sẽ điều chỉnh đồng hồ của nó bằng thời dấu nhận được
cộng thêm 1, (tj:= ti +1) và chấp nhận thực hiện giao dịch đó. Nếu giá trị đồng hồ của trạm j lớn
hơn thời dấu của trạm gửi, thì trạm j sẽ giữ nguyên giá trị đồng hồ của nó, hủy bỏ giao dịch từ
trạm i và thông báo cho trạm i thời gian đúng hiện tại là tj +1.
Như vậy, bằng cách gửi thông báo giữa các trạm, đồng hồ các trạm sẽ được đồng bộ hóa.
Vì vậy, trong các phần sau, ta luôn giả sử các thời dấu là có giá trị toàn cục và duy nhất trong hệ
thống.

2.6.1.3. Thời dấu của các mục dữ liệu


Mỗi mục dữ liệu cũng được gán một thời dấu. Có thể phân biệt hai loại thời dấu cho các
mục dữ liệu: thời dấu cơ bản và thời dấu phân biệt đọc/ ghi.
- Thời dấu cơ bản: Mỗi mục dữ liệu được gán một thời dấu bằng thời dấu cao nhất của một
giao dịch đã truy cập nó, không phân biệt thao tác của giao dịch là gì (đọc hay ghi).
- Thời dấu phân biệt đọc/ ghi: Thời dấu của mục dữ liệu cũng có thể phân loại theo thao tác
của giao dịch đã truy cập và gán thời dấu cho nó, tức là:
Nếu giao dịch T có thời dấu t, chỉ đọc dữ liệu trên A thì A có thời dấu đọc là RT = t. Nếu
giao dịch T có thời dấu t, đọc và ghi trên A thì ta nói A có thời dấu ghi WT = t.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 47


2.6.2. Điều khiển tương tranh bằng thời dấu

Có hai mô hình điều khiển tương tranh bằng thời dấu, tùy thuộc loại thời dấu của mục dữ
liệu là thời dấu cơ bản hay thời dấu có phân biệt đọc/ ghi.

2.6.2.1. Mô hình thời dấu cơ bản


Giả sử giao dịch T có thời dấu t1, truy cập mục dữ liệu A có thời dấu t2, khi đó quy tắc điều
khiển tương tranh như sau:
Nếu t1 > t2: giao dịch T được thực hiện (đọc hoặc ghi) trên A.
Nếu t1 < t2: giao dịch T bị hủy bỏ, và có thể được khôi phục với thời dấu mới lớn hơn t2.
Thí dụ 3.7. Xét 2 giao dịch T1 và T2 truy cập mục dữ liệu A để thực hiện các thao tác theo
lịch biểu dưới đây, thời dấu của của các giao dịch và của mục dữ liệu được cho trong hình sau:
Các giao dịch T1 T2 Mục dữ liệu A
Thời dấu ban đầu 160 150 0
Bước (1) READ A 160
(2) READ A T2 bị hủy
(3) A := A+1 160
(4) WRITE A 160

Hình 3.7. Lịch biểu của 2 giao dịch trong mô hình thời dấu cơ bản

Trong thí dụ trên, T2 bị hủy vì có thời dấu nhỏ hơn thời dấu mục dữ liệu A, T2 có thể được
khởi động lại với thời dấu mới lớn hơn 160, tức là chuyển lịch biểu không tuần tự ban đầu thành
lịch biểu tuần tự: T1 thực hiện xong thì đến lượt T2.
Như vậy, với mô hình thời dấu cơ bản, thì việc điều khiển tương tranh chỉ cho phép các
giao dịch thực hiện theo một lịch biểu tuần tự. Mô hình điều thời dấu có phân biệt đọc/ ghi dưới
đây sẽ cho một điều khiển “mịn” hơn và hiệu quả hơn.

2.6.2.2. Mô hình thời dấu phân biệt đọc/ghi


Với mô hình này, mỗi mục dữ liệu A được gán hai giá trị thời dấu đọc (RT) và thời dấu ghi
(WT). Khởi đầu, các mục dữ liệu gán thời dấu đọc và ghi đều bằng không, để đảm bảo rằng mọi
giao dịch đầu tiên truy cập nó đều thực hiện được thao tác bất kỳ, sau đó nó sẽ được gán giá trị
thời dấu đọc RT và/ hoặc thời dấu ghi WT bằng với giá trị thời dấu cao nhất của giao dịch gần
nhất đọc hay ghi lên nó.
Quy tắc điều khiển tương tranh trong mô hình thời dấu đọc/ghi như sau:
Giả sử giao dịch T có thời dấu t muốn thực hiện thao tác X (X = Read hoặc Write) trên
mục dữ liệu A có thời dấu đọc là RT = tR và thời dấu ghi WT = tW, khi đó:
- Giao dịch T được thực hiện nếu X = Read và t > tW.
- Giao dịch T được thực hiện nếu X = Write và t > tR, t > tW
- Giao dịch T bị hủy bỏ nếu X = Read và t < tW, hoặc X = Write và t < tR.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 48


- Giao dịch T không bị hủy bỏ nếu X = Write và tR < t < tW. (quy tắc này cho phép giao
dịch T được tiến triển nhưng thực chất không làm thay đổi mục dữ liệu).
Khi một giao dịch bị hủy bỏ, nó có thể được khởi động lại với thời dấu mới lớn hơn các
thời dấu của mục dữ liệu nhờ một thông báo từ trạm chứa mục dữ liệu tới trạm yêu cầu giao
dịch.
Thí dụ 3.8. Xét lại thí dụ trên, với mô hình thời dấu đọc/ghi. Giả sử mục dữ dữ liệu A có
các thời dấu ban đầu RT = WR = 0, các giao dịch T1 và T2 có thời dấu lần lượt là 160 và 150,
thực hiện các thao tác theo lịch biểu sau:
Các giao dịch T1 T2 Mục dữ liệu A
Thời dấu ban đầu 160 150 RT = WT = 0
Bước (1) READ A RT = 160
(2) READ A RT = 160
(3) A := A+1 WT = 160
(4) WRITE A WT = 160

Hình 3.8. Lịch biểu của 2 giao dịch trong mô hình thời dấu đọc/ ghi

Trong thí dụ này, không giao dịch nào bị hủy bỏ, như vậy điều khiển tương tranh bằng thời
dấu có phân biệt đọc ghi là hiệu quả hơn mô hình thời dấu cơ bản.
Thí dụ 3.9. Xét các giao dịch trong lịch biểu dưới đây. Giao dịch T1 có thời dấu 200, T2 có
thời dấu 150, T3 có thời dấu 175 thực hiện truy xuất các mục dữ liệu A, B và C có các thời dấu
ban đầu RT = WR = 0
Các giao dịch T1 T2 T3 A B C
Thời dấu ban đầu t1 = 200 t2 = 150 t3 = 175 RT = WT = 0 RT = WT = 0 RT = WT = 0
Bước (1) READ B RT = 200
(2) READ A RT = 150
(3) READ C RT = 175
(4) WRITE B WT = 200
(5) WRITE A WT = 200
(6) WRITE C T2 không
được ghi C
(7) WRITE A TR < t3 < TW

Hình 3.9. Lịch biểu của 3 giao dịch trong mô hình thời dấu đọc/ ghi

Trong thí dụ trên:


- Giao dịch T1 được thực hiện.
- Giao dịch T2 bị hủy bỏ do thao tác (6): WRITE C không được ghi trên C (do vi phạm
quy tắc thời dấu: t2 < RT(C))
- Giao dịch T3 không bị hủy bỏ do quy tắc 4: RT(A) < t3 < WT(A), nhưng thực chất T3
không ghi gì lên A.
Kết luận: Điều khiển tương tranh bằng thời dấu cho phép một giao dịch được tiến triển tự
do, chừng nào nó không vi phạm thứ tự các giao dịch về thời dấu. Những xung đột dẫn đến các
thực thi bất khả tuần tự sẽ được phát hiện và điểu khiển đơn giản bằng việc hủy bỏ các giao dịch

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 49


vi phạm và có thể được khởi động lại với thời dấu lớn hơn. Nhược điểm của cách tiếp cận này là
số các giao dịch hủy bỏ và tái khởi động có thể khá lớn khi có mức tương tranh cao, điều này
làm tăng cho phí quản lý các giao dịch phân tán.

2.7. HỢP THỨC HÓA CÁC GIAO DỊCH PHÂN TÁN

2.7.1. Mục đích của hợp thức hoá

Một giao dịch phân tán (toàn cục) được thực hiện bằng tập hợp các giao dịch con (các giao
dịch thành phần, giao dịch cục bộ) trên các trạm.
Mục đích của hợp thức hóa là đảm bảo tính nguyên tố của các giao dịch toàn cục: giao dịch
hoặc được thực hiện ở mức toàn cục (khi tất cả các giao dịch cục bộ cùng được hợp thức), có
nghĩa là tích hợp thực sự các cập nhật của nó vào CSDL, hoặc giao dịch bị huỷ bỏ (khi có một
trong các giao dịch cục bộ chưa được hợp thức hóa).
Một cách tiếp cận trực tiếp và ngây thơ để hợp thức một giao dịch phân tán, là xem các
giao dịch con thành phần như một giao dịch cục bộ trên các trạm và có thể được hợp thức hóa
độc lập với các giao dịch cục bộ khác. Tuy nhiên theo cách này một số giao dịch cục bộ có thể
có thể được hợp thức hóa trong khi những giao dịch khác lại bị hủy bỏ. Như vậy, cách tiếp cận
này vi phạm điều kiện cơ bản là tính nguyên tố của các giao dịch phân tán, do không có sự đồng
bộ giữa các giao dịch cục bộ tham gia vào giao dịch toàn cục.
Người ta đưa ra một giải pháp là sử dụng một giao thức hợp thức hóa hai giai đoạn hay
giao thức hợp thức hóa hai pha, được thực hiện bởi các trạm tham gia vào giao dịch toàn cục
dưới sự điều khiển của một trạm được phân công làm trạm điều phối.

2.7.2. Giao thức hợp thức hóa hai giai đoạn

Giao thức hợp thức hóa hai gia đoạn (hay hợp thức hóa hai pha: two-phases commit
protocol) gồm hai giai đoạn sau:
- Pha 1. Giai đoạn chuẩn bị: trạm điều phối yêu cầu mỗi trạm tham gia chuẩn bị cho sự hợp
thức hóa, và phản hồi lại cho trạm điều phối, khi đã chuẩn bị xong.
- Pha 2. Giai đoạn hợp thức: Trạm điều phối sẽ ra lệnh cho tất cả các trạm tham gia hợp
thức hoá các cập nhật vào CSDL, nếu như tất cả các trạm đã hoàn thành pha 1 hoặc huỷ bỏ tất cả
các giao dịch con sau một thời gian trễ, mà có trạm chưa phản hồi.
Mỗi trạm tham gia sẽ thực hiện một giao dịch con và cập nhật CSDL cục bộ khi được
trạm điều phối ra lệnh (ở pha 2). Trạm điều phối có thể là một trong những trạm tham gia, và
như vậy nó đóng cả hai vai trò.
Mô tả quá trình hợp thức hóa hai giai đoạn
Trong khi thực hiện giao thức, các trạng thái khác nhau của trạm điều phối và trạm tham
gia sẽ được ghi vào nhật ký để khi có sự cố, thủ tục phục hồi có thể tiếp tục các pha cần thiết của
giao thức.
- Quá trình thực hiện pha 1: Đầu tiên, trạm điều phối khởi phát giai đoạn “chuẩn bị” bằng
việc gửi thông báo “Chuẩn bị” cho các trạm tham gia. Nhận được thông báo này, mỗi trạm tham

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 50


gia thực hiện các thao tác đảm bảo cho nó có thể hợp thức hay hủy bỏ các giao dịch con khi xảy
ra bất kỳ sự cố nào. Nếu trạm tham gia có khả năng hợp thức, nó sẽ gửi lại thông báo “Sẵn sàng!
” (hợp hức hóa) cho trạm điều phối, trường hợp ngược lại nó gửi thông báo “Không sẵn sàng!”
(hợp thức hóa).
Sơ đồ hợp thức hoá 2 pha:

Hình 2.10. Pha 1 của giao thức hợp thức hóa 2 pha

- Quá trình thực hiện pha 2: Sau một khoảng thời gian quy định, nếu trạm điều phối nhận
được thông báo sẵn sàng từ tất cả các trạm tham gia, nó sẽ ra thông báo quyết định “Hợp thức
hóa” cho tất cả các trạm. Trường hợp trái lại khi có ít nhất một trạm gửi thông báo không sẵn
sàng, hoặc quá thời hạn quy định (time-out) mà không gửi thông báo, thì trạm điều phối sẽ ra
quyết định toàn cục tới tất cả các trạm “Hủy bỏ” (hợp thức hóa). Nhận được quyết định toàn cục,
các trạm tham gia sẽ đồng loạt hợp thức hóa hay hủy bỏ hợp thức hóa, và thông báo cho trạm
điều phối là đã kết thúc công việc.
Sơ đồ hợp thức hoá 2 pha:

Hình 2.11. Pha 2 của giao thức hợp thức hóa 2 pha

Với quá trình hợp thức hóa hai giai đoạn như trên, mỗi giao dịch (tổng thể) sẽ được hoàn
thành và thực sự cập nhật vào CSDL chỉ khi tất cả các giao dịch con (giao dịch bộ phận) trên các
trạm được thực hiện (hợp thức hóa). Trái lại, dù chỉ một giao dịch con không đảm bảo hợp thức
hóa thì toàn bộ giao dịch tổng thể sẽ bị hủy bỏ và chưa có thay đổi gì trong CSDL.
Giao thức hợp thức hoá 2 pha sẽ đảm bảo tất cả các trạm tham gia sẽ hợp thức hoá hoặc
huỷ bỏ tất cả các giao dịch bộ phận. Vì vậy nó đảm bảo tính nguyên tố của các giao dịch toàn
cục. Quyết định toàn cục là hợp thức hoá giao dịch T hoặc huỷ bỏ thì do trạm điều phối đưa ra
sau giai đoạn 1. Như vậy, giao thức hợp thức hóa hai pha sẽ đảm bảo tính nguyên tố của các giao
dịch phân tán.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 51


2.7.3. Một số kịch bản hợp thức hóa

Ta sẽ trình bày một số tình huống có thể xảy ra trong quá trình hợp thức hóa của một hệ
thống phân tán gồm 1 trạm điều phối, 2 trạm tham gia S1, S2.
Kịch bản 1: Giao dịch bình thường  hợp thức hóa được.

Hình 3.12. Hợp thức hóa bình thường Hình 3.13. Giao dịch bị hủy bỏ
Trong kịch bản này, tại thời điểm giao dịch, trạm điều phối và các trạm tham gia đều hoạt
động bình thường, trao đổi thông tin giữa các trạm thực hiện tốt nên không có trục trặc gì xảy ra
trong quá trình giao dịch vì vậy giao dịch được hợp thức hóa nhanh chóng, CSDL cập nhật các
dữ liệu đã thay đổi bởi tất cả các trạm. Các thủ tục hợp thức hóa theo hai giai đoạn được thể hiện
trong hình 3.12.
Kịch bản 2: Hỏng hóc tại trạm tham gia S2 trước khi sẵn sàng, sau thời gian trễ không có
phản hổi, trạm điều phối ra lệnh ‘Hủy bỏ’  huỷ giao dịch (Hình 3.13).
Kịch bản 3: Hỏng hóc của S2 sau khi đã thông báo “sẵn sàng” và sau đó khôi phục được.
Hợp thức hoá được sau khi S2 hoạt động (Hình 3.14).

Hình 3.14. Hỏng hóc được khôi phục, hợp thức hóa được thực hiện

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 52


Kịch bản 4: Hỏng hóc tại trạm điều phối (ký hiệu x x x x trong hình vẽ) khi nhận được tín
hiệu sẵn sàng. Quá trình hợp thức hóa được thực hiện sau khi trạm điều phối hoạt động trở lại
(Hình 3.15).

Hình 3.15. Hỏng hóc tại trạm điều phối được khôi phục, hợp thức hóa được thực hiện
Kết luận: Giao thức hợp thức hoá 2 pha sẽ đảm bảo tính nguyên tố của giao dịch toàn cục
chống lại một số kiểu hỏng hóc, trừ hỏng hóc do “thảm họa”. Đây là một mô hình hợp thức đơn
giản nhất. Với những hệ thống phức tạp và yêu cầu có độ an toàn cao thì ta có giao thức hợp thức
hoá 3 pha [5].

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 53


BÀI TẬP CHƯƠNG 2
1. Mục đích và yêu cầu của sự phân đoạn trong CSDL phân tán. Trình bày các phương pháp phân đoạn
và các biểu thức khôi phục.
2. Định nghĩa các phép kết nối, nửa kết nối của 2 quan hệ, cho thí dụ minh họa.. Việc thay thế phép kết
nối trực tiếp bởi các các phép kết nối và nửa kết nối (theo chiến lược nửa kết nối) gồm những bước
nào?
3. Việc định giá các câu hỏi phân tán gồm những giai đoạn nào. Việc tối ưu hóa câu hỏi nhằm mục
đích gì, và có thể được thực hiện ở các giai đoạn nào?
4. Cho hai quan hệ r và s như các bảng dưới đây:
r A B E s B C D E
1 4 1 4 6 7 1
2 5 2 5 7 7 2
3 6 3 4 8 9 3
4 7 4 5 9 9 4
5 8 5

a. Tính các kết nối r s;s r


b. Tính các nửa kết nôi: r s;s r
5. Cho 3 quan hệ:
r1 A B C r2 C D E r3 B C D F
1 3 5 5 7 2 3 5 7 1
1 4 5 5 8 4 4 6 8 2
2 3 6 5 9 6 3 5 9 3
2 4 6 6 8 8 4 6 8 4

a. Tính kết nối 3 quan hệ trên theo trình tự: (r1 r2) r3
b. Tính kết nối 3 quan hệ trên theo trình tự: (r1 r3) r2.
c. Trình tự kết nối nào tốt hơn, tại sao?
6. Cho 2 quan hệ r và s như các bảng dưới đây. Tính kết nối 2 quan hệ bằng phương pháp kết nối
trực tiếp và áp dụng chiến lược nửa kết nối. So sánh chi phí của 2 phương pháp:
r A B E s B C D E
1 4 1 5 6 7 1
2 5 2 4 7 7 1
3 6 3 5 8 9 2
4 7 4 4 9 9 2
5 8 5
7. Trình bày khái niệm về giao dịch, giao dịch phân tán, tính nguyên tố của giao dịch phân tán.
8. Thế nào là mục dữ liệu. Trình bày các khái niệm về một lịch biểu tuần tự, khả tuần tự và bất khả
tuần tự?
9. Trình bày quy tắc điều khiển tương tranh bằng việc đặt khoá (locking): mô hình khóa cơ bản và mô
hình phân biệt khoá đọc, khoá ghi. Thế nào là tình trạng khoá chết (dead lock) đối với một tập các
giao dịch phân tán, cách khắc phục?

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 54


10. Trình bày quy tắc điều khiển tương tranh bằng thời dấu, trong truờng hợp cơ bản và trường hợp
phân biệt các thao tác đọc / ghi của các giao dịch phân tán.
11. Có hai giao dịch T1 và T2 truy xuất mục dữ liệu A theo lịch biểu dưới đây. Các thời dấu của các giao
dịch và thời dấu đọc/ghi ban đầu của các mục dữ liệu cho trong bảng dưới đây. Các giao dịch đều
cộng thêm giá trị vào mục dữ liệu khi thực hiện được thao tác WRITE.
T1 T2 A=5
Thời dấu
150 160 RT = WT = 0
Thứ tự: (1) READ A
(2) READ A
(3) A := A+1
(4) A := A+2
(5) WRITE A
(6) WRITE A

a. Hãy xác định thời dấu mà mục dữ liệu A được gán sau mỗi bước (ghi vào cột cuối cùng, sau mỗi
bước).
b. Giả sử giá trị ban đầu của A = 5, sau bước (6) giá trị của A bằng bao nhiêu?.
c. Trong các giao dịch trên, có giao dịch nào bị hủy bỏ không?, tại sao?
d. Viết 1 lịch biểu tuần tự cho các giao dịch, tính giá trị lưu trữ trong các mục dữ liệu khi kết thúc
lịch biểu tuần tự. Lịch biểu đã cho ban đầu có phải lịch biểu khả tuần tự không?
12. Cũng hỏi như bài tập 6, với giả thiết thời dấu ban đầu của giao dịch T1 là 180, còn thời dấu của T2 là
160.
13. Có ba giao dịch T1, T2, T3 truy xuất các mục dữ liệu A, B và C theo lịch biểu dưới đây. Các thời dấu
của các giao dịch và thời dấu đọc/ghi ban đầu của các mục dữ liệu cho trong bảng. Giả sử các mục dữ
liệu có giá trị ban đầu bằng 5, các giao dịch đều cộng thêm 5 vào mục dữ liệu khi thực hiện được thao
tác WRITE.
T1 T2 T3 A=5 B=5 C=5
Thời dấu 40 30 50 RT = WT = 0 RT = WT = 0 RT = WT = 0
Thứ tự: (1) READ A
(2) WRITE A
(3) READ C
(4) WRITE C
(5) WRITE A
(6) READ B
(7) WRITEB

a. Trong lịch biểu trên, thao tác nào không thực hiện được và giao dịch nào bị huỷ bỏ?
Tại sao?
b. Viết 1 lịch biểu tuần tự cho các giao dịch, tính giá trị lưu trữ trong các mục dữ liệu khi kết thúc
lịch biểu.
c. Viết 1 lịch biểu khả tuần tự cho các giao dịch, tính giá trị lưu trữ trong các mục dữ liệu khi kết
thúc lịch biểu.
14. Cũng hỏi như bài tập 8, với giả thiết ba giao dịch T1, T2 và T3 được gán các thời dấu lần lượt là 200,
250 và 300.
15. Có ba giao dịch T1, T2, T3 truy xuất các mục dữ liệu A, B và C theo lịch biểu dưới đây. Các thời dấu
của các giao dịch và thời dấu đọc/ghi ban đầu của các mục dữ liệu cho trong bảng. Giả sử các mục dữ

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 55


liệu có giá trị ban đầu bằng 10, các giao dịch đều cộng thêm 5 vào mục dữ liệu khi thực hiện được
thao tác WRITE.
T1 T2 T3 A = 10 B =10 C = 10
Thời dấu
70 50 60 RT = WT = 0 RT = WT = 0 RT = WT = 0
Thứ tự: (1) READ A
(2) WRITE A
(3) READ C
(4) WRITE C
(5) WRITE A
(6) READ B
(7) WRITE B

a. Trong lịch biểu trên, thao tác nào không thực hiện được và giao dịch nào bị huỷ bỏ?
Tại sao?
b. Viết 1 lịch biểu tuần tự cho các giao dịch, tính giá trị lưu trữ trong các mục dữ liệu khi kết thúc
lịch biểu.
c. Viết 1 lịch biểu khả tuần tự cho các giao dịch, tính giá trị lưu trữ trong các mục dữ liệu khi kết
thúc lịch biểu.
16. Trình bày giao thức hợp thức hoá 2 pha cho một giao dịch phân tán. Giao thức hợp thức hóa
2 pha cho một giao dịch phân tán nhằm mục đích gì?.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 56


Chương 3

TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU SUY DIỄN

3.1. NGUYÊN LÝ CỦA MỘT HỆ CƠ SỞ DỮ LIỆU SUY DIỄN

3.1.1. Sự hình thành cơ sở dữ liệu suy diễn

Các hệ quản trị CSDL đã bắt đầu xuất hiện từ những năm 1960 và đặc biệt là từ khi mô
hình CSDL quan hệ do Codd.E.F. đề xuất vào đầu những năm 1970, thì công nghệ CSDL đã
phát triển rất nhanh và thu được rất nhiều thành tựu trong nhiều ứng dụng khác nhau của CNTT.
Đặc điểm chung của các hệ thống CSDL truyền thống là có khả năng lưu trữ khối lượng dữ liệu
rất lớn, có khả năng lưu trữ và xử lý phân tán… Tuy nhiên chức năng chủ yếu vẫn là lưu trữ và
xử lý dữ liệu, hầu như không có khả năng suy luận. Bên cạnh đó, song song với sự phát triển của
các hệ QTCSDL thì các hệ chuyên gia cũng được phát triển. Đặc điểm của các hệ chuyên gia là
có thể cung cấp các khả năng suy luận nhằm hỗ trợ việc ra quyết định tuy nhiên lại không có khả
năng lưu trữ và xử lý khối lượng dữ liệu lớn.
Một hệ thống mới được đề xuất dựa trên sự kết hợp của hai hệ thống trên, nhằm phát huy
những ưu điểm nổi trội của mỗi hệ thống, với mong muốn hệ thống mới vừa có khả năng lưu trữ,
xử lý khối lượng dữ liệu lớn, vừa có khả năng tư duy, suy luận với những thông tin đã được lưu
trữ. Như vậy, các hệ CSDL suy diễn (Deductive Database) được xem như sự tích hợp của dữ liệu
(như trong một hệ CSDL) và tri thức (như trong một hệ chuyên gia). Sơ đồ dưới đây mô tả sự kết
hợp của các hệ CSDL và các hệ chuyên gia:

Hình 4.1. Sự hình thành CSDL suy diễn

3.1.2. Các thành phần chính của CSDL suy diễn

Để thực hiện được các chức năng của một hệ CSDL và một hệ chuyên gia như đã mô tả
trên đây, một hệ CSDL suy diễn cần có các thành phần sau:

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 57


3.1.2.1. Một CSDL ngoại diên (Extension Database- EDB)
EDB là một CSDL quan hệ tiêu chuẩn như mọi hệ CSDL truyền thống, được xây dựng trên
một tập các lược đồ quan hệ, có khả năng lưu trữ một khối lượng lớn dữ liệu. Các dữ liệu trong
EDB gọi là các sự kiện (facts), mỗi sự kiện là một bộ của một quan hệ, có thể cập nhật
(thêm/sửa/xóa) như là các bộ trong CSDL quan hệ.
Các sự kiện biểu diễn các thông tin cơ sở (được cho là đúng trong CSDL).

3.1.2.2. Một CSDL nội hàm (Intension Database-IDB)


IDB là một CSDL chứa các thông tin nội hàm, lưu trữ một tập các luật, cho phép định
nghĩa thông tin mới từ các thông tin được lưu trữ là các sự kiện. Có 2 loại luật được lưu trữ trong
IDB:
Các luật suy diễn (deductive rules): cho phép suy ra các sự kiện mới từ các sự kiện được
lưu trữ trong EDB.
Các ràng buộc toàn vẹn (integrity constraints): được viết dưới dạng các luật, phát biểu các
điều kiện mà mỗi trạng thái của CSDL phải thỏa mãn.

3.1.2.3. Ngôn ngữ thao tác CSDL suy diễn


CSDL suy diễn có thể được hiểu là kết quả của việc áp dụng logic và trí tuệ nhân tạo vào
lĩnh vực CSDL truyền thống. Ngôn ngữ được dùng để định nghĩa nội dung và cấu trúc thông tin
trong CSDL suy diễn là ngôn ngữ Datalog (logic cho dữ liệu).
Datalog là ngôn ngữ lập trình logic (tương tự như Prolog) được phát triển dựa trên Logic
tân từ cấp một. Ngôn ngữ Datalog thao tác trên các tân từ ngoại diên (hay tân từ cơ sở) là tên của
các quan hệ trong CSDL ngoại diên (EDB) và tân từ nội hàm (hay tân từ dẫn suất) là tên của các
quan hệ trong CSDL nội hàm (IDB). Một CSDL suy diễn được biểu diễn bởi một chương trình
Datalog.

3.1.2.4. Hệ quản trị CSDL suy diễn


Hệ quản trị CSDL suy diễn phải có tất cả các chức năng của một hệ QTCSDL thông
thường, có thể cho phép khai thác và quản lý CSDL một cách tập trung hoặc phân tán, đảm bảo
tính tin cậy và an toàn dữ liệu.
Hệ quản trị CSDL suy diễn còn cho phép suy diễn ra các sự kiện mới (là các sự kiện dẫn
suất của các tân từ nội hàm) từ các sự kiện đã có bằng việc sử dụng các quy tắc và các luật logic.
Hệ quản trị CSDL suy diễn cung cấp một thủ tục xử lý câu hỏi, có khả năng trả lời các câu
hỏi được phát biểu theo các khung nhìn cũng như theo các tân từ cơ sở.

3.2. NGÔN NGỮ DATALOG

Datalog (logic dữ liệu) là ngôn ngữ được dùng để biểu diễn, xử lý dữ liệu trong một CSDL
suy diễn, cũng giống như SQL được sử dụng trong hầu hết các CSDL quan hệ. Cơ sở của ngôn

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 58


ngữ SQL là đại số quan hệ, còn ngôn ngữ Datalog thì được xây dựng trên nền tảng của logic tân
từ cấp một.
Trong phần này, ta sẽ nghiên cứu nhiều khái niệm liên quan đến logic tân từ (hay logic vị
từ) cấp một, được sử dụng trong Datalog.

3.2.1. Cú pháp trong Datalog

Cú pháp của Datalog dựa trên cú pháp của Logic tân từ cấp một, (còn gọi là các phép tính
tân từ), đó là một ngôn ngữ hình thức được dùng để biểu diễn mối quan hệ giữa các đối tượng và
suy ra các mối quan hệ mới từ các mối quan hệ được biết là đúng. Logic tân từ cấp một được xây
dựng dựa trên tập ký hiệu và các quy ước về ký pháp như sau:

3.2.1.1. Các ký hiệu trong logic tân từ cấp một


- Các biến: thường được ký hiệu là x, y, z,...
- Các hằng: thường được ký hiệu là a, b, c,...
- Các tân từ: thường được ký hiệu là các chữ cái in hoa P,Q, R,… (có thể có chỉ số). Một tân
từ có thể có n đối là các biến hay các hằng, chẳng hạn: P(x), Q(x, y), R(a, b, c)...

- Các phép toán logic:  (hội),  (tuyển),  (phủ định),  (kéo theo), ở đây thứ tự ưu tiên
các phép toán là: , ,  và cuối cùng là phép .
- Các hàm: thường được ký hiệu là f, g, h,...

- Các lượng từ phổ dụng: với mọi () và tồn tại ()

3.2.1.2. Cú pháp trong logic tân từ cấp môt

* Hạng thức (term): được định nghĩa đệ quy là:

- Là một biến hay một hằng,


- Hoặc là kết quả của một hàm tác động lên một hạng thức.
Thí dụ 4.1. Với x là biến, a là hằng, f là hàm một biến thì x, a, b, f(x), f(a), f(f(x))... là các
hạng thức.

* Công thức (formula): (còn gọi là công thức được thiết lập đúng đắn), là một mệnh đề được xây
dựng đúng và được định nghĩa đệ quy như sau:

- Nếu P là một tân từ n đối và t1, t2,.., tn là các hạng thức thì P(t1, t2,.., tn) là một công thức
nguyên tố. Các công thức nguyên tố còn gọi là các literal.

- Nếu F1 và F2 là các công thức thì F1  F2, F1  F2, F1  F2,  F1 là các công thức.
- Nếu F là một công thức và x là biến không được lượng từ hóa (còn gọi là biến tự do)
trong F thì x(F) và x(F) là các công thức.
Thí dụ 4.2. Giả sử P, Q là các tân từ 2 đối, f là hàm 1 biến, x, y là các biến, a, b là các hằng,
khi đó ta có các công thức sau:

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 59


- P(b, x)
- Q(a, b)

- P(b, x)  Q(a, b)

- xy [Q(x, y) P(a, x)]

- x [P(x, a)  Q(b, f(x))]

3.2.1.3. Ngữ nghĩa của logic tân từ cấp một


Ngữ nghĩa của logic tân từ cấp một được giải thích qua ngữ nghĩa của các thành phần cơ
bản của nó, đó là các công thức, hàm, tân từ, hạng thức, biến và hằng...
- Một công thức được lý giải (giải thích) như một mệnh đề trên một tập đối tượng, tức là có
thể cho nó một ý nghĩa trên tập đối tượng đó.
- Miền thể hiện của một công thức: là tập đối tượng giải thích cho công thức đó, kí hiệu là D.

- Hàm f với n đối có thể được hiểu là một ánh xạ: f: Dn  D


- Một tân từ biểu diễn một quan hệ giữa các phần tử của D, có thể đúng, có thể sai.
- Các hằng được giải thích là những đối tượng cụ thể, còn các biến chỉ một đối tượng bất kỳ.
Thí dụ 4.3. Cho công thức:

xy [(Thủ_trưởng(x, y)  Thủ_trưởng(y, x))  Cùng_phòng(y, x)] (1)


Công thức (1) có thể được lý giải trên tập người D = {Khang, Phong, Mai, Lan, Long}, D
làm thành miền thể hiện của công thức. Các quan hệ hai ngôi Thủ_trưởng và Cùng_phòng có ý
nghĩa rõ ràng trên tập D. Công thức (1) là đúng nếu năm người Khang, Phong, Mai, Lan, Long
làm việc trong cùng phòng và có một người là trưởng phòng.
Thí dụ 4.4. Cho công thức:
x (x > x) (2)

Với x là hàm “phần nguyên của x”: với mọi số thực x thì x là số nguyên lớn nhất không
vượt quá x. Chẳng hạn 3.14 = 3 ; 3 = 3 ; -3.14 = - 4. Ký hiệu x cũng được gọi là số nguyên
sàn của số thực x.
Công thức (2) có thể được lý giải trên tập các số thực R, tức là tập số thực R được xem là
một miền thể hiện của công thức (2), tuy nhiên công thức này sẽ không đúng trên miền thể hiện
R. Nếu chọn D là miền các số thực không phải là số nguyên, tức là D = R \ Z, thì công thức (2)
sẽ đúng trên D.
- Các công thức đóng:
Qua thí dụ trên ta thấy: với 1 miền thể hiện cho trước, mỗi công thức sẽ có 1 giá trị chân lý
cho trước. Để tránh trường hợp mỗi công thức có thể có nhiều giá trị chân lý, ta chỉ xét các công
thức trong đó tất cả các biến đều được lượng từ hóa, gọi là các công thức đóng. Chẳng hạn, nếu
trong công thức (2), ta bỏ lượng từ x ở đầu công thức thì công thức còn lại không thể xác định
được giá trị chân lý duy nhất.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 60


Mọi công thức đóng F đều có một giá trị chân lý duy nhất, ký hiệu là V(F), trong một miền
thể hiện xác đinh. Với các công thức phức hợp, thì giá trị chân lý được xác định như sau:

V(F1  F2) = V(F1)  V(F2)

V(F1  F2) = V(F1)  V(F2)

V( F1) =  V(F1)

V(x F) = V(Fx = a) V(Fx = b) … trong đó a, b,… là các hằng của miền thể hiện D.

V(x F) = V(Fx = a)  V(Fx = b) … trong đó a, b,… là các hằng của miền thể hiện D.
V[P(a1, a2,…, an)] có giá trị đúng (True) nếu tân từ P(a1, a2, …, an) là đúng, và ngược lại.
- Mô hình của một tập công thức đóng: là một miền thể hiện làm cho mọi công thức của
tập này đều đúng.
Chẳng hạn, mô hình của tập gồm một công thức (2) là tập tất cả các số thực không phải là
số nguyên (miền D trong thí dụ 4).

3.2.2. Dạng câu trong Datalog

Với mọi công thức đóng F, ta có thể biến đổi để đưa nó về dạng chính tắc không chứa các
lượng từ, được gọi là dạng câu (clause).
- Dạng câu của công thức đóng: là một công thức thức đóng có dạng:

P1  P2  …  Pn  Q1  Q2  …  Qm (3)
Trong đó các Pi, Qj là các công thức nguyên tố không có dấu phủ định (còn gọi là các
literal dương, nếu trước các công thức nguyên tố có dấu phủ định thì gọi là các literal âm). Trong
câu (3), phần vế trái (trước dấu ) gọi là phần điều kiện, còn phần vế phải là phần kết luận.
Khi m =1, câu (3) được gọi là câu Horn và có dạng:
P1  P2  …  Pn  Q (4)
Khi cần nhấn mạnh tới phần kết luận, ta thường viết các câu (3) dưới dạng:

Q1  Q2  …  Qm  P1  P2  …  Pn (5)
Dấu mũi tên  được đọc là “nếu”
Với câu Horn (4) thường viết là:

Q  P1  P2  …  Pn,

và được đọc là “Q nếu P1, P2,.., Pn”. Q được gọi là đầu luật, còn P1 P2  …  Pn gọi là thân luật.
Áp dụng một số công thức biến đổi logic, công thức (3) tương đương với công thức:

(P1)  (P2)  …  (Pn)  Q1  Q2  …  Qm (6)


Như vậy, từ (6), ta có định nghĩa khác cho câu: một câu là một tuyển của các literal (tức là
tuyển của các công thức nguyên tố)

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 61


- Đưa các công thức đóng về dạng câu: Với công thức đóng F bất kỳ, trước hết ta cần loại
hết các lượng từ (để đưa F về dạng chính tắc không chứa các lượng từ), sau đó đưa F về dạng
câu. Quá trình này gồm 2 bước:
+ Bước 1. Loại bỏ các lượng từ:
Loại bỏ các lượng từ phổ dụng : Với giả thiết rằng tất cả các biến đều được lượng từ hoá
phổ dụng, ta có thể loại bỏ các lượng từ này mà không cần thay đổi gì.
Loại bỏ các lượng từ tồn tại  (nếu có): Công thức F với biến x có lượng từ tồn tại, ta có
thể loại bỏ lượng từ này nhờ áp dụng công thức:
x(F) = (Fx = a)  (Fx = b) … trong đó a, b,… là các hằng của miền thể hiện D.
+ Bước 2: Sau đó sử dụng các luật tương đương sau đây để đưa về dạng câu (3) hoặc về
dạng tuyển của các literal dạng (6).
Cho E và F là các công thức trong logic cấp một, khi đó ta có các luật tương đương sau:
E  F ≡ (¬E) ˅ F
E ↔ F ≡ (E → F) ˄ (F → E)

(E) ≡ E

(E  F) ≡ (E) ˄ (F)

(E ˄ F) ≡ (E)  (F)

(x(F)) ≡ x(F)

(x(F)) ≡ x(F)
Thí dụ 4.5. Hãy chuyển các công thức đóng dưới đây thành công thức dạng câu:
(a) xyz (P(x, y)  P(y, z)  P(x, z))
Giải: Tất cả các biến đã được lượng từ hóa phổ dụng, ta chỉ cần loại bỏ tất cả các lượng từ
phổ dụng để nhận được công thức ở dạng câu (3):
P(x, y)  P(y , z)  P(x, z)
Có thể đưa về dạng tuyển của các literal như dạng câu (6) nhờ áp dụng các luật tương
đương:
P(x, y)  P(y, z)  P(x, z))

(b) xy(P(x, y) zQ(x, z)), với z1, z2,.., zn là giá trị của biến z trong miền thể hiện D.
Giải: Trước hết loại bỏ các lượng từ phổ dụng với các biến x và y, ta nhận được công thức:

P(x, y) zQ(x, z)

Áp dụng công thức loại lượng từ tồn tại, ta nhận được công thức dạng câu (3):

P(x, y) (Q(x, z1)  Q(x, z2) …  Q(x, zn))

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 62


Áp dụng các luật tương đương vào công thức trên, nhận được dạng câu là tuyển các literal:

P(x, y)  (Q(x, z1)  Q(x, z2) …  Q(x, zn)) (câu dạng (6))

3.2.3. Các thuật toán suy diễn trong Datalog

Thuật toán suy diễn là một thủ tục để chứng minh một công thức T từ tập các công thức
{A1, A2, ..., An} đã được biết là đúng. T còn được gọi là định lý cần chứng minh, còn A1, A2, ...,
An gọi là các tiên đề. Nếu tồn tại một chứng minh của T từ {A1, A2, ..., An}thì ta ký hiệu:

{A1, A2,...,An}├ T.

Để chứng minh một định lý, thuật toán suy diễn sẽ dùng các quy tắc suy diễn để từ các tiên
đề suy dẫn ra một dãy các công thức, mà định lý cần chứng minh là công thức cuối cùng được
suy dẫn ra.
Một quy tắc suy diễn là một quy tắc cho phép sinh ra một công thức từ hai hoặc nhiều công
thức. Có hai quy tắc suy diễn quen biết trong logic tân từ cấp một:

3.2.3.1. Quy tắc suy diễn Modus ponens


Modus ponens trong tiếng Latin có nghĩa là phương pháp khẳng định, thường được sử
dụng trong thuyết “Tam đoạn luận”. Quy tắc này cho phép suy ra Q từ P  Q và P, có nghĩa là
nếu P  Q và P đã được chứng minh thì Q cũng được chứng minh.

Có thể hiểu quy tắc khẳng định này như sau: Cho một luật ‘P  Q’ (được thừa nhận là
đúng), nếu quan sát được sự kiện ‘P’ (là đúng) thì suy diễn ra sự kiện ‘Q’
(là đúng).

P  Q, P
- Ký hiệu quy tắc Modus ponens: (7)
Q
Quy tắc “đảo” của Modus ponens là quy tắc Modus tollens, còn gọi là “phương pháp phủ định”
P  Q, Q
- Ký hiệu quy tắc Modus tollens: (8)
P
Thí dụ 4.6.
(a) Suy diễn theo quy tắc Modus ponens:

Luật: Nếu hôm nay là thứ bẩy thì tôi sẽ đến thư viện (P  Q).
Quan sát: Hôm nay là thứ bẩy (P).
Suy diễn: Vậy tôi sẽ đến thư viện (Q).
(b) Suy diễn theo quy tắc Modus tollens:

Luật: Nếu hôm nay là thứ bẩy thì tôi sẽ đến thư viện (P  Q).

Quan sát: Hôm nay tôi không đến thư viện (Q).

Suy diễn: Vậy hôm nay không phải là thứ bẩy (P).

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 63


3.2.3.2. Quy tắc riêng biệt hóa

Quy tắc riêng biệt hóa cho phép suy ra F(a) từ công thức: x F(x).
Một cách trực quan, có nghĩa là nếu F(x) đã được chứng minh (là đúng) với mọi giá trị của
x, thì F(a) cũng được chứng minh là đúng..
xF( x )
Ký hiệu quy tắc riêng biệt hóa: (9)
F(a )

3.2.4. Phương pháp chứng minh bằng hợp giải

3.2.4.1. Thủ tục hợp nhất


Thủ tục hợp nhất cho phép so sánh hai công thức nguyên tố (là hai tân từ với n đối), quyết
định xem hai công thức nguyên tố có thể được làm đồng nhất nhờ các phép thế hay không. Thủ
tục này là một phần quan trọng trong phần lớn các phương pháp suy diễn trong logic tân từ.
Thủ tục hợp nhất của hai công thức nguyên tố được thực hiện như sau:
(i) Cho hai công thức là hai tân từ cùng tên, cùng số đối:
L1= P(t1, t2,..., tn); L2 = P(u1, u2,..., un).
(ii) Tìm cách thay thế các biến trong mỗi công thức bằng các hạng thức phù hợp (là các
hằng các biến, các hàm...), với mục đích làm cho hai công thức trở thành giống hệt nhau. Tức là
sử dụng các phép gán: S = {t1 : = a1 ; t2 : = a2 ; ... ; u1 = b1 ; u2 = b2 ; ... un = bn.}, trong đó các ai, bi
là các hằng hay biến phù hợp làm cho L1 = L2, thì hai công thức L1 và L2 được gọi là hợp nhất
được.
(iii) Tập các phép gán S gọi là phép thế S, ký hiệu là S = [t1/a1; t2/a2; ...; u1/b1; u2/b2; ... un /
bn], trong đó các ti, ui là các biến còn ai, bi là các hằng được thay vào các biến.
(iv) Nếu L1 và L2 là hợp nhất được bởi phép thay thế S thì ta kí hiệu L1[S] = L2[S].
Chú ý rằng hai công thức L1 = P(t1, t2, ..., tn) và L2 = P(u1, u2, …, un) không phải bao giờ
cũng hợp nhất được.
Thí dụ 4.7.
- Hai công thức P(x, y) và P(a, b) là hợp nhất được với phép thế S = [x/a ; y/b].
- Hai công thức P(f(x), a) và P(f(f(a), y) là hợp nhất được với phép thế
S = [x/f(a); y/a].
- Hai công thức P(f(x), x) và P(f(f(x), x) là không thể hợp nhất được vì x không thể đồng
thời là f(x) và x, cho nên không thể có phép thế nào để hai công thức trên trở thành giống nhau.

3.2.4.2. Quy tắc suy diễn Robinson


Quy tắc suy diễn Robinson là một quy tắc suy diễn cơ bản cho các công thức của logic tân
từ cấp một ở dạng câu. Quy tắc suy diễn Robinson được phát biểu như sau:
Quy tắc Robinson: Cho C1 và C2 là hai công thức có dạng câu:

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 64


C1 = F1 L1 và C2 = F2  L2 (hoặc L2  F2),
trong đó tồn tại một phép thế S để L1[S] = L2[S]. Khi đó quy tắc Robinson cho phép suy diễn ra
công thức: F1[S]  F2[S].

F1  L1 , F2  L 2 , L1[S]  L 2 [S]
- Ký hiệu quy tắc suy diễn Robinson: (10)
F1[S]  F2 [S]

- Công thức F1[S]  F2[S] ở mẫu số được gọi là giải thức của C1 và C2, đó là kết quả suy
diễn ra từ hai công thức dạng câu C1 và C2.

3.2.4.3. Phương pháp chứng minh bằng hợp giải


Quy tắc Robinson có tính đầy đủ, tức là mọi công thức có thể chứng minh từ một tập các
tiên đề thì sẽ được suy ra bằng việc áp dụng liên tiếp quy tắc Robinson cho các tiên đề và giải
thức thu được.
Phương pháp hợp giải cho phép áp dụng nhiều lần quy tắc Robinson để chứng minh một
định lý T từ tập các tiên đề {A1, A2,..., An} bằng phương pháp phản chứng, theo các bước sau:

Bước1. Biểu diễn các tiên đề và phủ định của định lý (T) dưới dạng tập các câu C
Bước 2. Áp dụng quy tắc Robinson cho mỗi cặp công thức có thể hợp nhất được trong tập
câu C, để nhận được một công thức mới là một giải thức, như vậy số câu trong C sẽ giảm dần cho
tới khi thu được tập câu nhỏ nhất, không thể hợp giải được nữa, tập câu cuối cùng này có thể là
tập câu rỗng (tập C = ).
Khi kết quả là câu rỗng (tất cả các câu trong C đều bị triệt tiêu), khi đó miền thể hiện của tập
câu là rỗng, tức là nó không thể được thỏa mãn. Nhưng tập các tiên đề được giả thiết là đúng,
vậy phủ định của định lý bị bác bỏ, do đó định lý T được chứng minh.
Trường hợp ngược lại, không thể thu được kết quả là câu rỗng, thì không thể chứng minh
được định lý T từ tập tiên đề đã cho.
Chú ý: Trong quy tắc Robinson thì F1, F2 có thể là các công thức rỗng, khi đó ta có các
trường hợp riêng của quy tắc Robinson:

L1 , F2  L 2 , L1[S]  L 2 [S]
(1) , (khi F1 = ) (11)
F2 [S]

F1  L1 , L 2 , L1[S]  L 2 [S]
(2) , (khi F2 = ) (12)
F1[S]

L1 , L 2 , L1[S]  L 2 [S]
(3) , (khi cả F1 = , F2 = ) (13)

Trong đó trường hợp 3 được áp dụng khá phổ biến: nếu trong tập câu C, có cặp công thức
là các tân từ cùng tên, là phủ định của nhau và hợp nhất được thì loại bỏ cặp công thức đó.
Thí dụ 4.8. Áp dụng phương pháp hợp giải, chứng minh định lý T: P(a, c) từ tập các tiên đề
sau:

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 65


(A1): P(a, b),
(A2): P(b, c),
(A3): xyz ( P( x, y)  P( y, z )  P( x, z )) .

Ta thực hiện các bước:

(1) Biểu diễn các tiên đề và phủ định của định lý (T) dưới dạng tập các câu:

C = { P(a, b), P(b, c), P( x, y)  P( y, z )  P( x, z ) ,  P(a, c)}

(2) Áp dụng quy tắc Robinson nhiều lần theo hình 4.2.

Hình 4.2. Sơ đồ chứng minh bằng hợp giải cho định lý T


Từ sơ đồ trên, ta thấy kết quả tập C = . Vậy định lý T: P(a, c) đã được
chứng minh.

3.3. BIỂU DIỄN CƠ SỞ DỮ LIỆU SUY DIỄN TRONG DATALOG

3.3.1. Biểu diễn CSDL suy diễn trong Datalog

Cơ sở dữ liệu suy diễn có thể được biểu diễn như một chương trình Datalog, gồm các
thành phần chính sau đây:
- Một tập các sự kiện (facts)
- Một tập các luật suy diễn (deductive rules)
- Một tập các ràng buộc toàn vẹn (integrity constraints)
Các thành phần trên đều có thể được biểu diễn bởi các câu Horn cơ bản có dạng:

A0  L1  L2  …  Ln (với n > 0) (14)


trong đó A0 là một công thức nguyên tố (còn gọi là một nguyên tố hay literal, đó là một tân từ n
đối) biểu diễn phần kết luận, còn mỗi Li là một công thức nguyên tố, biểu diễn một điều kiện
trong phần điều kiện.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 66


Mỗi câu Horn dạng (14) được coi là một luật: “nếu L1  L2  …  Ln thì A0”, hay để nhấn
mạnh phần kết luận, luật được đọc là: “A0 nếu L1  L2  …  Ln ” với A0 được gọi là đầu luật,
còn L1  L2  …  Ln gọi là thân luật. Các biến trong phần kết luận (đầu luật) và trong các điều
kiện (thân luật) được giả thiết là được lượng từ hóa phổ dụng trên toàn bộ công thức, vì vậy, các
lượng từ phổ dụng () luôn được bỏ qua.
Trong nhiều trường hợp, để cho ngắn gọn, câu Horn (14) có thể viết dưới dạng:
A0  L1, L2,…, Ln (với n > 0) (15)
Chúng ta sẽ không phân biệt hai cách viết (14) và (15).
Dưới đây, ta sẽ xem xét cách biểu diễn ba thành phần trên đây của CSDL suy diễn trong
Datalog.

3.3.1.1. Biểu diễn tập sự kiện EDB


Các sự kiện được biết là đúng trong CSDL suy diễn, vì vậy nó có thể biểu diễn bởi các luật
có phần thân là rỗng (do sự kiện luôn đúng, không cần điều kiện gì). Do đó mỗi sự kiện được
biểu diễn bởi đầu luật là một nguyên tố (tân từ n đối, với các đối được gán giá trị là hằng), không
cần có thân luật và mũi tên ngược () cũng được bỏ đi
cho gọn.
Chẳng hạn các sự kiện phát biểu rằng Mai là mẹ của Bách và Dương là bố của Tân được
biểu diễn bởi:
- Mẹ (Mai, Bách)
- Bố (Dương, Tân)
Một CSDL suy diễn chỉ chứa các sự kiện cơ sở, tức là các sự kiện trong EDB, đó là các tân
từ P(t1, t2, ..., ti, ...) trong đó các đối ti đều là các hằng.
Tân từ ứng với sự kiện cơ sở gọi là tân từ cơ sở, là tân từ cùng tên và các đối là các biến.
Chẳng hạn với hai sự kiện trên ta sẽ có các tân từ cơ sở tương ứng là
- Mẹ (x, y)
- Bố (x, y)

3.3.1.2. Biểu diễn tập các luật suy diễn (deductive rules)
Các luật suy diễn xác định các tân từ dẫn xuất, đó là các thông tin nội hàm. Các tân từ dẫn
xuất sẽ xác định các sự kiện được dẫn xuất từ luật và các sự kiện cơ sở được lưu trữ trong EDB.
Các sự kiện dẫn xuất không được lưu trữ trong CSDL suy diễn.
Tân từ dẫn xuất P là tập tất cả các luật suy diễn có cùng đầu luật là P.
Chẳng hạn, hai luật:
- “nếu x là Bố của y thì x là Cha_mẹ của y”
- “nếu x là Mẹ của y thì x là Cha_mẹ của y”,

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 67


sẽ định nghĩa tân từ dẫn xuất mới “Cha_mẹ (x, y)” xác định bởi các luật có cùng đầu luật:
- Cha_mẹ (x, y)  Bố (x, y) (đọc: x là cha mẹ của y nếu x là bố của y)
- Cha_mẹ (x, y)  Mẹ (x, y) (*)
Các sự kiện ứng với các tân từ dẫn xuất gọi là các sự kiện dẫn xuất, cũng được coi là đúng.
Các sự kiện này được coi là các thông tin nội hàm. Chẳng hạn nếu trong EDB có sự kiện
Mẹ(Mai, Bách) thì từ luật (*) trên đây ta suy dẫn ra được sự kiện dẫn xuất Cha_mẹ(Mai, Bách),
đây là một thông tin nội hàm, không được lưu trữ trong CSDL.

3.3.1.3. Biểu diễn tập các ràng buộc toàn vẹn (integrity constraints)
Các ràng buộc toàn vẹn thường được biểu diễn bằng các luật (câu) có đầu luật rỗng, còn
gọi là một phủ định hay một phản bác, có dạng:

 L1  L2  …  Ln (với n > 1) (16)

Ràng buộc toàn vẹn (16) khẳng định rằng L1  L2  …  Ln không bao giờ đúng trong
CSDL chứa ràng buộc toàn vẹn này.
Để cho thống nhất với cách viết các luật, đầu mỗi ràng buộc toàn vẹn (IC) cho phép viết
một tân từ không nhất quán IC1, IC2, ... nhằm đặt tên cho ràng buộc đó.
Chẳng hạn, một ràng buộc toàn vẹn khẳng định rằng không ai có thể vừa là Bố, vừa là Mẹ,
có thể được biểu diễn là:

IC2  Bố (x, y)  Mẹ (x, z)


Nếu một sự kiện ICi đúng trong một trạng thái CSDL nào đó, thì ràng buộc tương ứng bị vi
phạm trong trạng thái đó của CSDL.
Chú ý rằng tân từ không nhất quán cũng có thể chứa biến, nhằm xác định cá thể vi phạm
ràng buộc toàn vẹn. Chẳng hạn ràng buộc IC2 trên có thể viết là:

IC2(x)  Bố (x, y)  Mẹ (x, z),


trong đó, x là cá thể vi phạm nếu IC2 là đúng, vì khi đó x vừa là bố, vừa là mẹ.
Kết luận: một CSDL suy diễn D là một bộ ba D = {F, DR, IC}, trong đó F là tập hữu hạn các sự
kiện cơ sở (hay sự kiện), DR là tập hữu hạn các luật suy diễn và IC là tập hữu hạn các ràng buộc
toàn vẹn. Tập F là CSDL ngoại diên (EDB), còn DR và IC làm thành CSDL nội hàm (IDB).
Các tân từ trong CSDL suy diễn được chia thành hai loại:
- Tân từ cơ sở: là các tân từ ứng với các sự kiện, còn gọi là tân từ ngoại diên. Tân từ cơ sở
xuất hiện trong EDB và có thể xuất hiện trong thân các luật trong IDB (các luật suy diễn và các
ràng buộc).
- Tân từ dẫn xuất: là các tân từ được định nghĩa nhờ vào một hay một số luật suy diễn nào
đó, còn gọi là tân từ nội hàm hay khung nhìn. Tân từ dẫn xuất chỉ xuất hiện trong IDB, các sự
kiện ứng với các tân từ dẫn xuất gọi là sự kiện dẫn xuất (là một tân từ dẫn xuất với các đối là các
hằng). Sự kiện dẫn xuất không được lưu trữ hiển trong CSDL suy diễn, chỉ được xuất hiện trong
các khung nhìn được định nghĩa bởi một tân từ dẫn xuất.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 68


3.3.1.4. Thí dụ về biểu diễn một CSDL suy diễn.
Thí dụ 4.9. Cho một CSDL suy diễn mô tả các mối quan hệ trong một gia tộc.
EDB: Các sự kiện cơ sở
- Mẹ (Mai, Bách)
- Bố (Dương, Tân)
- Bố (Phát, Mai)
IDB: Các luật suy diễn
- Cha_mẹ (x, y)  Bố (x, y)
- Cha_mẹ (x, y)  Mẹ (x, y)
- Bà (x, y)  Mẹ (x, z)  Cha_mẹ (z, y)
- Tổ_tiên (x, y)  Cha_mẹ (x, y)
- Tổ_tiên (x, y)  Cha_mẹ (x, z)  Tổ_tiên (z, y)
- Tổ_tiên_không_trực_tiếp (x, y)  Tổ_tiên (x, y)   Cha_mẹ (x, y)
ICs: Các ràng buộc toàn vẹn
- IC1(x)  Cha_mẹ (x, x)
- IC2(x)  Bố (x, y)  Mẹ (x, z)

3.3.2. Biểu diễn khung nhìn trong CSDL suy diễn

Khái niệm khung nhìn (view) được dùng trong CSDL để phân ranh giới nội dung CSDL
với một nhóm người dùng. Khung nhìn là một cấu trúc dữ liệu ảo, được dẫn xuất từ các sự kiện
cơ sở hay các khung nhìn khác nhờ một hàm định nghĩa.
Trong CSDL suy diễn, các khung nhìn tương ứng với các tân từ dẫn xuất, và được định
nghĩa nhờ vào các luật suy diễn. Chẳng hạn ta có khung nhìn “Bà” được định nghĩa bởi một luật
suy diễn có đầu luật là tân từ Bà (x, y):

Bà (x, y)  Mẹ (x, z)  Cha_mẹ (z, y)


Khung nhìn được gọi là “đệ quy”, nếu nó được định nghĩa bởi các luật đệ quy, là các luật
mà có tân từ ở đầu luật cũng xuất hiện trong thân luật. Khung nhìn “Tổ_tiên” dưới đây là một
khung nhìn đệ quy:
Tổ_tiên (x, y)  Cha_mẹ (x, y)
Tổ_tiên (x, y)  Cha_mẹ (x, z)  Tổ_tiên (z, y)
Cũng giống như trong các CSDL quan hệ, khung nhìn trong CSDL suy diễn có các ưu việt
sau:
Khung nhìn làm đơn giản giao diện người dùng, vì có thể bỏ qua những dữ liệu không liên
quan đến người dùng. Chẳng hạn với luật:
Bà (x, y)  Mẹ (x, z)  Cha_mẹ (z, y),
thì khung nhìn Bà (x, y) chỉ cung cấp thông tin về người bà x và người cháu y, còn thông tin về
cha mẹ (tức z) được che dấu bởi định nghĩa của khung nhìn.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 69


Khung nhìn hỗ trợ tính độc lập logic của dữ liệu, vì nó cho phép thay đổi cấu trúc logic của
dữ liệu trong CSDL suy diễn, mà không cần phải tiến hành các thay đổi tương ứng cho các luật
khác. Chẳng hạn, giả sử tân từ cơ sở Bố (x, y) phải được thay bằng hai tân từ Bố1 (x, y) và Bố2
(x, y), mỗi tân từ chứa một tập con các xuất hiện của Bố (x, y), khi đó ta xem Bố (x, y) là một tân
từ khung nhìn được định nghĩa bởi:
Bố (x, y)  Bố1 (x, y)
Bố (x, y)  Bố2 (x, y),
thì ta không cần phải thay đổi các luật tham chiếu tới tân từ gốc Bố (x, y)
Khung nhìn cung cấp một biện pháp bảo vệ vì chúng ngăn ngừa người dùng truy cập tới dữ
liệu bên ngoài khung nhìn của họ.

3.4. TRUY VẤN TRONG CƠ SỞ DỮ LIỆU SUY DIỄN

3.4.1. Câu hỏi trong CSDL suy diễn

Các hệ QTCSDL suy diễn phải cung cấp một cơ chế xử lý câu hỏi, có khả năng trả lời các
câu hỏi được phát biểu theo các khung nhìn cũng như theo các tân từ cơ sở của một CSDL suy
diễn. Một thủ tục định giá câu hỏi sẽ tìm câu trả lời phù hợp với ngữ nghĩa của CSDL.
Theo cú pháp của Datalog, một câu hỏi Q trên CSDL suy diễn có dạng:
Q: ? W(x),
trong đó: x là một vector biến và / hoặc các hằng; W(x) là một hội của các literal.
Câu trả lời cho câu hỏi là một tập các giá trị của x sao cho W(x) là đúng và phù hợp với
EBD và IDB trong CSDL.
Thí dụ 4.10. Cho một CSDL suy diễn trong Datalog:
CSDL ‘Gia tộc’
EDB: Các sự kiện cơ sở
- Bố (An, Dương)
- Bố (An, Mai)
- Bố (Giáp, An)
- Bố (Giáp, Hồng)
- Mẹ (Xuân, An)
- Mẹ (Xuân, Hồng)
- Mẹ (Hồng, Giang)
- Mẹ (Giang, Minh)
IDB: Các luật suy diễn
- Cha_mẹ (x, y)  Bố (x, y) (Luật R1)
- Cha_mẹ (x, y)  Mẹ (x, y) (Luật R2)
- Bà (x, y)  Mẹ (x, z)  Cha_mẹ (z, y) (Luật R3)
- Tổ_tiên (x, y)  Cha_mẹ (x, y) (Luật R4)
- Tổ_tiên (x, y)  Cha_mẹ (x, z)  Tổ_tiên (z, y) (Luật R5)

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 70


Với “CSDL_Gia tộc” trên đây, có thể đặt một số câu hỏi như sau:
(1) ? Tổ_tiên (Giáp, Mai).
trả về giá trị đúng (True) nếu Giáp là tổ tiên của Mai. Câu trả lời là sai (False) trong trường hợp
trái lại.
(2) ? Tổ_tiên (Giáp, x).
trả về tập tất cả những người x nhận Giáp là tổ tiên (tập các con cháu của Giáp).
(3) ? Tổ_tiên (x, Mai).
trả về tập tất cả những người x là tổ tiên của Mai (tập cha mẹ, ông bà, cụ kỵ ... của Mai).
(4) ? Tổ_tiên (y, Mai)  Tổ_tiên (y, Dương)
trả về tập tất cả những người y là tổ tiên chung của Mai và Dương.

3.4.2. Các phương pháp định giá câu trong CSDL suy diễn

Có ba cách tiếp cận cơ bản để tìm câu trả lời cho một câu hỏi Q trong CSDL
suy diễn:

a. Tiếp cận theo chuỗi tiến (forward chaining):

Theo cách tiếp cận này, thủ tục định giá câu hỏi bắt đầu từ những sự kiện cơ sở và áp dụng
tất cả các luật suy diễn để tìm các sự kiện mới (các sự kiện dẫn xuất), cho đến khi không thể suy
ra thêm sự kiện mới nào. Sau đó câu hỏi sẽ được định giá bằng cách so khớp với toàn bộ tập sự
kiện cơ sở và sự kiện dẫn xuất. Cách tiếp cận này còn được gọi tiếp cận dưới-lên.
b.Tiếp cận theo chuỗi lùi (backward chaining):
Theo cách tiếp cận này, thủ tục định giá câu hỏi bắt đầu từ câu hỏi Q, và áp dụng các luật
để tìm những câu hỏi con tương đương với Q gần với các sự kiện cơ sở hơn, cho đến khi tìm
được những câu hỏi con có thể so khớp được với các sự kiện trong EDB, từ đó có câu trả lời cho
câu hỏi Q. Cách tiếp cận này còn gọi tiếp cận trên-xuống.
c.Tiếp cận bằng ma tập (magic sets):
Đây là cách tiếp cận tổ hợp cả hai cách tiếp cận trên, nhằm đạt được các ưu điểm của mỗi
cách tiếp cận.
Chúng ta sẽ trình bày chi tiết các phương pháp định giá câu hỏi trong CSDL suy diễn, dựa
trên các cách tiếp cận trên đây. Các phương pháp này sẽ được minh họa trên CSDL ‘Gia tộc’.

3.4.2.1. Định giá câu hỏi theo tiếp cận chuỗi tiến (forward chaining)
Đây là một thủ tục ngây thơ (the nive procedure) cho việc định giá câu hỏi. Theo cách tiếp
cận này, thủ tục định giá câu hỏi bắt đầu từ những sự kiện cơ sở và áp dụng tất cả các luật suy
diễn để tìm các sự kiện mới cho đến khi không thể suy ra thêm sự kiện mới nào. Sau đó câu hỏi
sẽ được định giá bằng cách so khớp với toàn bộ tập sự kiện cơ sở và sự kiện dẫn xuất.
Thủ tục này gồm hai bước:
- Bước 1: Tính mọi sự kiện là hệ quả logic của các quy tắc suy diễn để mở rộng tập sự
kiện. Điều này được thực hiện nhờ việc áp dụng các luật suy diễn trên tập EDB cho đến khi
không còn sự kiện mới nào được sinh ra. Gọi tập sự kiện mở rộng là EDB’.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 71


- Bước 2: Tìm câu trả lời từ việc so khớp câu hỏi Q với tập sự kiện mở rộng EDB’ vì tập
này chứa tất cả các thông tin được suy ra từ CSDL.
Thí dụ 4.11. Định giá câu hỏi Q trên CSDL “Gia tộc” theo cách tiếp cận chuỗi tiến:
Q: ? Bà (x, Mai)
Bước 1: Mọi thông tin được suy ra từ CSDL_Gia tộc được tính bởi các phép
lặp sau:
Lặp 0: Mọi sự kiện cơ sở đưa vào EDB’, có EDB’ = EDB. Chú ý rằng tập EDB’ luôn thay
đổi sau mỗi lần lặp dưới đây.
Lặp 1: Áp dụng luật R1 cho EDB’, thu được các sự kiện mới và thêm vào EDB’:
- Cha_mẹ (An, Dương)
- Cha_mẹ (An, Mai)
- Cha_mẹ (Giáp, An)
- Cha_mẹ (Giáp, Hồng)
Lặp 2: Áp dụng luật R2 cho EDB’(mới), thu được các sự kiện mới và thêm
vào EDB’:
- Cha_mẹ (Xuân, An)
- Cha_mẹ (Xuân, Hồng)
- Cha_mẹ (Hồng, Giang)
- Cha_mẹ (Giang, Minh)
Lặp 3: Áp dụng luật R3 cho EDB’ (mới), thu được các sự kiện mới và thêm
vào EDB’:
- Bà (Xuân, Dương)
- Bà (Xuân, Giang)
- Bà (Xuân, Mai)
- Bà (Hồng, Minh)
Lặp 4: Áp dụng lại các luật R1, R2, R3 cho EDB’ (mới), không có sự kiện mới nào được
suy ra. Bước 1 kết thúc.
Như vậy sau bước 1, ta được EDB’ gồm 20 sự kiện: 8 sự kiện cơ sở trong EDB và 12 sự
kiện dẫn suất trong các lần lặp (1), (2), (3) như trên.
Bước 2: So khớp câu hỏi Q trên tập EDB’ gồm tất cả các sự kiện cơ sở và dẫn xuất, đó là
các thông tin có được từ CSDL. Vì Bà (Xuân, Mai) là một sự kiện trong tập này cho nên câu trả
lời là: x = ‘Xuân’. Có nghĩa: Xuân là bà duy nhất của Mai được biết bời CSDL_gia tộc.
Nếu với câu hỏi: Q: ? Bà (Xuân, y) thì bước 1 cũng thực hiện như trên, ở bước 2, so khớp
câu hỏi với EDB’, ta sẽ có 3 sự kiện thỏa câu hỏi này:
- Bà (Xuân, Dương)
- Bà (Xuân, Giang)
- Bà (Xuân, Mai)
Vì vậy tập các cháu y nhận Xuân là bà sẽ gồm: {Dương, Giang, Mai}

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 72


Nhận xét: Thủ tục định giá câu hỏi theo tiếp cận chuỗi tiến có ưu điểm chính là đơn giản,
dễ thực hiện. Tuy nhiên cũng có nhiều nhược điểm:
- Nó suy ra nhiều hệ quả không liên quan đến câu hỏi. Chẳng hạn trong thí dụ trên, thủ tục
suy dẫn ra nhiều sự kiện không cần thiết: Cha_mẹ (Giang, Minh), Cha_mẹ (Hồng, Giang),
Cha_mẹ (Giáp, An), Bà (Xuân, Giang)... mà lẽ ra chỉ cần những sự kiện liên quan đến cha mẹ
của Mai là đủ.
- Thứ tự thực hiện các luật có thể ảnh hưởng đến hiệu quả định giá câu hỏi, tức là chi phí
tính toán phụ thuộc vào thứ tự áp dụng các luật. Chẳng hạn, trong thí dụ trên, nếu ta áp dụng luật
R3 trước tiên (ở lần lặp 1) thì sẽ không suy ra được kết quả nào, sau đó sau khi thực hiện R1, lại
phải áp dụng R3 một lần nữa. Rõ ràng là chi phí tính toán sẽ cao hơn thứ tự đã thực hiện trước.

3.4.2.2. Định giá câu hỏi theo tiếp cận chuỗi lùi (backward chaining)
Thủ tục này được mô tả như sau:
Cho trước câu hỏi Q, hãy xác định tập câu hỏi con Qi sao cho câu trả lời cho Q chính là
hợp các câu trả lời cho mỗi câu hỏi con Qi. Để có được các câu hỏi con Qi, mỗi tân từ dẫn xuất P
trong Q phải được thay thế bởi thân các luật định nghĩa P. Theo cách đó, các câu hỏi con thu
được sẽ “đơn giản” hơn câu hỏi ban đầu vì chúng được định nghĩa bởi các tân từ “gần hơn” với
các tân từ cơ sở.
Việc thay các câu hỏi bằng các câu hỏi con được lặp lại nhiều lần, cho đến khi nhận được
các câu hỏi chỉ chứa các tân từ cơ sở, khi đó chúng được so khớp với EDB và dễ dàng tìm được
câu trả lời. Các hằng trong câu hỏi Q ban đầu được sử dụng trong quá trình tạo các câu hỏi con,
vì chúng sẽ trỏ tới các tân từ cơ sở có liên quan đến câu hỏi ban đầu.
Thí dụ 4.12. Định giá câu hỏi Q trên CSDL_Gia tộc theo cách tiếp cận chuỗi lùi:
Q: ? Bà (x, Mai)
Thủ tục định giá câu hỏi theo cách tiếp chuỗi lùi sẽ thực hiện như sau:
Bước 1: Dùng luật R3: Bà (x, y)  Mẹ (x, z)  Cha_mẹ (z, y), thay y = ‘Mai’, câu hỏi Q
được đưa về câu hỏi con:
Q1: ? Mẹ (x, z)  Cha_mẹ (z, Mai)
Bước 2: Thay tân từ Cha_mẹ trong Q1 bởi các tân từ gần với các tân từ cơ sở hơn bằng
cách dùng các luật R1 và R2, ta được hai câu hỏi tương đương vói Q1:
Q2a: ? Mẹ (x, z)  Bố (z, Mai)
Q2b: ? Mẹ (x, z)  Mẹ (z, Mai)
Bước 3: Xét các câu hỏi Q2a và Q2b.
- Với câu hỏi Q2a, so khớp với EDB, ta có sự kiện Bố (An, Mai) là đúng, thay
z = ‘An’, câu hỏi này tương đương với câu hỏi:
Q3: ? Mẹ (x, An)
- Câu hỏi Q2b không có câu trả lời vì trong EDB không có sự kiện nào có thể so khớp
được với Mẹ (z, Mai).
Kết luận: Như vậy, câu hỏi Q ban đầu là tương đương với câu hỏi Q3. Câu hỏi này chỉ
chứa tân từ cơ sở Mẹ (x, y) nên có thể so khớp với các sự kiện trong EDB với y = An, do có một
sự kiện Mẹ (Xuân, An) nên cho câu trả lời là x = Xuân

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 73


Nhận xét: Thủ tục định giá câu hỏi theo tiếp cận chuỗi lùi có ưu điểm hơn cách tiếp cận
dưới-lên vì quá trình định giá câu hỏi có tính tới các hằng có trong câu hỏi. Cách tiếp cận này
không tính tất cả các hệ quả có thể có của CSDL, mà chỉ tính những hệ quả cần thiết cho quá
trình định giá. Tuy nhiên thủ tục này cũng có những nhược điểm:
- Nó xét đến từng sự kiện cơ sở mỗi khi chúng xuất hiện trong các câu hỏi con nào đó:
cách làm này kém hiệu quả vì phải quét CSDL nhiều lần.
- Thủ tục theo cách tiếp cận trên xuống có thể không kết thúc mà đi vào vòng lặp vô hạn,
nếu ta lựa chọn các câu hỏi con không phù hợp. Chẳng hạn nếu có luật suy diễn:
Tổ_tiên (x, y)  Cha_mẹ (x, y)
Tổ_tiên (x, y)  Cha_mẹ (x, z)  Tổ_tiên (z, y)
Giả sử việc tính toán bắt đầu với luật đệ quy: chuyển một câu hỏi về Tổ_tiên (đầu luật) lại
về câu hỏi về Tổ_tiên trong thân luật và vv... Quá trình chuyển câu hỏi sẽ đi vào vòng lặp không
bao giờ kết thúc.

3.4.2.3. Định giá câu hỏi theo tiếp cận Ma tập (Magic sets)
Tiếp cận ma tập là tổ hợp của hai cách tiếp cận trên, nhằm khai thác những ưu việt của mỗi
phương pháp.
Ý tưởng của phương pháp ma tập: cho một CSDL suy diễn D và câu hỏi Q trên một tân từ
dẫn xuất P, Ta sẽ viết lại các luật của D, trong đó các luật viết lại có tính đến thông tin trong câu
hỏi Q, ta nhận được CSDL tương đương D’, sau đó áp dụng cách tiếp cận dưới-lên trong CSDL
D’. Vì D’ chứa các luật viết lại, cho nên các sự kiện mới tính được chỉ liên quan đến câu hỏi Q.
Mục đích của sự viết lại các luật là đưa sự mô phỏng của tiếp cận trên-xuống vào các luật, làm
cho việc định giá câu hỏi theo phương pháp dưới-lên đỡ tốn công sức tính các sự kiện suy dẫn.
Như vậy, thủ tục định giá câu hỏi bằng ma tập sẽ gồm 2 bước:
Bước 1: Xây dụng CSDL D’ bằng cách viết lại các luật trong D, bằng cách đưa thông tin
của Q vào thân các luật viết lại. Thông tin trong câu hỏi Q được biểu thị bằng một tân từ “ma
ảo”, được coi như một tân từ ngoại diên và được gắn vào thân các luật viết lại.
Bước 2: Áp dụng thủ tục dưới-lên cho CSDL D’ để tìm câu trả lời. Chú ý rằng do CSDL
D’chứa các luật viết lại, cho nên chỉ suy ra các sự kiện liên quan đến câu hỏi Q. Do D là tương
đương D’, kết quả việc định giá câu hỏi Q trên D’ là tương đương với định giá Q trên CSDL ban
đầu.
Thí dụ 4.13. Hãy định giá câu hỏi Q trên CSDL_Gia tộc theo cách tiếp cận ma tập:
Q: ? Tổ_tiên (Hồng, x)
Bước 1: Với CSDL D (CSDL ‘Gia tộc’), xây dựng CSDL D’ bằng cách sửa các luật:
Thêm vào tân từ ma ảo: Magic_Toti (x) với sự kiện Magic_Toti (Hồng). Tân từ này có thể
hiểu đơn giản: x là dòng họ của Hồng, (đương nhiên Hồng là dòng họ
của Hồng!).
Các luật về “Tổ_tiên” R4 và R5 được viết lại như sau:
- Tổ_tiên (x, y)  Magic_Toti (x)  Cha_mẹ (x, y) (Luật R6)
- Magic_Toti (z)  Magic_Toti (x)  Cha_mẹ (x, z) (Luật R7)
- Tổ_tiên (x, y)  Magic_Toti (x)  Cha_mẹ (x, z)  Tổ_tiên (z, y) (Luật R8)

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 74


Luật R3 có thể loại bỏ khỏi CSDL mới vì không liên quan đến câu hỏi, còn luật R4, R5 đã
được thay thế bởi R6, R7, R8.
Ta nhận được CSDL mới D’ như sau:
CSDL D’
EDB: Các sự kiện cơ sở
- Bố (An, Dương)
- Bố (An, Mai)
- Bố (Giáp, An)
- Bố (Giáp, Hồng)
- Mẹ (Xuân, An)
- Mẹ (Xuân, Hồng)
- Mẹ (Hồng, Giang)
- Mẹ (Giang, Minh)
IDB: Các luật suy diễn (không sử dụng các luật R3, R4, R5)
- Cha_mẹ (x, y)  Bố (x, y) (Luật R1)
- Cha_mẹ (x, y)  Mẹ (x, y) (Luật R2)
- Tổ_tiên (x, y)  Magic_Toti (x)  Cha_mẹ (x, y) (Luật R6)
- Magic_Toti (z)  Magic_Toti (x)  Cha_mẹ (x, z) (Luật R7)
- Tổ_tiên (x, y)  Magic_Toti (x)  Cha_mẹ (x, z)  Tổ_tiên (z, y) (Luật R8)
Bước 2: Định giá câu hỏi Q theo tiếp cận chuỗi tiến trong CSDL D’
Áp dụng các luật R1 và R2 trong D’, ta tính được 8 sự kiện của tân từ suy dẫn Cha_mẹ(x,
y), trong đó nói riêng, ta đã có:
- Cha_mẹ (Hồng, Giang)
- Cha_mẹ (Giang, Minh)
Tiếp tục tính các sự kiện mới của D’ nhờ thực hiện các lần lặp:
Lặp 1: Áp dụng luật R6, suy dẫn ra: Tổ_tiên (Hồng, Giang).
Lặp 2: Áp dụng luật R7, suy dẫn ra: Magic_Toti (Giang).
Lặp 3: Áp dụng luật R8: Không có sự kiện mới nào được suy ra.
Lặp 4: Áp dụng luật R6, suy dẫn ra: Tổ_tiên (Giang, Minh).
Lặp 5: Áp dụng luật R7, suy dẫn ra: Magic_Toti (Minh).
Lặp 6: Áp dụng luật R8 suy dẫn ra: Tổ_tiên (Hồng, Minh).
Lặp 7: Không có sự kiện mới nào được suy ra nhờ áp dụng các luật R6, R7, R8.
Kết quả thu được là: {Tổ_tiên (Hồng, Giang), Tổ_tiên (Hồng, Minh)} là hai sự kiện so
khớp được với câu hỏi. Vậy Hồng là tổ tiên của Giang và Minh.
Vậy bằng cách tính toán trên các luật viết lại, rõ ràng các sự kiện được suy dẫn nhờ các
luật trong D’ không nhiều, chỉ gồm những sự kiện liên quan đến câu hỏi Q. Điều này được thực
hiện nhờ tân từ Magic_Toti (x) được đưa vào thân các luật và bởi sự kiện Magic_Toti (Hồng),
cho phép ta chỉ tính đến các con cháu trong “dòng họ của Hồng”.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 75


BÀI TẬP CHƯƠNG 3
1. Hãy trình bày những thành phần chính của một hệ Cơ sở dữ liệu suy diễn. Mục đích và yêu cầu của
một hệ CSDL suy diễn?
2. Thế nào là một công thức đóng?, thế nào là một công thức dạng câu? Hãy chuyển các công thức đóng
dưới đây thành công thức dạng câu:
a. xyz(P(x, y)P(y, z)  P(x, z))
b. xy(P(x, y)  zQ(x, z), với z1, z2,…, zn là giá trị của biến z trong miền thể hiện D
c. xzy(P(x, y)  Q(x, z)), với y1, y2,…, ym là giá trị của biến y trong miền thể hiện D
3. Phân biệt tân từ cơ sở và tân từ dẫn xuất, sự kiện cơ sở và sự kiện dẫn xuất trong CSDL suy diễn. Với
các dữ kiện sau đây của một CSDL suy diễn, hãy xác định các tân từ cơ sở, tân từ dẫn xuất, sự kiện
cơ sở và sự kiện dẫn xuất:
P(a, b), P(b, c), P(b, d), P(x,y), Q(x,y),
Q(x, z)  P(x, y)  P(y, z)
với x, y, z là các biến, a, b, c, d là các hằng.
4. Hãy xây dựng các tân từ cơ sở và xác định các sự kiện cơ sở ứng với các quan hệ sau đây:
R1 A B C R2 C D
1 3 6 5 7
1 3 5 6 8
2 4 6
5. Chứng minh rằng quy tắc Modus Ponens là một trường hợp riêng của qui tắc Robinson.
6. Cho các tiên đề:
A1: P(a, b),
A2: P(b, c), (với a, b, c: các hằng)
A3: Q(x, y)  P(x, y),
A4: Q(x, y)  P(x, z)  Q(z, y), (với x, y, z: các biến)
Dùng quy tắc Robinson, hãy chứng minh định lý Q(a, c) (theo phép chứng minh bằng hợp giải).
6. Trình bày các phương pháp định giá câu hỏi theo các cách: “Dưới lên”, “Trên xuống” và “Ma tập”.
Hãy so sánh ưu nhược điểm của các phương pháp này.
7. Hãy xem xét CSDL ‘Gia tộc’ đã cho trong thí dụ 4.10.
a. Hãy viết các tân từ cơ sở và các tân từ dẫn xuất của CSDL này
b. Hãy viết các luật định nghĩa tân từ Ông (x, y) (ngữ nghĩa: x là ông của y), Ông_nội (x, y) (ngữ
nghĩa: x là ông nội của y), Ông_ngoại (x, y) (ngữ nghĩa: x là ông ngoại của y), và thêm các luật này vào
tập IDB của CSDL ‘Gia tộc’.
c. Với CSDL đã bổ sung các luật ở phần b/, hãy định giá câu hỏi Q: ?Ông (x, giang) bằng phương
pháp chuỗi tiến; chuỗi lùi.
d. Với CSDL ‘Gia tộc’, hãy định giá câu hỏi Q: Tổ_tiên (Giáp, x)

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 76


Chương 4

CẬP NHẬT CÁC CƠ SỞ DỮ LIỆU SUY DIỄN

Một CSDL suy diễn có thể được cập nhật thông qua một giao dịch tác động vào các sự
kiện cơ sở hoặc các sự kiện dẫn xuất thông qua các khung nhìn. Như vậy, việc cập nhật CSDL
suy diễn có thể thực hiện bằng hai cách:
- Cập nhật CSDL ngoại diên (EDB) thông qua các tân từ cơ sở, hoặc:
- Cập nhật trên các khung nhìn, thông qua tân từ dẫn xuất định nghĩa khung nhìn.
Do sự có mặt của các luật suy diễn cũng như các ràng buộc toàn vẹn nên việc cập nhật có
thể cảm sinh ra nhiều thay đổi trên các thông tin nội hàm, trên các khung nhìn và trên các ràng
buộc toàn vẹn. Chương này sẽ xem xét một số vấn đề quan trọng nhất liên quan đến cập nhật
CSDL suy diễn, bao gồm việc tính toán những thay đổi của các sự kiện dẫn xuất khi cập nhật các
sự kiện cơ sở (cập nhật EDB), những thay đổi của CSDL khi cập nhật khung nhìn và việc đảm
bảo các ràng buộc toàn vẹn khi thực hiện các phép cập nhật.
Tất cả các vấn đề trên được trình bày thông qua một CSDL suy diễn dưới đây:
CSDL_WORKS
EDB: Các sự kiện cơ cở
- Nhan_vien (Duong, Ban_hang)
- Nhan_vien (Anh, Tiep_thi)
- Nhan_vien (Phat, Tiep_thi)
- Truong_phong (Ban_hang, Mai)
- Truong_phong (Tiep_thi, An)
- Trong_do_tuoi (Duong)
- Trong_do_tuoi (Anh)
- Trong_do_tuoi (Phat)
- Trong_do_tuoi (Giap)
IDB: Các luật suy diễn
- Nhan_su (n, p, t) ← Nhan_vien (n, p)  Truong_phong (p, t)
- Lam_viec (n)←Nhan_vien (n,p)
- That_nghiep (n)← Trong_do_tuoi (n)   Lam_viec (n)
ICs: Các ràng buộc
- IC1 (p, t1, t2) ← Truong_phong (p, t1)  Truong_phong (p, t2)  (t1# t2)
- IC2 (n) ← Lamviec (n)   Trong_do_tuoi (n)

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 77


4.1. CẬP NHẬT CƠ SỞ DỮ LIỆU NGOẠI DIÊN

Một CSDL suy diễn có thể được cập nhật thông qua việc áp dụng một tập các giao dịch,
tác động vào các sự kiện cơ sở, tức là CSDL suy diễn có thể được cập nhật bằng việc cập nhật
CSDL ngoại diện (EDB). Hệ quản trị CSDL suy diễn có chức năng quản lý dữ liệu như đối với
mọi CSDL thông thường, do đó sẽ cung cấp chức năng cập nhật này.
Tuy nhiên, do trong CSDL suy diễn có các luật suy diễn, cho nên những cập nhật trên EDB
sẽ cảm sinh nhiều thay đổi trên các thông tin nội hàm, vì vậy ta cần phải tính được những thay
đổi này khi có những cập nhật trên EDB (điều này khác với CSDL thông thường: cập nhật dữ
liệu gì thì chỉ có dữ liệu đó thay đổi).

4.1.1. Tính toán những thay đổi khi cập nhật CSDL ngoại diên

Khi cập nhật các sự kiện cơ sở trong CSDL ngoại diên (EDB), ta cần tính được những thay
đổi của tất cả các sự kiện dẫn xuất của các tân từ dẫn xuất.
Việc tính toán những thay đổi có thể thực hiện bằng cách: tính tất cả các sự kiện dẫn xuất
của các tân từ dẫn xuất trước và sau khi thực hiện phép cập nhật, so sánh các kết quả để tính
được các thay đổi do phép cập nhật.
Thí dụ 5.1. Xét CSDL_Works. Hãy tính toán những thay đổi do phép cập nhật T trên EDB:
T = {insert [Nhân_viên (Giáp, Bán_hàng)]}
Bước 1: Tính các sự kiện dẫn xuất của các tân từ dẫn xuất Nhan_su (n, p, t), Lam_viec (n),
That_nghiep (n), ta có các sự kiện dẫn xuất trước khi cập nhật là:

- Nhan_su (Duong, Ban_hang, Mai)


- Nhan_su (Anh, Tiep_thi, An)
- Nhan_su (Phat,Tiep_thi, An)
- Lam_viec (Duong)
- Lam_viec (Anh)
- Lam_viec (Phat)
- That_nghiep (Giap)
Bước 2: Tính lại các sự kiện dẫn xuất sau phép cập nhật T, ta có:
- Nhan_su (Duong, Ban_hang, Mai)
- Nhan_su (Anh, Tiep_thi, An)
- Nhan_su (Phat,Tiep_thi, An)
- Nhan_su (Giap, Ban_hang, Mai)
- Lam_viec (Duong)
- Lam_viec (Anh)
- Lam_viec (Phat)
- Lam_viec (Giap)

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 78


Bước 3: So sánh trước và sau khi cập nhật để tính toán các thay đổi do việc
chèn thêm sự kiện cơ sở [Nhân_viên (Giáp, Bán_hàng)], những thay đổi do phép cập nhật T là:
- Chèn thêm các sự kiện dẫn xuất: [Nhan_su (Giap, Ban_hang, Mai)] và [Lam_viec
(Giap)].
- Xóa bỏ sự kiện [That_nghiep (Giap)].

4.1.2. Các hiệu ứng khi cập nhật CSDL ngoại diên

Việc tính toán các thay đổi theo cách tính trên đây có ưu điểm: đơn giản, luôn tính đúng
những thay đổi do phép cập nhật. Tuy nhiên, nó cũng có nhược điểm là cách tính này kém hiệu
quả, mất nhiều công sức do phải tính cả những sự kiện không liên quan đến phép cập nhật.
Chúng ta có thể tính toán các thay đổi của phép cập nhật một cách hiệu quả hơn, bằng cách
xem xét các thay đổi từ chính phép cập nhật, nhờ áp dụng các luật suy diễn có thân luật chứa tân
từ cơ sở của sự kiện cập nhật. Điều này sẽ tránh phải tính tất cả những sự kiện dẫn xuất không
liên quan đến phép cập nhật. Theo cách này, phải lưu ý các hiệu ứng của việc cập nhật một sự
kiện cơ sở, đó là:
- Một giao dịch cập nhật có thể cảm sinh nhiều thay đổi (như thí dụ 5.1)
- Việc tính toán những thay đổi có thể không đơn điệu (tính đơn điệu: chỉ tăng hoặc chỉ
giảm theo các sự kiện cơ sở được chèn hoặc xóa)
+ Phép chèn một sự kiện cơ sở không chỉ làm tăng mà có thể làm giảm các sự kiện dẫn
xuất.
+ Phép xóa một sự kiện cơ sở không chỉ làm giảm mà có thể làm tăng các sự kiện dẫn xuất.
Nguyên nhân: khi các luật suy diễn có các literal âm (công thức nguyên tố ở dạng phủ
định) thì việc chèn thêm sự kiện cơ sở có thể cảm sinh việc xóa bỏ sự kiện dẫn xuất và ngược lại.
Tính không đơn điệu làm cho việc tính toán những thay đổi khi cập nhật EDB là khá khó
khăn.
- Hiệu ứng tổng hợp của nhiều phép cập nhật: Một giao dịch có thể chứa nhiều phép cập
nhật các sự kiện cơ sở, một cách tiếp cận khá “ngây thơ” là tính các thay đổi cảm sinh của các
cập nhật bằng cách tính toán các thay đổi cho mỗi cập nhật độc lập với nhau và xem kết quả là
hợp của các cập nhật đó. Tuy nhiên điều này chỉ có thể làm được khi không có các literal âm
trong các luật duy dẫn, trong trường hợp cơ bản, cần xem xét các thay đổi thật sự do hiệu ứng
tổng hợp của nhiều phép cập nhật.
Thí dụ 5.2: Với luật “That_nghiep (n) ← Trong_do_tuoi (n)   Lam_viec (n)”, do luật
này chứa literal âm [  Lam_viec (n)], nên sẽ cảm sinh những thay đổi không đơn điệu:
- Khi chèn thêm sự kiện cơ sở [Nhân_viên (Giáp, Bán_hàng)] ở thí dụ 5.1, đã cảm sinh
việc xóa bỏ sự kiện dẫn xuất: [That_nghiep (Giap)].
- Khi thực hiện phép cập nhật T để xóa bỏ một sự kiện cơ sở:
T = {delete [Nhan_vien (Duong, Ban_hang)]},
sẽ cảm sinh các thay đổi:

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 79


S = {delete [Nhan_su(Duong, Ban_hang, Mai)]; delete[Lam_viec (Duong)]; Insert
[That_nghiep (Duong)]}
Thí dụ 5.3. Giả sử giao dịch T dưới đây gồm 2 phép cập nhật được áp dụng trên
CSDL_Works:
T = {delete [Nhan_vien (Duong, Ban_hang)], delete[Trong_do_tuoi (Duong)]}
- Khi đó phép cập nhật thứ nhất trong T sẽ cảm sinh S1 cập nhật các sự kiện
dẫn xuất:
S1= {delete [Nhan_su (Duong, Ban_hang, Mai)], delete[Lam_viec (Duong)], Insert
[That_nghiep (Duong)]}
- Phép cập nhật thứ hai sẽ không cảm sinh ra bất kì thay đổi nào. Như vậy có thể cho rằng
các thay đổi do giao dịch T là: S = S1  S2 = S1.
Thực tế thì không phải như vậy, vì phép xóa bỏ sự kiện cơ sở [Trong_do_tuoi (Duong)] sẽ
ngăn cản việc chèn thêm [That_nghiep (Duong)]. Do đó các thay đổi thực sự của các sự kiện dẫn
xuất (thông tin nội hàm) bởi giao dịch cập nhât T sẽ là:
S = {delete[Nhan_su (Duong, Ban_hang, Mai], delete[Lam_viec (Duong)]}

4.1.3. Ứng dụng của việc tính toán những thay đổi

Việc tính toán những thay đổi có những ứng dụng chính sau đây:

a. Bảo trì “khung nhìn được vật thể hóa”

Định nghĩa 5.1: Một khung nhìn được gọi là vật thể hóa nếu ngoại diên của nó (là các sự
kiện dẫn xuất xác định bởi tân từ định nghĩa khung nhìn) được lưu trữ vật lý trong CSDL.
Điều này sẽ rất có lợi cho việc xử lí câu hỏi vì có thể sử dụng khung nhìn như một tân từ
cơ sở thay vì phải tính ngoại diên của nó, khi đó việc định giá câu hỏi sẽ nhanh hơn, vì các sự
kiện suy dẫn của khung nhìn đã có sẵn trong CSDL.
Tuy nhiên, ngoại diên của một khung nhìn lại được xác định bởi luật suy diễn, do đó khi
EDB được cập nhật thì ngoại diên mới của khung nhìn vật thể hóa phải được tính lại. Để làm
điều này, thay vì phải áp dụng luật suy diễn cho mỗi khung nhìn vật thể hóa ta chỉ cần xác định
thay đổi đã được tính toán và cập nhật những thay đổi này cho các sự kiện suy dẫn của các
khung nhìn được vật thể hóa một cách thích hợp.

b. Kiểm tra ràng buộc toàn vẹn (IC)

Các ràng buộc toàn vẹn kiểm tra các điều kiện mà mỗi trạng thái CSDL phải được thỏa
mãn. Do đó, khi tính toán các thay đổi do một giao dịch cảm sinh ra, nếu có một kết quả vi phạm
ràng buộc toàn vẹn thì giao dịch đó phải hủy bỏ.
Thí dụ 5.4. Trong CSDL_Works, ta có ràng buộc toàn vẹn IC2:
IC2 (n) ← Lam_viec (n)   Trong_do_tuoi (n)
Tức là một người n không trong độ tuổi thì không thể thỏa Lam_viec (n).
Nếu ta chèn thêm sự kiện: insert [Nhan_vien (Nam, Ban_hang)], nhưng không chèn sự
kiện: [Trong_do_tuoi(Nam)]. Khi đó sự kiện dẫn xuất [Lam_viec (Nam)] sẽ được cảm sinh, dẫn

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 80


đến vế trái của IC2 sẽ đúng:[ Lam_viec (Nam)   Trong_do_tuoi (Nam)]. Điều này sẽ vi phạm
IC2, và phép chèn insert [Nhan_vien (Nam, Ban_hang)] sẽ bị loại bỏ để đảm bảo tính nhất quán.

c. Giám sát điều kiện trong một CSDL tích cực

Định nghĩa 5.2: Một CSDL được gọi là tích cực nếu giao dịch có thể được thực hiện
không chỉ từ bên ngoài bởi một yêu cầu của người dùng mà còn được tự động thực hiện từ bên
trong khi một điều kiện nào đó của CSDL được thỏa mãn.
Hành vi tích cực được đặc tả nhờ vào các luật ‘điều kiện-hành động’ (Condition-Action
rule: CA rule), hoặc các luật ‘sự kiện-điều kiện-hành động’ (Event-Condition-Action rule: ECA
rule).
Thí dụ 5.5. CSDL_Works sẽ trở thành một CSDL tích cực nếu thêm vào một luật: ‘sự kiện
– điều kiện – hành động’ như sau:
Event: Insert (Nhan_vien (n, p))
Condiction: Nhan_vien (n, p)  Truong_phong (p, Mai)
Action: “Thực hiện giao dịch T”
Giải thích: Khi nhân viên n được liên kết với phòng p thì giao dịch T nào đó (đã cài đặt
sẵn) phải được tự động thực hiện nếu phòng p có Mai là trưởng phòng, mà không cần có sự tác
động từ bên ngoài.
Trong thí dụ này, khi một sự kiện (event) được cập nhật, việc tính toán các thay đổi sẽ cho
phép giám sát các điều kiện (condiction) để quyết định một hoạt động (action) theo luật AC hay
EAC, mà không cần có tác động từ bên ngoài.
Một CSDL không có tính tích cực như trên gọi là CSDL thụ động.

4.2. CẬP NHẬT KHUNG NHÌN

Những ưu điểm của khung nhìn trong CSDL suy diễn chỉ có ý nghĩa thực sự nếu người
dùng không phải phân biệt khung nhìn với một tân từ cơ sở. Và như vậy hệ QTCSDL suy diễn
phải cho phép người dùng có thể cập nhật những sự kiện dẫn xuất của các khung nhìn như là với
các sự kiện cơ sở.

4.2.1. Quá trình cập nhật khung nhìn

Bài toán cập nhật khung nhìn trên CSDL suy diễn đặt ra như sau:
Cho một CSDL suy diễn và một yêu cầu cập nhật U cho một khung nhìn V, hãy xác định
những thay đổi trên các sự kiện suy dẫn của khung nhìn và các thay đổi trên EDB của CSDL.
Quá trình cập nhật khung nhìn trong CSDL suy diễn có thể được mô tả hình thức như sau:
- Giả sử một khung nhìn được xác định bởi hàm khung nhìn V, với V được định nghĩa bởi
tập các luật suy diễn. Khi đó các sự kiện dẫn xuất trên khung nhìn là V(EDB), trong đó EDB là
CSDL ngoại diên (tập các sự kiện).

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 81


- Người dùng yêu cầu một phép cập nhật U trên tập sự kiện dẫn xuất của khung nhìn
V(EDB), tức là cần tính U[V(EDB)], yêu cầu này sẽ được chuyển dịch thành một tập các cập
nhật trên EDB, ký hiệu là T[U(EDB)], T(U) gọi là phép dịch chuyển của U trên tập các sự kiện
cơ sở EDB. T[U(EDB)] là cơ sở dữ liệu ngoại diên mới nhận được bởi phép cập nhật U.
- Tác động hàm khung nhìn V lên CSDL ngoại diên mới là T[U(EDB)] để nhận được
khung nhìn đã cập nhật: V[T(U(EDB))]
Quá trình trên được mô tả bằng sơ đồ sau:

KHUNG NHÌN V KẾT QUẢ CẬP NHẬT U(V)

Yêu cầu V(EDB) V[T(U(EDB))]


cập nhật U

V T(U) V

EDB T[U(EDB)]

Hình 5.1. Sơ đồ cập nhật khung nhìn V(EDB)

Trong sơ đồ trên:
- Hàng (1): Khung nhìn và các yêu cầu cập nhật trên khung nhìn;
- Hàng (2): CSDL ngoại diên EDB và các biến đổi trong EDB.
Thí dụ 5.5. Xét CSDL_WORKS và một yêu cầu cập nhật U trên khung nhìn:
[Lam_viec(n)]
U ={delete [Lam_viec (Phat)]};
Yêu cầu cập nhật này được thỏa mãn bởi phép dịch chuyển:
T = {delete [Nhan_vien (Phat, Tiep_thi)]}

4.2.2. Các hiệu ứng cập nhật khung nhìn


Có một số hiệu ứng của các phép cập nhật khung nhìn, làm cho vấn đề này trở nên phức
tạp, vì vậy vẫn chưa có sự nhất trí về cách thức đưa công nghệ cập nhật khung nhìn vào các sản
phẩm thương mại.
a. Phát sinh các dịch chuyển bội (Multiple transactions)
Có thể có nhiều chuyển dịch cùng thỏa mãn một yêu cầu cập nhật khung nhìn.
Thí dụ 5.6. Xét CSDL_WORKS. Với phép cập nhật U trên khung nhìn [Nhan_su (n, p, t)]:
U = {delete[Nhan_su(Phat, Tiep_thi, An)]}
Khi đó sẽ có hai phép dịch chuyển cùng thỏa mãn U:
T1 = {delete (Nhan_vien (Phat,Tiep_thi))}
T2 = {delete (Truong_phong(Tiep_thi, An))}

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 82


Với hiệu ứng phát sinh các dịch chuyển bội, yêu cầu đặt ra 2 đòi hỏi:
(1) Sự cần thiết cần phải biết được tất cả các chuyển dịch thỏa mãn U.
(2) Cần có các tiêu chuẩn để lựa chọn dịch chuyển tốt nhất, vì chỉ cần một dịch chuyển là
đủ để thỏa mãn U. Một cách đơn giản là chọn dịch chuyển ít tác động nhất tới CSDL ngoại diên.
b. Các hiệu ứng phụ (Side effects)

Việc áp dụng một phép dịch chuyển có thể cảm sinh ra những cập nhật không mong muốn
lên khung nhìn đang cập nhật hoặc các khung nhìn khác. Tức là có thể xảy ra trường hợp:
U[V(EDB)]  V[T(U(EDB))]
Các hiệu ứng phụ này thường người dùng không biết là đã xảy ra.
Thí dụ 5.7. Xét CSDL_Works.
Với yêu cầu cập nhật khung nhìn [Nhan_su (n, p, t)], trong thí dụ 5.6, với phép cập nhật U:
U = {delete[Nhan_su(Phat, Tiep_thi, An)]}
Phép cập nhật này có thể được thỏa bởi dịch chuyển: T1 = {delete[Nhan_vien
(Phat,Tiep_thi)]}, khi đó sẽ cảm sinh ra hiệu ứng phụ:
S1={delete[Lam_viec (Phat)] ; insert[That_nghiep (Phat)]}
Nếu thực hiện phép dịch chuyển: T2 = {delete[Truong_phong(Tiep_thi, An)]} sẽ cảm sinh
ra hiệu ứng phụ:
S2 = {delete[Nhan_su (Anh, Tiep_thi, An)], delete[Nhan_su(Phat,Tiep_thi, An)]}

c. Kết quả cập nhật khung nhìn có thể không đơn điệu

Với sự có mặt của các liberal âm thì kết quả quá trình cập nhật khung nhìn là không đơn
điệu, tức là việc chèn thêm sự kiện dẫn xuất có thể dẫn tới xỏa bỏ một số sự kiện cơ sở và ngược
lại, việc xóa bỏ sự kiện dẫn xuất có thể được thỏa bằng việc chèn thêm sự kiện cơ sở.
Thí dụ 5.8. Xét CSDL_Works. Yêu cầu cập nhật khung nhìn [That_nghiep(n)]:
U = {insert [That_nghiep (Duong)]}
Yêu cầu này có thể được thỏa bằng dịch chuyển:
T = {delete[Nhan_vien (Duong, Ban_hang)]}

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 83


BÀI TẬP CHƯƠNG 4
1. Một công ty gồm 2 phòng “Bán hàng” và “Tiếp thị”. Công ty gồm có một giám đốc, mỗi phòng có
một trưởng phòng và các nhân viên. Trưởng phòng là cấp trên trực tiếp của nhân viên trong phòng.
Giám đốc là cấp trên trực tiếp của các trưởng phòng và là cấp trên của tất cả các nhân viên trong công
ty. Đương nhiên cấp trên trực tiếp cũng là cấp trên.
CSDL_Cong ty:
Các sự kiện (EDB):
Nhân_viên (Dương, B_Hàng), Nhân_viên (Bình, B_Hàng),Trưởng_phòng (B_Hàng, Mai),
Nhân_viên (Hồng, T_Thị), Nhân_viên (Nam, T_Thị), Trưởng_phòng (T_Thị, Hà),
Trong_độ_tuổi (Dương), Trong_độ_tuổi (Hồng),Trong_độ_tuổi (Nam), Trong_độ_tuổi (Bắc),
Giám_đốc (Thanh).
Các luật (IDB):
Nhân_sự (n, p, t) ← Nhân_viên (n, p)  Trưởng_phòng (p, t)
Làm_việc (n) ← Nhân_viên (n, p)
Thất_nghiệp (n) ← Trong_độ_tuổi(n)   Làm_việc (n)
a. Hãy viết (tập) luật định nghĩa các tân từ suy dẫn:
- Cấp_trên_Trực_Tiếp(x, y),
- Cấp_trên(x, y)
b. Hãy định giá câu hỏi: ? Cấp_trên(x, Hồng) theo các phương pháp: chuỗi tiến, chuỗi lùi và ma tập.
c. Tính toán tất cả những thay đổi bởi việc thực hiện giao dịch:
T = {insert (Nhân_viên(Bắc, T_thị)), delete (Nhân_viên(Bình, B_Hàng))}
d. Nếu người dùng xoá bỏ sự kiện: Nhân_viên (Dương, B_Hàng), thì sẽ dẫn đến những thay đổi gì trên
CSDL_Cong ty ?
e. Nếu người dùng xoá bỏ sự kiện trên khung nhìn: Làm_việc(Nam), thì sẽ dẫn đến những thay đổi gì
trên CSDL_Cong ty?
2. Trong CSDL suy diễn, việc cập nhật các sự kiện cơ sở sẽ làm thay đổi những thành phần nào của
CSDL (các sự kiện cơ sở, các tân từ cơ sở, các sự kiện dẫn xuất, các luật suy diễn).
3. Trong CSDL suy diễn, việc cập nhật các khung nhìn sẽ làm thay đổi những thành phần nào của CSDL
(các sự kiện cơ sở, các tân từ cơ sở, các sự kiện dẫn xuất, các luật suy diễn).
4. Khi nào thì việc xoá (hoặc chèn) sự kiện cơ sở sẽ làm giảm (tăng) các sự kiện dẫn xuất trong CSDL
suy diễn? Giả sử việc cập nhật trên khung nhìn đỏi hỏi xoá (hoặc chèn) một sự kiện dẫn xuất, có luôn
luôn cảm sinh một yêu cầu chuyển dịch tương ứng xoá (hoặc chèn) các sự kiện cơ sở hay không, tại
sao?

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 84


Chương 5

GIỚI THIỆU CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG

5.1. GIỚI THIỆU TỔNG QUAN VỀ CSDL HƯỚNG ĐỐI TƯỢNG

Mô hình hướng đối tượng được sử dụng để phát triển phần mềm dựa trên mô hình dữ liệu
trừu tượng và khái niệm lớp để chỉ ra những đặc tính chung các cấu trúc dữ liệu được sử dụng để
mô hình hoá hệ thống. Hệ thống các khái niệm cơ bản của phương pháp hướng đối tượng được
mô tả như trong hình 6.1

Kế thừa

Lớp

Hàm Bao gói Quan hệ Cá thể

Đối tượng

Thông điệp

Đa xạ

Hình 6.1. Những khái niệm cơ bả n của phương pháp hướng đối tượng

5.1.1 Các đối tượng

Đối tượng là khái niệm cơ sở quan trọng nhất của cách tiếp cận hướng đối tượng. Đối tượng là
một khái niệm, một sự trừu tượng hoá hay một sự vật có nghĩa trong bài toán đang khảo sát. Đó
chính là các mục mà ta đang nghiên cứu, đang thảo luận về chúng. Đối tượng là thực thể của hệ
thống, của CSDL và được xác định thông qua định danh của chúng. Thông thường các đối tượng
được mô tả bởi các danh từ riêng (tên gọi) hoặc được tham chiếu tới trong các mô tả của bài toán
hay trong các thảo luận với người sử dụng. Có những đối tượng là những thực thể có trong thế
giới thực như người, sự vật cụ thể, hoặc là những khái niệm như một công thức, hay khái niệm
trừu tượng, v.v. Có một số đối tượng được bổ sung vào hệ thống với lý do phục vụ cho việc cài
đặt và có thể không có trong thực tế.
Đối tượng là những thực thể được xác định trong thời gian hệ thống hoạt động. Trong giai đoạn
phân tích, ta phải đảm bảo rằng các đối tượng đều được xác định bằng các định danh. Đến khâu
thiết kế, ta phải lựa chọn cách thể hiện những định danh đó theo cách ghi địa chỉ bộ nhớ, gán các
số hiệu, hay dùng tổ hợp một số gái trị của một số thuộc tính để biểu diễn. Theo quan điểm của
người lập trình, đối tượng được xem như là một vùng nhớ được phân chia trong máy tính để lưu

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 85


trữ dữ liệu (thuộc tính) cùng với tập các hàm thao tác trên dữ liệu được gắn với nó. Bởi vì các
vùng nhớ được phân hoạch là độc lập với nhau nên các đối tượng có thể tham gia vào nhiều
chương trình khác nhau mà không ảnh hưởng lẫn nhau.

5.1.2. Định danh đối tượng

Hệ thống hướng đối tượng là một sưu tập (Collection) các đối tượng (thực thể) tương tác,
trao đổi với nhau để thực thi các nhiệm vụ theo yêu cầu. Khi cần thực hiện một công việc, hệ
thống sẽ tạo ra các đối tượng tương ứng theo thiết kế và hủy bỏ chúng khi không cần lưu giữ
tiếp. Mỗi đối tượng được gắn với một định danh duy nhất (unique identifier) trong CSDL. Định
danh này do hệ thống tự động tạo ra và được gọi là định danh đối tượng (Object oriented
IDentifier, viết tắt là OID). Người dùng, người lập trình hay người làm việc với một công cụ truy
vấn không thể xem được hoặc thao tác được với các định danh đối tượng một cách trực tiếp, nó
được sử dụng bên trong hệ thống để xác định duy nhất một đối tượng và để tạo và quản lý các
tham chiếu bên trong đối tượng.
Các OID thỏa mãn hai tính chất:
1. Giá trị OID không thay đổi trong suốt thời gian tồn tại của một đối tượng, điều này
bảo đảm tính duy nhất của mỗi đối tượng. Do đó, một hệ thống CSDL hướng đối
tượng phải có cơ chế tạo ra các OID và bảo đảm tính không thay đổi của nó.
2. Mỗi giá trị OID chỉ được sử dụng duy nhất một lần; nghĩa là, ngay cả khi một đối
tượng được xóa khỏi CSDL thì OID của nó cũng không được gán cho đối tượng nào
khác.
Từ hai tính chất trên khẳng định rằng OID không phụ thuộc vào bất kỳ giá trị thuộc tính
nào của đối tượng, bởi vì giá trị của thuộc tính có thể thay đổi và chỉnh sửa. Nói chung, OID
cũng không dựa trên địa chỉ vật lý của đối tượng trong kho lưu trữ, bởi vì địa chỉ vật lý có thể
thay đổi sau mỗi lần tổ chức lại CSDL về phương diện vật lý. Tuy nhiên, một số ít hệ thốngvẫn
sử dụng địa chỉ vật lý làm OID để tăng cường hiệu quả trong truy vấn đối tượng. Nếu địa chỉ vật
lý của một đối tượng thay đổi, một con trỏ gián tiếp có thể được thiết lập tại địa chỉ trước đó để
trỏ tới vị trí vật lý mới của đối tượng đó. Phổ biến hơn, người ta sử dụng số nguyên lớn (long
integer) làm OID, sau đó sử dụng một số dạng bảng băm (hash table) để ánh xạ giá trị OID đến
đại chỉ vật lý của đối tượng.
Mô hình CSDL hướng đối tượng trước đây xem mọi giá trị từ đơn giản đến phức tạp đều
như là các đối tượng. Do đó, mọi giá trị cơ sở, giá trị nguyên thủy (thuộc kiểu nguyên thủy), như
các giá trị số (byte, int, short, long, float, double), ký tự (char), xâu (String), hoặc logic (boolean)
đều được xem như là đối tượng nên chúng có định danh. Như vậy, hai giá trị cơ sở sẽ có hai OID
khác nhau, điều này rất hữu ích trong một số trường hợp. Thí dụ, một số nguyên có giá trị 50 có
thể biểu diễn với nhiều ngữ nghĩa khác nhau như trọng lượng (tính bằng kilogram), hoặc khoảng
cách (tính bằng Km), …. Khi đó, hai đối tượng cơ sở với các OID khác nhau có thể được tạo ra,
nhưng cả hai đối tượng đều biểu diễn số nguyên giá trị 50. Điều này mặc dù hữu ích về mô hình
lý thuyết, nhưng rất không thực tế trong cài đặt, vì có thể dẫn đến trường hợp hệ thống tạo ra quá
nhiều OID dẫn tới hệ thống quá phức tạp. Vì vậy, hầu hết các hệ CSDL hướng đối tượng cho
phép biểu diễn phân biệt giá trị với đối tượng. Mỗi đối tượng phải có một OID bất biến, trong

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 86


khi giá trị thì không xem như là đối tượng nên không có OID và chỉ đại điện cho chính nó. Về
nguyên tắc, các giá trị nguyên thủy chứa trong một đối tượng là các thuộc tính đơn và không
được tham chiếu từ những đối tượng khác. Những đối tượng chứa trong một đối tượng khác
được xem như là thuộc tính tham chiếu [14].

5.1.3. Lớp đối tượng

Đối tượng là thể hiện, là một đại diện của một lớp. Lớp là một mô tả về một nhóm các đối
tượng có những tính chất (thuộc tính) giống nhau, có chung các hành vi ứng xử (thao tác gần
như nhau), có cùng mối liên quan với các đối tượng của các lớp khác và có chung ngữ nghĩa
trong hệ thống. Lớp chính là cơ chế được sử dụng để phân loại các đối tượng của một hệ thống
CSDL. Cũng như các đối tượng, lớp có thể là những nhóm thực thể có trong thế giới thực, cũng
có những lớp là khái niệm trừu tượng và có những lớp được đưa vào trong thiết kế để phục vụ
cho cài đặt hệ thống dữ liệu , v.v.
Lớp và mối quan hệ của chúng có thể mô tả trong các biểu đồ lớp biểu đồ đối tượng và một số
biểu đồ khác của UML. Trong biểu đồ lớp, lớp được mô tả bằng một hình hộp chữ nhật, trong
đó có tên của lớp, có thể có các thuộc tính và các hàm (phương thức) như hình 6.2.

a) Tên của lớp b) Tên và thuộc tính c) Tên, thuộc tính và phương thức
Hình 6.2. Các ký hiệu mô tả lớp trong UML
Chúng ta nên đặt tên theo một qui tắc thống nhất như sau:
 Tên của lớp thì chữ cái đầu của tất cả các từ đều viết hoa, in đậm. Thí dụ:
SinhVien, HocSinh, KhachHang, v.v.
 Tên của đối tượng, tên của thuộc tính thì viết hoa chữ cái đầu của các từ trừ từ đầu
tiên, Thí dụ: hoTen, danhSachSV, v.v.
Tên của hàm (phương thức) viết giống như tên của đối tượng nhưng có thêm cặp ngoặc đơn ‘(‘
và ‘)’, Thí dụ: hienThi(), nhapDiem(), v.v.
Các dữ liệu thành phần của một lớp có thể được bao gói thông qua các đặc tính quản lý sự truy
nhập để phục vụ việc che giấu thông tin của phương pháp hướng đối tượng. Trong UML ta có
thể sử dụng các ký hiệu để đặc tả các thuộc tính đó.
Ký hiệu: ‘+’ đứng trước tên thuộc tính, hàm xác định tính công khai (public), mọi đối tượng
trong hệ thống đều nhìn thấy được. Nghĩa là mọi đối tượng đều có thể truy
nhập được vào dữ liệu công khai.
‘#’ đứng trước tên thuộc tính, hàm xác định tính được bảo vệ (protected), chỉ
những đối tượng có quan hệ kế thừa với nhau nhìn thấy được.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 87


‘-‘ đứng trước tên thuộc tính, hàm xác định tính sở hữu riêng (private), chỉ các đối
tượng trong cùng lớp mới nhìn thấy được.
Trong trường hợp không sử dụng một trong ba ký hiệu trên thì đó là trường hợp mặc định
(default). Thuộc tính quản lý truy cập mặc định của những hệ thống khác nhau có thể khác nhau,
Thí dụ trong C++, các thuộc tính mặc định trong lớp được qui định là private, còn trong Java lại
qui định khác, đó là những thuộc tính rộng hơn private. Những thuộc tính trên thiết lập quyền truy
cập cho mọi đối tượng trong các lớp, các gói, các hệ thống con của hệ thống phần mềm [8].

5.1.4. Các mối quan hệ giữa các lớp

Hệ thống hướng đối tượng là tập các đối tượng tương tác với nhau để thực hiện công việc theo
yêu cầu. Quan hệ là kết nối ngữ nghĩa giữa các lớp đối tượng, trong đó thể hiện mối liên quan về
các thuộc tính, các thao tác của chúng với nhau trong hệ thống. Giữa các lớp có năm quan hệ cơ
bản:
1. Quan hệ kết hợp (Association),
2. Quan hệ kết nhập (Agregation),
3. Quan hệ tổng quát hóa (Generalization), kế thừa (Inheritance),
4. Quan hệ phụ thuộc (Dependency),
5. Hiện thực hoá (Realization).
Ta sẽ xem xét lần lượt các quan hệ trên
1. Sự liên kết và kết hợp giữa các đối tượng
Một liên kết là một sự kết nối vật lý hoặc logic giữa các đối tượng với nhau. Phần lớn các liên
kết là sự kết nối giữa hai đối tượng với nhau. Tuy nhiên cũng có những liên kết giữa ba hoặc
nhiều hơn ba đối tượng. Nhưng các ngôn ngữ lập trình hiện nay hầu như chỉ cài đặt những liên
kết (phép toán) nhiều nhất là ba ngôi, Thí dụ phép.
Một sự kết hợp là một mô tả về một nhóm các liên kết có chung cấu trúc và ngữ nghĩa như nhau. Vậy,
liên kết là một thể hiện của lớp. Liên kết và kết hợp thường xuất hiện ở dạng các động từ trong các tài
liệu mô tả bài toán ứng dụng.
Hình 2-3 mô tả các ký hiệu cho quan hệ liên kết và kết hợp

Hình 2-3. (a) Liên kết giữa các đối tượng

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 88


Hai đối tượng thuộc lớp SanBay: Nội Bài và Gia Lâm cùng liên kết với đối tượng Hà Nội của
lớp TinhThanh theo quan hệ phục vụ. Quan hệ liên kết giữa hai đối tượng được biểu diễn bằng
đoạn thẳng nối chúng với nhau và có tên gọi (nhãn của quan hệ). Nhãn của các quan hệ thường
là các động từ. Khi muốn biểu diễn cho quan hệ một chiều thì sử dụng mũi tên để chỉ rõ hướng
của quan hệ.

SanBay phục vụ TinhThanh


maSo tenGoi
tenGoi danSo
Hình 2-3. (b) Quan hệ kết hợp giữa các lớp
Khi mô hình không có sự nhập nhằng thì tên của kết hợp là tuỳ chọn. Sự nhập nhằng sẽ xuất hiện
khi giữa hai lớp có nhiều quan hệ kết hợp, Thí dụ: giữa lớp NhanVien và lớp CongTy có hai
quan hệ làm việc ở và có cổ phần trong. Khi có nhiều quan hệ như thế thì nên gán tên vào mỗi
đường nối hoặc tên của vai trò ở mỗi đầu của quan hệ để tránh sự nhập nhằng.

Làm việc ở
NhanVien CongTy
hoTen Có cổ phần trong tenGoi
nhiemVu taiKhoan

Hình 2-3. (c) Quan hệ kết hợp giữa các lớp

Lưu ý: không nên nhầm lẫn liên kết với giá trị. Giá trị là dữ liệu nguyên thuỷ như là dữ liệu số hoặc
xâu ký tự. Liên kết là mối liên quan giữa hai đối tượng. Trong giai đoạn phân tích ta phải mô hình (xác
định) tất cả các tham chiếu tới các đối tượng thông qua các liên kết và nhận dạng được các nhóm liên
kết tương tự thông qua các quan hệ kết hợp
2. Quan hệ kết nhập
Kết nhập là một loại của quan hệ kết hợp, tập trung thể hiện quan hệ giữa tổng thể và bộ phận.
Kết nhập thường biểu diễn cho quan hệ “có một”, “là bộ phận của” , hoặc “bao gồm”, v.v. thể
hiện mối quan hệ một lớp tổng thể có, gồm, chứa hay liên kết với một hoặc nhiều lớp thành
phần. Người ta chia quan hệ kết nhập thành ba loại:
- Kết nhập thông thường
- Kết nhập chia sẻ và
- Kết nhập hợp thành hay quan hệ hợp thành.
 Kết nhập thông thường
Quan hệ kết nhập thông thường, gọi tắt là kết nhập thể hiện mối liên kết giữa hai lớp, trong đó
đối tượng của lớp này bao gồm một số đối tượng của lớp kia, song không tồn tại trong nội tại
của lớp đó. Lớp phía bộ phận cũng chỉ là một bộ phận logic của phía tổng thể và chúng không
được chia sẻ với các lớp khác. Thí dụ: một hạm đội của lớp HamDoi gồm một số (3..10) tàu

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 89


chiến của lớp TauChien, nhưng tàu chiến không chứa trong lớp HamDoi. Vậy, lớp HamDoi có
quan hệ kết nhập với TauChien. UML sử dụng ký hiệu:
để biểu diễn quan hệ kết nhập và luôn được gắn với phía tổng thể. Hình 2-4 thể hiện quan hệ
giữa lớp HamDoi và lớp TauChien.

HamDoi TauChien

Hình 6.4. Quan hệ kết nhập thông thường


Trong quan hệ này, việc quản lý các đối tượng của các lớp liên quan là khác nhau. Ta có thể loại
bỏ một số tàu chiến của một hạm đội sao cho số còn lại ít nhất là 3, tương tự có thể bổ sung vào
một số tàu chiến sao cho không quá 10. Nhưng khi đã loại bỏ một hạm đội thì phải loại bỏ tất cả
các tàu chiến của hạm đội đó vì mỗi tàu chiến chỉ thuộc một hạm đội.
 Kết nhập chia sẻ
Quan hệ kết nhập chia sẻ là loại kết nhập, trong đó phía bộ phận có thể tham gia vào nhiều phía
tổng thể. Thí dụ: một dự án của lớp DuAn có nhiều nhân viên của lớp NhanVien tham gia và
một nhân viên có thể tham gia vào nhiều (hai) dự án. UML sử dụng ký hiệu: “ “
để biểu diễn quan hệ kết nhập chia sẻ và luôn được gắn với phía tổng thể. Hình 2-5 thể hiện quan hệ
giữa lớp DuAn và lớp NhanVien.

DuAn 0.. * NhanVien

Hình 6.5. Quan hệ kết nhập chia sẻ


Mỗi dự án có thể có nhiều người tham gia và mỗi người lại có thể tham gia nhiều nhất là hai dự
án. Trong quan hệ này, ta có thể loại bỏ, hay thành lập một dự án (phía tổng thể) nhưng không
nhất thiết phải loại bỏ, hay phải tuyển thêm những người tham gia (phía bộ phận) vào dự án như
kiểu kết nhập ở trên. Tuy nhiên, khi xử lý các mối quan hệ đó thì phải cập nhật lại các mối liên
kết của các nhân viên tham gia vào các dự án tương ứng.
 Kết nhập hợp thành
Quan hệ chỉ ra một vật có chứa một số bộ phận và các bộ phận đó tồn tại vật lý bên trong vật
tổng thể. Do vậy, khi thực hiện huỷ bỏ, hay thiết lập mới bên tổng thể thì các bộ phận bên thành
phần cũng sẽ bị huỷ bỏ hoặc phải được bổ sung. Thí dụ: lớp Window chứa các lớp Text, Menu
và DialogBox. Trong UML có hai cách biểu diễn quan hệ hợp thành như sau:

* Text
Window

Text * chứa
Window * Menu
Menu *

DialogBox
* * DialogBo
x
Hình 6.6. Quan hệ kết nhập hợp thành

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 90


3. Quan hệ tổng quát hoá
Tổng quát hoá và chuyên biệt hoá là hai cách nhìn dưới/lên và trên/xuống về sự phân cấp các lớp, mô tả
khả năng quản lý cấp độ phức tạp của hệ thống bằng cách trừu tượng hoá các lớp.
Tổng quát hoá là đi từ các lớp dưới lên sau đó hình thành lớp tổng quát (lớp cơ sở, lớp trên, lớp
cha), tức là cây cấu trúc các lớp từ lá đến gốc.
Chuyên biệt hoá là quá trình ngược lại của tổng quát hoá, nó cho phép tạo ra các lớp dưới (lớp
dẫn xuất, lớp con) khác nhau của lớp cha.
Trong UML, tổng quát hoá chính là quan hệ kế thừa giữa hai lớp. Nó cho phép lớp con (lớp
dưới, lớp kế thừa, hay lớp dẫn xuất) kế thừa trực tiếp các thuộc tính và các hàm thuộc loại công
khai, hay được bảo vệ (protected) của lớp cha (lớp cơ sở, lớp trên). Trong quan hệ tổng quát hoá
có hai loại lớp: lớp cụ thể và lớp trừu tượng.
Lớp cụ thể là lớp có các đại diện, các thể hiện cụ thể. Ngược lại, lớp trừu tượng là lớp không có
thể hiện (đối tượng) cụ thể trong hệ thống thực. Các lớp con cháu của lớp trừu tượng có thể là
lớp trừu tượng, tuy nhiên trong cấu trúc phân cấp theo quan hệ tổng quát hoá thì mọi nhánh phải
kết thúc (lớp lá) bằng các lớp cụ thể. Ta có thể định nghĩa các hàm trừu tượng cho các lớp trừu
tượng, đó là những hàm chưa được cài đặt nội dung thực hiện trong lớp chúng được khai báo.
Những hàm trừu tượng này sẽ được cài đặt trong các lớp con cháu sau đó ở những lớp cụ thể.
Thí dụ 6.1. Lớp NhanVien có ký hiệu {abstract} sau hoặc dưới tên lớp là lớp trừu tượng, và do
vậy nó không có đối tượng cụ thể. Hai lớp con: lớp NguoiBanHang và lớp CongNhan là hai lớp
cụ thể. Hai lớp này có những thuộc tính, thao tác giống lớp NhanVien như có các thuộc tính:
hoTen, diaChi và có các hàm tinhLuong(), hienThi(), ngoài ra mỗi lớp còn có thể bổ sung thêm
một số thuộc tính, thao tác để đặc tả cho từng nhóm đối tượng cụ thể. Lớp NguoiBanHang được
bổ sung thêm thuộc tính soluongBanDuoc còn lớp CongNhan được bổ sung thuộc tính
soLuongSanPham sản xuất được. Cấu trúc phân cấp của lớp NhanVien được xác định như hình
6.7.

{abstrac
t}

Hình 6.7. Lớp trừu tượng và cụ thể trong quan hệ tổng quát hoá
Lưu ý:
 Quan hệ tổng quát và kết hợp là hai quan hệ liên quan đến hai lớp, nhưng chúng có
những điểm khác nhau. Quan hệ kết hợp mô tả mối liên kết giữa hai hoặc nhiều hơn đối
tượng còn quan hệ khái quát mô tả các phương diện khác nhau của cùng một thể hiện.
 Quan hệ kết nhập và tổng quát cũng khác nhau. Cả hai đều làm xuất hiện cấu trúc cây
thông qua bao đóng bắc cầu của quan hệ cơ sở, nhưng quan hệ tổng quát là mối quan hệ

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 91


“hoặc” (OR) còn quan hệ kết nhập là mối quan hệ “và” (AND). Hình 2-8 mô tả sự khác
nhau của quan hệ tổng quát hoá và kết nhập.

TaiLi Sach
eu

Sach TapChi ChuongMo ChuongHa KetLu


t i an

Hình 6.8. Quan hệ tổng quát hoá ngược lại với quan hệ kết nhập
4. Kế thừa bội
Kế thừa bội cho phép một lớp được kế thừa các thuộc tính, các thao tác và các quan hệ kết hợp
từ nhiều lớp cơ sở. Trong quan hệ kế thừa bội có thể dẫn đến sự pha trộn thông tin từ nhiều
nguồn dữ liệu khác nhau từ các lớp được kế thừa. Quan hệ kế thừa đơn, một lớp được kế thừa từ
một lớp trên, thường tạo ra cấu trúc cây, còn kế thừa bội lại tổ chức các lớp thành đồ thị định
hướng phi chu trình. Kế thừa bội là cơ chế mạnh trong mô hình hệ thống, nhưng đồng thời cũng
sẽ tạo ra nhiều sự phức tạp về tính nhập nhằng, không nhất quán dữ liệu.
 Kế thừa bội từ những lớp phân biệt
Một lớp có thể kế thừa từ nhiều lớp cơ sở khác nhau.
Thí dụ 6.2. Lớp Nguoi là cơ sở để tạo ra hai lớp con: HDQuanTri (những người trong hội đồng
quản trị) và KinhDoanh (những người kinh doanh). Từ các lớp trên lại xây dựng các lớp
BanGiamDoc, CoDong (những người đóng cổ phần) kế thừa từ lớp HDQuanTri, lớp
NhanVienCT (những người làm việc thường xuyên trong công ty) và NhanVienHD (những
người làm việc theo hợp đồng) kế thừa từ lớp KinhDoanh. Trong Công ty lại có những người
vừa là cổ đông, vừa là nhân viên. Những người đó chính là các đối tượng của lớp
NhanVienCoDong kế thừa từ hai lớp con CoDong và NhanVienCongTy như hình 2-9(a).

Nguoi

HDQuanTri KinhDoanh

BanGiamDoc CoDong NhanVienCT NhanVienHD

NhanVienCoDong

Hình 6.9(a). Kế thừa bội từ hai lớp khác nhau và có lớp cơ sở chung
 Kế thừa bội không có lớp cơ sở chung
Kế thừa bội như trên là kế thừa có lớp cơ sở chung (lớp Nguoi). Chúng ta có thể tạo ra lớp kế
thừa bội từ nhiều lớp mà chúng lại không có lớp cơ sở chung. Loại kế thừa này thường xuất hiện

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 92


khi ta muốn pha trộn một số chức năng của các lớp thư viện khác nhau. Thí dụ: chúng ta hãy xét
mô hình của chương trình đánh cờ. Trước khi đi một nước cờ, chương trình phải nghiên cứu vị trí của
các quân cờ và các nước đi tiếp theo sao cho nước đi đó là có thể dẫn đến chiến thắng nhanh nhất.
Trong hình 2-9(b), mỗi đối tượng của lớp SearchTree (cây tìm kiếm) có thể là đối tượng của lớp
MoveSubtree (cây con các nước đi) hoặc của lớp PossibleMove (lớp các nước có thể chọn). Bản thân
lớp MoveSubtree lại có thể chứa các SearchTree nhỏ hơn. Mỗi nước đi của lớp Move lại có thể là
nước đi có thể (PossibleMove) hoặc lớp các nước đi hiện thời (ActualMove). Lớp PossibleMove kế
thừa hành vi chung của lớp Move và lớp SearchTree.
SearchTr Move
ee

MoveSubtree PossibleMov ActualMove


e
Hình 6.9(b) Kế thừa bội không có lớp có sở chung
5. Quan hệ phụ thuộc
Sự phụ thuộc là một loại quan hệ liên kết giữa hai phần tử trong mô hình, trong đó thể hiện sự
thay đổi trong một phần tử sẽ kéo theo sự thay đổi của phần tử kia. Quan hệ kết hợp thường là
quan hệ hai chiều, nhưng quan hệ phụ thuộc lại thường là quan hệ một chiều, thể hiện một lớp
phụ thuộc vào lớp khác. Lớp A phụ thuộc vào lớp B khi:
 Lớp A sử dụng một đối tượng của lớp B như là tham số trong các thao tác,
 Trong các thao tác của lớp A có truy nhập tới các đối tượng của lớp B,
 Khi thực hiện một thao tác nào đó trong lớp A lại phải tham chiếu tới miền xác định của
lớp B.
 Lớp A sử dụng các giao diện của lớp B.
Tương tự, hai gói có thể phụ thuộc vào nhau khi có một lớp ở một gói phụ thuộc vào lớp của gói
kia.
Trong UML, quan hệ phụ thuộc được thể hiện bằng mũi tên đứt nét. Thí dụ, hình 2-10 mô tả
quan hệ phụ thuộc giữa hai lớp và phụ thuộc của hai gói.

LớpA LớpB GóiA GóiB

Hình 6.10. Quan hệ phụ thuộc giữa các lớp và các gói
6. Quan hệ hiện thực hoá
Quan hệ hiện thực hoá thể hiện sự kết nối giữa các lớp và giao diện. Quan hệ này thường được
sử dụng với các giao diện và những lớp làm nhiệm vụ cài đặt các dịch vụ (phương thức) đã được
khai báo trong các giao diện. Quan hệ hiện thực hoá được ký hiệu là mũi tên đứt nét như hình
6.11.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 93


<<interface>>
ChoiceBlock PopUpMenu

setDefault() setDefault()
getChoice(): getChoice():
Choice Button
Hình 6.11. Quan hệ hiện thực hoá

5.2. ĐẠI SỐ ĐỐI TƯỢNG VÀ CÁC PHÉP BIẾN ĐỔI ĐẠI SỐ

5.2.1. Đối tượng và các giá trị

Tập Dom các giá trị nguyên thuỷ là hợp của tất cả các miền giá trị cơ sở của ngôn ngữ lập trình
L. Các phần tử của Dom được gọi là hằng, trong đó nil là một hằng đặc biệt biểu diễn giá trị
không xác định.
Ta ký hiệu Obj = {o1, o2, ...} là tập vô hạn các định danh đối tượng (OID) và Class là tập các
tên lớp, Att là tập các tên thuộc tính.
Với một tập Oid là tập con các định danh đối tượng, Oid  Obj, họ các giá trị trên Oid, ký hiệu
Val(Oid), được xác định như sau:
(i) Hằng nil  Val(Oid)
(ii) Nếu v  Dom thì v  Val(Oid)
(iii) Nếu o  Oid thì o  Val(Oid)
(iv) Tập {vi | vi  Val(Oid), (i = 1, ..., n)} Val(Oid) và
(v) Cho tập các giá trị {vi | vi  Val(Oid), (i = 1, ..., n)} và tập các tên thuộc
tính khác nhau {Ai | Ai, Aj  Att, (i  j  Ai  Aj ), (i, j = 1, ..., n)} thì
bộ [A1 : v1, ..., An : vn]  Val(Oid).
Một đối tượng trong hệ thống thường được mô tả bởi một cặp (o, v), trong đó o là định danh đối tượng
và v là trạng thái hay giá trị hiện thời của đối tượng. Trong hệ thống hướng đối tượng, mỗi đối tượng
đều tồn tại ở một trạng thái xác định.
Các đối tượng có cùng tính chất và hành vi được nhóm lại để tạo thành một lớp. Mỗi lớp c có
một kiểu xác định, ký hiệu là (c), là kiểu của các đối tượng trong lớp. Tức là, mỗi đối tượng (o,
v) của lớp c, thì trạng thái hiện thời v của nó là (c).
Với tập tên lớp C đã cho, C  Class, họ các kiểu của tất cả các lớp trong C, ký hiệu Types(C),
được xác định như sau:
(i) Tất cả các kiểu nguyên thuỷ: byte, int, long, float, double, char, string, và
boolean Types(C); kể cả kiểu rỗng (void) cũng thuộc Types(C).
(ii) Nếu c C thì (c) Types(C);
(iii) Nếu  Types(C), thì tập {} Types(C);

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 94


(iv) Cho một tập các kiểu {i | i  Types(C), (i = 1, ..., n)} và tập các tên
thuộc tính khác nhau {Ai | Ai, Aj  Att, (i  j  Ai  Aj), (i, j = 1, ..., n)}
thì bộ [A1 : 1, ..., An : n]  Types(C) và mỗi lớp c có một kiểu với dạng
bộ tương ứng, tức là (c) = [A1 : 1, ..., An : n].

Nếu lớp c1 có thuộc tính Ai với kiểu i và i = c2, mà c2 là một lớp, thì giữa lớp c1 và c2 có một
mối quan hệ kết nhập – các đối tượng của lớp c1 được hợp thành từ các đối tượng của lớp c2 .
Thuật ngữ class được sử dụng để mô tả một định nghĩa kiểu của lớp các đối tương, cùng với các
định nghĩa các tác vụ cho kiểu đó.
Thí dụ 6.3. Cho các lớp đối tượng được định nghĩa như sau:
define class GiaoVien:
type tuple(hoTen: string, gioiTinh: boolean, hocVi: string, khoa: Khoa));
end GiaoVien;
define class Khoa:
type tuple(tenKhoa: string, truongKhoa: GiaoVien, giaoVien: set(GiaoVien));
end Khoa;
Hệ thống có các đối tượng sau:
Ob1 = (o1, [hoTen: “Lê Văn Ba”, gioiTinh: false, hocVi: “Tiến sĩ”, khoa: o99])
Ob2 = (o2, [hoTen: “Nguyên Minh”, gioiTinh: true; hocVi: “Thạc sĩ”, khoa: o99])
Ob3= (o3, [hoTen: “Trần Văn Hùng”, gioiTinh: false, hocVi: “Kỹ sư”, khoa: o99])
Ob4 = (o4, [hoTen: “Ngũ Thiện Huy”, gioiTinh: false, hocVi: “Tiến sĩ”, khoa: o99])
Ob5 = (o99, [tenKhoa: “Công nghệ thông tin”, truongKhoa: o1, giaoVien: {o1, o2, o3, o4}])
Đối tượng Ob1 theo định nghĩa trong lược đồ trên sẽ gồm định danh o1 và một bộ (tuple) các giá trị:
[hoTen: “Lê Văn Ba”, gioiTinh: false, hocVi: “Tiến sĩ”, khoa: o99]. Đối tượng Ob99 có định danh là o99
và một giá trị bộ: [tenKhoa: “Công nghệ thông tin”, truongKhoa: o1, giaoVien: {o1, o2, o3, o4}], trong
đó, thuộc tính tenKhoa có giá trị nguyên thủy, thuộc tính truongKhoa tham chiếu đến đối tượng có định
danh đối tượng là o1, thuộc tính giaoVien có giá trị tập (set) tham chiếu đến các đối tượng với các định
danh đối tượng o1, o2, o3, o4.
Kiểu của lớp GiaoVien là:
(GiaoVien) = [hoTen: string, gioiTinh: boolean, hocVi: string, khoa: Khoa] = 1
Tương tự kiểu của lớp Khoa:
(Khoa) = [tenKhoa: string, truongKhoa: GiaoVien, giaoVien: {GiaoVien}] = 2
Hệ thống có C = {GiaoVien, Khoa}, và
Types(C) = {string, boolean, 1, 2}
Trong mô hình dữ liệu quan hệ, hai bộ (thực thể) bằng nhau nếu tất cả các thuộc tính khoá của hai
bộ có cùng giá trị. Tuy nhiên, trong CSDL hướng đối tượng, cần phân biệt hai khái niệm “đồng
nhất” với “bằng nhau” của các đối tượng như trong thực tế. Hai quan hệ này được định nghĩa như
sau:

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 95


Định nghĩa 6.1. Cho hai đối tượng Ob1(o1, v1) và Ob2(o2, v2).
(i) Đối tượng đồng nhất: Hai đối tượng Ob1 và Ob2 được gọi là đối tượng đồng
nhất, ký hiệu Ob1 =oid Ob2 nếu chúng có cùng định danh đối tượng, tức là Ob 1.o1
= Ob2.o2, thực chất là cùng một đối tượng.
(ii) Đối tượng bằng nhau: Hai đối tượng Ob1 và Ob2 được gọi là bằng nhau về giá trị,
ký hiệu Ob1 =v Ob2:
- Nếu kiểu của đối tượng là nguyên thuỷ thì chúng phải có cùng giá trị.
- Nếu kiểu của đối tượng là kiểu tham chiếu (không nguyên thuỷ) thì chúng phải có
cùng số các thuộc tính và với mọi thuộc tính pi của Ob1 đều tồn tại thuộc tính pi′ của
Ob2 có giá trị bằng nhau.

5.2.2 Hệ thống phân cấp và quan hệ kế thừa

Một lược đồ kiểu dữ liệu hướng đối tượng bao hàm một cấu trúc phân cấp ISA giữa các lớp đối
tượng theo quan hệ kế thừa (IS - A). Cấu trúc phân cấp lớp (kiểu) bao gồm 3 thành phần sau: (1)
tập các lớp, (2) các kiểu liên quan đến các lớp, (3) đặc điểm của các quan hệ ISA giữa các lớp.
Một cách hình thức, cấu trúc phân cấp lớp ISA là một bộ ba (C, ,  ), trong đó, C là tập hữu hạn
tên các lớp,  là ánh xạ từ C vào Types(C),  là thứ tự bộ phận trên tập các lớp C. Thông
thường thì quan hệ thứ tự bộ phận có tính phản xạ. Lớp c2 là lớp con của lớp c1 hay nói cách
khác lớp c2 kế thừa lớp c1 nếu kiểu của lớp c2 là tinh hơn kiểu của lớp c1, ký hiệu là c2  c1.
Chúng ta sử dụng quan hệ kiểu con () để biểu diễn một kiểu là tinh hơn kiểu khác [6].
Định nghĩa 6.2. Cho (C, ,  ) là một cấu trúc phân cấp lớp, quan hệ kiểu con trên Types(C) là thứ
tự bộ phận nhỏ nhất trên Types(C), ký hiệu , thỏa mãn các điều kiện sau:
(i) Nếu c  c’ thì c  c’
(ii) Nếu  i   i' (1 i  n, n  m ) thì bộ

[ A1 :  1 , A2 :  2 , ..., An :  n ,..., Am :  m ]  [ A1 :  1' , A2 :  2' ,..., An :  n' ]

(iii) Nếu    ' thì tập { }  { ' }


Với mọi  ,   any (any là lớp gốc của cây phân cấp)
Thí dụ 6.4. Xét hệ thống các lớp (kiểu) của hệ thống quản lý nhân sự trong trường đại học được
mô tả trong hình 2-12.

NhanSu

SinhVien GiangVien

GVBienChe GVThinhGiang

Hình 6.12. Một phân cấp lớp của CSDL hệ thống quản lý nhân sự.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 96


 Xét phân cấp lớp (C, ,  ) của lược đồ kiểu dữ liệu HĐT quản lý nhân sự trong
trường đại học như trong hình 2-12, trong đó, Tập các lớp: C = {NhanSu, SinhVien,
GiangVien, GVBienChe, GVThinhGiang},
 Quan hệ thứ tự bộ phận giữa các lớp trong C là: SinhVien  NhanSu, GiangVien  NhanSu,
GVBienChe  GiangVien, GVThinhGiang  GiangVien
  xác định các kiểu tương ứng của các lớp trong C như sau:
(NhanSu) = [hoTen: string, gioiTinh: boolean, diaChi: string]  Types(C)
(SinhVien) = [hoTen: string, gioiTinh: boolean, diaChi: string, khoa:
Khoa_type, lop: string]  Types(C)
(GiangVien) = [hoTen: string, gioiTinh: boolean, diaChi: string, hocVi: string,
chuyenNganh: Nganh_type, khoa: Khoa_type]  Types(C)
(GiangVien) = [hoTen: string, gioiTinh: boolean, diaChi: string, hocVi: string,
chuyenNganh: Nganh_type]  Types(C)
(GVBienChe) = [hoTen: string, gioiTinh: boolean, diaChi: string, hocVi:
string, chuyenNganh: Nganh_type, khoa: Khoa_type,
namVaoNganh: integer]  Types(C)
(GVThinhGiang) = [hoTen: string, gioiTinh: boolean, diaChi: string, hocVi:
string, chuyenNganh: Nganh_type, monDay: {HocPhan_type}]  Types(C)
Một phân cấp lớp (C, ,  ) được tổ chức tốt nếu với mỗi cặp (c, c ' ) mà c  c ' thì
 (c)   (c ' ) . Cấu trúc phân cấp trong Thí dụ 2.1 được tổ chức tốt vì SinhVien  NhanSu và
(SinhVien)  (NhanSu), GiangVien  NhanSu và (GiangVien)  (NhanSu), GVBienChe 
GiangVien và (GVBienChe)  (GiangVien), GVThinhGiang  GiangVien và (GVThinhGiang)
 (GiangVien).
Định nghĩa 6.3. Cho (C, ,  ) là một phân cấp lớp, một phép gán định danh là một hàm  ánh xạ
mỗi tên lớp c  C vào tập hữu hạn các định danh, được gọi là thể hiện của c, ký hiệu (c), và một thể
hiện đầy đủ của c là tập các định danh của lớp cha sẽ chứa các tập định danh của các lớp con của nó,
được ký hiệu *(c) và được xác định như sau:
 * (c)  { (c' ) | c' C , c'  c} .
Nếu  là một phép gán định danh thì  * (c' )   * (c) khi và chỉ khi c '  c . Nghĩa là mọi
đối tượng của lớp con c’ cũng là đối tượng của lớp cha c, hoàn toàn thỏa mãn hai nguyên lý cơ bản
của hệ thống hướng đối tượng là nguyên lý thành viên (is-a) và nguyên lý 100% [6]. Thí dụ, các đối
tượng GVBienChe (trong Thí dụ 2.2) cũng là đối tượng của lớp GiangVien.
Dựa trên phép gán định danh đối tượng , ngữ nghĩa tập kiểu được định nghĩa trong một
phân cấp lớp (C, ,  ) như sau:
Định nghĩa 6.3. Cho L là tập các kiểu dữ liệu nguyên thủy, C là tập các lớp và tập các đối tượng
(xác định thông qua định danh) O  { (c) | c  C} , (Sup) =  (Sup là một tên lớp đặc biệt –
lớp gồc trừu tượng), thể hiện của một kiểu , ký hiệu Ext(), được định nghĩa như sau:

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 97


(i)    L, Ext() là một sự thể hiện thông thường của kiểu , đó chính là
miền giá trị của kiểu nguyên thủy.
(ii) Ext (Sup) = Val(O) tập tất cả các giá trị của các đối tượng trong hệ thống
(iii) c  C, Ext(c) =  * (c)  {nil} , nil là gia trị không xác định

(iv) Ext ({}) = {{v1, v2, ..., vn}| n  0, vi  Ext ({}), i  [1, n]}
(v) Ext([A1: 1, A2: 2, .., Ak: k]) = {[A1: v1, A2: v2, ..., Ak: vk] | vi  Ext (i), i  [1, k]}
Với qui ước (C) =  {(c) | c  C}, ta có thể dễ dàng chứng minh được định lý.
Định lý 6.1.
 1 , 2  (C), 1 ≤ 2  Ext(1)  Ext(2)

5.2.3. Phương thức

Phương thức là thành phần mô tả hành vi ứng xử của các đối tượng trong lớp. Các đối
tượng chỉ có thể hành động hay trao đổi thông tin với nhau thông qua các phương thương thức có
trong thân của lớp. Mỗi phương thức có ba thành phần: (1) tên gọi (name), (2) chữ ký
(Signature) và (3) thân (body) của phương thức.
Định nghĩa 6.4. Cho tập M là tập các tên của phương thức và (C, ,  ) là cấu trúc phân cấp lớp.
Với mỗi lớp c  C, 1, 2, 3, ..., n  Types(C), và tên phương thức m  M, khi đó ánh xạ m : c 
1  ... n-1  n là chữ ký của phương thức m.
Chữ ký phương thức liên kết với lớp c; phương thức m áp dụng cho các đối tượng của
lớp c và các đối tượng của các lớp con của c, đó là các lớp c’ C sao cho c '  c . Lưu ý, ở đây
chúng ta chỉ xét những phương thức công khai, nghĩa là những phương thức được phép kế thừa.
Nếu phương thức m được định nghĩa trong lớp c1 và c2 là lớp con trực tiếp của c1, thì định
nghĩa của m với c2 được kế thừa từ c1. Chữ ký của m trong c2 có dạng m : c2 n;
chữ ký của m trong c2 là gần giống với chữ ký của m trên c1, ngoại trừ thành phần thứ nhất c1
được thay bằng c2. Tổng quát, lớp c2 kế thừa phương thức m từ lớp c1 và m đã được định nghĩa
trong c1. Nếu lớp c2 kế thừa phương thức m từ lớp c1, thì thân của m trong c2 là đồng nhất với
thân của m trong c1.
Đối với một cấu trúc phân cấp lớp (C, ,  ) xác định một tập các chữ ký phương thức của
các lớp trong C, được ký hiệu là MS. Mỗi lớp c của C cũng xác định một tập các chữ ký phương
thức µ(c), là tập các chữ ký phương thức định nghĩa trong c hoặc được lớp c kế thừa từ các lớp
cha của nó, tức là MS = { (c) | c  C} .

Tập chữ ký phương thức MS được thiết kế tốt nếu nó thỏa mãn hai luật sau:
Luật 1. (đối biến thể): Các phương thức có tên giống nhau có các chữ ký khác nhau và liên
kết với các lớp khác nhau, nhưng nếu m : c1 n và m : c2 ’p-1 ’p là hai
chữ ký của m và c1  c2, thì n = p và ’i (i = 1, ..., n).
Luật 2. (nhất quán trong thừa kế): Nếu c1 là lớp con của c2, c3 và có một định nghĩa của
phương thức m đối với cả c2 và c3 thì tồn tại một định nghĩa của m đối với lớp con của c2 và c3,
đó cũng chính là định nghĩa của m đối với c1 hoặc lớp cha của c1.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 98


Tập các phương thức áp dụng cho đối tượng được gọi là giao diện của đối tượng. Các đối
tượng chỉ được truy nhập qua giao diện của chúng, nguyên lý này được gọi là đóng gói.

5.2.4. Lược đồ kiểu dữ liệu hướng đối tượng và các thể hiện

Một lược đồ mô tả cấu trúc dữ liệu được lưu trữ trong cơ sở dữ liệu, bao gồm các kiểu kết
hợp với các tên lớp, cấu trúc phân cấp ISA và chữ ký của các phương thức (tức là các giao diện
cung cấp cho các đối tượng trong mỗi lớp).
Định nghĩa 6.5. Một lược đồ kiểu dữ liệu hướng đối tượng là bộ năm S = (C, ,  , MS, G),
trong đó,
 G là tập các các tên gọi, G  C = 
  là một ánh xạ từ G  C vào Types(C)
 (C, ,  ) là một cấu trúc phân cấp các lớp
 MS là tập các chữ ký phương thức đối với (C, ,  )
Định nghĩa 6.6. Thể hiện của lược đồ kiểu dữ liệu hướng đối tượng (C, ,  , MS, G) là bộ bốn
I = (, , , ), trong đó,
  : là phép gán định danh đối tượng với O =  {(c)| c  C}
  : là một ánh xạ từ O đến Val(O) sao cho với o  (c) thì (o)  Ext((c)).
  : ánh xạ mỗi tên trong G có kiểu  đến một giá trị trong Ext().
  : ánh xạ các ngữ nghĩa đến các tên phương thức phù hợp với chữ ký phương thức trong


5.3. CÁC PHÉP TRUY VẤN TRÊN MÔ HÌNH CSDL HƯỚNG ĐỐI TƯỢNG

5.3.1. Ngôn ngữ truy vấn đối tượng OQL

Trong các hệ thống CSDL hướng đối tượng (OODBS), các câu truy vấn hướng đối tượng
OQL (Object Query Language) được biểu diễn giống như trong SQL. OQL của ODMG [11]
cũng là ngôn ngữ khai báo giống như SQL, nó cung cấp một môi trường phong phú để truy vấn
CSDL đối tượng một cách hiệu quả, kể cả những cơ sở mức cao đối với các tập đối tượng và
những cấu trúc khác. OQL liên quan chặt chẽ với phần truy vấn của SQL-92, nó mở rộng cú
pháp SELECT của SQL-92. OQL cũng bao hàm cả những phần mở rộng đối tượng như định
danh đối tượng, đối tượng phức hợp, biểu thức đường dẫn (path expressions), triệu gọi thao tác
(operation invocation) và kế thừa. Các câu truy vấn OQLcó thể bao gồm cả những phương thức
của ngôn ngữ ràng buộc. OQL duy trì tính toàn vẹn đối tượng bằng cách sử dụng các phương
thức của đối tượng, đúng hơn là những toán tử cập nhật riêng. OQL có thể thực hiện những
phương thức thay đổi trạng thái đối tượng như create(), add(), và delete(), …, giống như
các hàm. Thí dụ,
Person(name: ‘‘Nguyen Long", birthdate: 26/11/1992, salary: 100000)

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 99


Tạo ra đối tượng mới của Person có tên (name): Nguyen Long, ngày sinh (birthdate):
26/11/1992 và lương (salary): 100000, còn những thuộc tính khác của Person trong Thí dụ 3.2
được bỏ qua.
OQL là ngôn ngữ truy vấn không hỗ trợ môi trường lập trình đầy đủ, chẳng hạn OQL
không thể biểu diễn cho tất cả các tính toán phức tạp. Do đó, nó không phải là hệ tính toán đầy
đủ. Vì vậy, để tăng khả năng tính toán cho OQL cần phải liên kết với các ngôn ngữ lập trình
khác:
(i) OQL được dùng để mô tả truy vấn và các thao tác của đối tượng;
(ii) Ngôn ngữ định nghĩa đối tượng (ODL): sử dụng mã OQL để định nghĩa giao diện
với các kiểu đối tượng;
(iii) Các ngôn ngữ lập trình khác như C++, Smalltalk và Java được dùng để cài đặt các
phương thức và các chương trình ứng dụng. Đồng thời có thể nhúng các câu lệnh
OQL trong các thao tác theo mô hình CSDL hướng đối tượng.
Trong (iii) OQL được dùng như ngôn ngữ truy vấn nhúng, nó cũng có thể được sử dụng
như một ngôn ngữ truy vấn độc lập, nghĩa là, người dùng có thể biểu diễn các thao tác CSDL đối
tượng hoàn toàn bằng OQL mà không cần một chương trình nhúng nào được viết bằng ngôn ngữ
lập trình khác.
OQL được thiết kế theo hướng phát triển kế thừa, đó là thiết kế một ngôn ngữ mới đầy đủ
dựa trên SQL, ngôn ngữ chuẩn của CSDL quan hệ. Thiết kế của OQL ở dạng hàm, kết quả của
truy vấn có kiểu xác định, điều này cho phép kết quả của truy vấn này là đầu vào của một truy
vấn khác, vì vậy các truy vấn phức tạp có thể được xây dựng bằng OQL. Mục đích của mô hình
ODMG là duy trì một mức độ tương thích giữa kỹ thuật CSDL hướng đối tượng và kỹ thuật
CSDL đối tượng – quan hệ bằng cách tích hợp các tính năng của phiên bản tương lai của SQL
trong phiên bản tương lai của OQL.

5.3.2. OQL lõi

OQL (Object Query Language) là ngôn ngữ truy vấn đối tượng được ODMG xây dựng để hỗ trợ
mô hình dữ liệu đối tượng chuẩn [4]. Trước khi tìm hiểu về OQL lõi (Core OQL), chúng ta cần
nắm vững các phép toán qui ước như sau.
 Các phép toán hai ngôi binop = {and, or, intersect, union, except, =, !=, <, >, <=, >=,
+ -, *, /, ||, mod}
 Các phép toán một ngôi unop = {first, last, max, min, avg, sum, count, distinct,
listtoset, element, flatten, abs, not, -}
Văn phạm của OQL có các qui tắc dẫn xuất:
q ::= b | f | i | c |s
|x
| bag(q, …, q) | set(q, …, q) | list(q, …, q) | array(q, …, q)
| dictionary((q, q) , …, (q, q)) | struct(l: q; : : : ; l: q)
| C(l: q, …, l: q) | q:l | (C)q

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 100


| q[q] | q in q | q() | q(q, …, q)
| forall x in q: q | exists x in q: q
| q binop q | unop (q)
| select [distinct] q
from (q as x, …, q as x)
where q
[group by (l: q, …, l: q)]
[having q]
[order by (q asc|desc, …, q asc|desc)]
Trong đó b, f, i, c, s là các giá trị boolean, float, int, char và string tương ứng, x là tập đếm được các
định danh, l là tập đếm được các nhãn (set of labels), và C tập đếm được tên gọi các lớp.
Trong OQL ta có thể đặt tên các định nghĩa theo cú pháp
d ::= define x as q
| define x(x: , …, ) as q

5.3.3. Các kiểu dữ liệu trong OQL

Hệ truy vấn hạt nhân có các kiểu: kiểu nguyên thuỷ, kiểu hàm n-ngôi, kiểu bội sưu tập, các cấu
trúc và lớp.
Kiểu trong OQL được xây dựng theo cú pháp như sau:
Types  ::= int | float | bool | char | string | void
|… 
| bag() | set() | list() | array()
| dictionary(,) | struct(l: , …, l: )
|C
Ta sử dụng `' để ký hiệu cho kiểu hàm. Thí dụ int  float là kiểu hàm có đối số kiểu nguyên int
và kết quả trả lại là float. Kiểu hàm xuất hiện khi cần thể hiện những phương thức có tham số.
Những kiểu khác có thể tự giải nghĩa. Thí dụ kiểu bag(bool) là kiểu túi (bag) các giá trị logic, và
set(list(string)) là tập các danh sách của các chuỗi ký tự. Kiểu dictionary(string, set(int)) là kiểu
từ điển với từ khoá là xâu ký tự và giá trị tương ứng là kiểu set(int). Kiểu struct(a: int, b: struct(c:
float, d: char)), là kiểu cấu trúc có hai trường, trường đầu có nhãn là a ứng với một số nguyên và
trường thứ hai có nhãn là b ứng với một cấu trúc có hai trường (c và d).
Để tiện lợi ta viết Col() để ký hiệu cho kiểu sưu tập (array, bag, dictionary, list hoặc set), với
các phần tử có kiểu .
Các kiểu char, int, float và string được gọi là những kiểu có thứ tự.

5.3.4. Các dạng truy vấn của OQL

Trong OQL có ba dạng truy vấn cơ sở

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 101


(i) Truy vấn tìm tập các đối tượng theo phạm vi tên gọi (extent name). Thí dụ tìm những
người (Person) theo tên miền persons như trong hình 3-4 sẽ cho kết quả là set<Person>.
persons -> set<Person>
(ii) Đối tượng được đặt tên là một truy vấn hợp lệ. Thí dụ một nhân viên có tên ”Anna”,
thì câu truy vấn
Anna -> Person
Xác định thông tin về Anna. Còn câu truy vấn
Anna.subordinates -> set<Person>
Xác định những người mà Anna quản lý.
(iii) Các câu truy vấn select: Một câu truy vấn select sẽ cho lại kết quả là bag, set, hoặc
list các mục tìm kiếm theo mệnh đề select từ mẫu extent mà nó thoả mãn điều kiện
where.
select <collection>
from {<collection> [<iterator var>]}*
[where <cond expr>]
[group by <group expr>]
[having <cond expr>]
[order by <order cond>]
Thí dụ 5.5.
Xét tiếp một câu truy vấn trong OQL có sử dụng Thí dụ được định nghĩa trong ODL đã cho ở
hình 3-4. Nó tương tự như truy vấn trong SQL, nhưng được mở rộng với các đối tượng:
select c.address
from Persons p, p.children c
where p.address.street="Bay Street" and
count(p.children) >= 1 and c.address.city != p.address.city
Tìm tất cả những người con của tất cả mọi người “Persons” có ít nhất một con và sống ở
phố Bay Street, và không sống cùng thành phố với cha mẹ.

5.3.5. Biểu thức đường dẫn


ODMG 3.0 OQL là ngôn ngữ cho phép tham chiếu theo những đối tượng được tìm thấy
để lựa chọn những đối tượng khác [16]. Để thực hiện được mục đích này thì biểu thức đường dẫn
(Path expressions) được sử dụng. Biểu thức đường dẫn bắt đầu bằng một đối tượng đã được khởi
tạo và sau đó là dấu chấm (.) hoặc mũi tên (->).
Thí dụ, giả sử p là biến có kiểu Person đã được khởi tạo. Hai biểu thức sau tương đương
và cùng cho lại thành phố nơi mà vợ (chồng) của đối tượng p đang sống.
p.spouse.address.city.name
p->spouse->address->city->name

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 102


Biểu thức đường dẫn có thể không chứa sưu tập, nghĩa là đường dẫn phải rõ ràng, không
nhập nhằng, được gọi là biểu thức đường dẫn đơn giản.
Chúng ta xét biểu thức đường dẫn
p.children.address.city.name
Bởi vì children trong lớp Person (Hình 3-4) là thuộc tính sưu tập (set<Person>), nó
tham chiếu đến nhiều đối tượng, nghĩa là có nhiều đường dẫn để tham chiếu tới chúng, kết quả là
có nhiều đường dẫn để dẫn đến nhiều tên các thành phố. Đối với đa đường dẫn, chúng ta sử dụng
cách khác để xác định biểu thức đường dẫn: đặt biểu thức đa đường dẫn vào một biểu thức của
OQL.
select c.address.city.name
from p.children c
Mệnh đề from bao gồm đường dẫn từ đối tượng p của Person tới thuộc tính children.
Khi đó, mỗi đối tượng c được xem như là một người con (child) và mệnh đề select được sử dụng
để xác định tên thành phố mà c đang ở, kết quả là bag<string>.

5.3.6. Triệu gọi phương thức trong OQL

Trong ODMG 3.0, một biểu thức đối tượng trong OQL có thể tham chiếu tới, triệu gọi
các phương thức (Methods invoking) như là các tài sản sẵn có của nó [16]. Những phương thức
này cần phải có kiểu trả lại kết quả phù hợp với các biểu thức OQL mà trong đó chúng xuất hiện
(không triệu gọi được những phương thức có kiểu trả lại là void).
Đối với những phương thức (hàm) không có tham số thì phải xử lý trong ngôn ngữ lập
trình. Thí dụ, hàm age() của lớp Person ở Thí dụ 3.3 là hàm không có tham số. Câu truy vấn tìm
những người sông ở Nam Dinh có tuổi ngoài 20 có dạng.
select count (*)
from persons p
where p.address.city = ‘‘Nam Dinh" and p.age >= 20
Các phương thức này trả lại kết quả là đối tượng phức hợp gồm những đối tượng có quan
hệ với nhau. Lớp Person còn có phương thức auto() để xác định đối tượng Auto của mỗi người.
select count (*)
from persons p
where p.address.city = ‘‘Nam Dinh" and p.age >= 20 and p.auto.model = ‘‘Toyota"
Đối với những phương thức có tham số thì đòi hởi phải tuân theo cú pháp cặp ngoặc đơn
cho các tham số (parentheses syntax for arguments). Thí dụ, hãy tìm tên và tuổi của những người
có ông bà, nghĩa là hasAncestor() có đối tượng của Person trong danh sách tham số.
select p.name, p.age, q.name, q.age
from persons p, persons q
where p.hasAncestor(q)

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 103


5.3.7. Đa xạ và liên kết muộn trong OQL
OQL hỗ trợ đa xạ (Polymorphism) trong tham chiếu tới các thuộc tính và các phương
thức trong hệ thống phân cấp của các lớp. Thí dụ, lớp Person ở Thí dụ 3.1 có thuộc tính name
được cài đặt như là mảng các xâu. Lớp con của nó là Employee lại có phương thức activities()
viết đè những thuộc tính được kế thừa từ Person. Câu truy vấn sau, tìm tên (name) và những
hoạt động (activities) của đối tượng được xác định khi chương trình thực thi (run-time), nghĩa là
được xác định theo liên kết muộn các đối tượng (late binding) hay còn gọi là liên kết động.
select p.name, p.activities
from persons p

5.3.8. Các ràng buộc ngôn ngữ của OODB


OQL có thể được nhúng vào chương trình của những ngôn ngữ lập trình khác như Java,
C++ hoặc Smalltalk, thông qua ràng buộc ngôn ngữ (language bindings). Các câu truy vấn có thể
triệu gọi các phương thức được viết bằng những ngôn ngữ đó. Những ràng buộc ngôn ngữ Java,
C++ và Smalltalk của chuẩn ODMG để định nghĩa ngôn ngữ thao tác dữ liệu OML (Object
Manipulation Languages), mở rộng ngôn ngữ lập trình để hỗ trợ lưu trữ đối tượng bền vững.
OML cho phép người phát triển chương trình ứng dụng làm việc trong cùng một môi trường của
ngôn ngữ lập trình và không cần phải tách riêng ngôn ngữ CSDL [18].
1. Ràng buộc ngôn ngữ C++: Ràng buộc ngôn ngữ C++ của ODMG đảm bảo sự mở
rộng là trong suốt với ngôn ngữ lập trình trong việc tạo lập, đặt tên, thao tác và loại
bỏ, hay các giao dịch, thao tác trong CSDL. Nó cho phép các lớp được thiết lập theo
quan hệ kế thừa. OQL và OML có thể chuyển đổi qua lại, một câu truy vấn OQL có
thể gọi OML và ngược lại.
2. Ràng buộc ngôn Java: Ràng buộc ngôn ngữ Java của ODMG là sử dụng phong cách
lập trình tự nhiên và mang nhiều ý nghĩa thực tiễn của Java. Đối tượng của các lớp
có thể được đảm bảo bền vững mà không cần thay đổi chương trình nguồn. Sự bền
vững đạt được khi một giao dịch trong CSDL được uỷ thác thực hiện, đối tượng đi
đến được từ đối tượng gốc (root object) trong CSDL được bảo đảm bền vững trong
CSDL. Ràng buộc ngôn ngữ Java của ODMG để bổ sung thêm các lớp Java và
những cấu trúc khác vào môi trường Java, hỗ trợ mô hình đối tượng của ODMG, bao
gồm các cấu trúc sưu tập, các giao dịch và CSDL, mà không làm thay đổi ngữ nghĩa
của ngôn ngữ.
3. Ràng buộc ngôn Smalltalk: Ràng buộc ngôn Smalltalk của ODMG nhằm cung cấp
những khả năng lưu trữ, tìm kiếm và sửa đổi các đối tượng bền vững của Smalltalk.
Ràng buộc ngôn ngữ Smalltalk nhằm đưa ra một cơ chế để triệu gọi các thủ tục của
OQL trong các giao dịch, thao tác ở CSDL. Giống như ràng buộc ngôn ngữ Java, các
đối tượng Smalltalk được đảm bảo bền vững khii đi đến được trong các biểu thức
đường dẫn. Ràng buộc ngôn ngữ Smalltalk ánh xạ trực tiếp các lớp được định nghĩa
trong mô hình đối tượng ODMG sang mô hình lớp của Smalltalk. Những lớp sưu tập
và các thao tác của mô hình đối tượng được ánh xạ thành các lớp sưu tập và các
phương thức. Các mối quan hệ, giao dịch và các thao tác trong CSDL được ánh xạ
sang các cấu trúc (constructs) trong Smalltalk.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 104


5.3.9. Lược đồ suy dẫn kiểu trong ngôn ngữ truy vấn OQL
Hệ thống các kiểu dữ liệu nguyên thuỷ và các kiểu dữ liệu suy dẫn gắn với phân cấp kiểu
được giới thiệu trong hình 3-2. Trên cây phân cấp, ta nhận thấy rằng các kiểu tổng quát là các nút
nằm ở nút nhánh trên cây, các kiểu này sẽ không được sử dụng trong các lược đồ CSDL (khai
báo hình thức). Kiểu được gọi là kiểu đặc trưng, nếu nó được suy dẫn từ các kiểu cơ sở. Tất cả
các nút lá trong hình 3-2 là các kiểu đặc trưng.

Siêu kiểu any

Kiểu phi thủ tục Kiểu hàm

Kiểu nguyên thuỷ Kiểu cấu trúc Kiểu sưu tập

boolean Kiểu có thứ tự class struct set/bag list/array

set bag list array


string int/float char

int float

Hình 5.5: Sự phân cấp các kiểu trong OQL

5.3.10. Truy vấn select … from … where


Cú pháp của khối lệnh trọng tâm select trong OQL được qui định như sau:
select [distinct] <Danh sách kết quả>
from <Danh sách lớp/sưu tập lớp>
where <Biểu thức điều kiện>
[group by <Các thuộc tính phân nhóm>]
[having <Điều kiện lọc>]
[order by (<Khoá sắp xếp> asc|desc, …)]
Trong đó, từ khoá distinct nếu sử dụng thì kết quả của truy vấn có kiểu tập đối tượng
phân biệt. Mệnh đề group by phân nhóm trên lớp sưu tập, các đối tượng được nhóm theo giá trị
của các thuộc tính phân nhóm. Mỗi cấu trúc của nhóm chứa một nhóm các thuộc tính và nhóm
các đối tượng có cùng giá trị. Mệnh đề order by sắp thứ tự các đối tượng trong lớp sưu tập kết quả.
Sử dụng lược đồ CSDL VienDH được biểu diễn trong hình 3-3 minh hoạ cho các Thí dụ về
các dạng thức biểu diễn của truy vấn OQL:

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 105


Nguoi
+maso : string
+hoten : string
+tuoi : string

Khoa SinhVien DaiHoc


+hocvi : string +KhoaHoc : KhoaHoc +ten_nganh : string
+DaiHoc : DaiHoc +dtb : float +van_phong : string
+luong : float +DaiHoc : DaiHoc +truong_khoa : Khoa
+so_thich : string
+gv_hd : SinhVienTN

KhoaHoc
+ten_khoa_hoc : string
+so_hieu_kh : string
SinhVienTN SVChuaTN +DaiHoc : DaiHoc
+luanvan : string +so_nam : int
+gvhd : Khoa

Hình 5.6: Biểu diễn lược đồ VienDH trong UML


1. Truy nhập các đặc trưng của đối tượng
Người ta sử dụng tên của đối tượng kết hợp với tên các đặc trưng của đối tượng (thuộc
tính, mối quan hệ và các phép toán) để truy nhập vào các thành phần của một đối tượng hoặc các
đặc tính liên quan đến nó.
Đối tượng và tên các đặc trưng được đặt trong đường dẫn. Các bước trong đường dẫn được
ngăn cách bằng dấu chấm ‘.’ hoặc dấu mũi tên ‘->’. Dấu chấm hay dấu mũi tên có thể được dùng
thay cho nhau, nhưng người ta quy ước dùng dấu chấm là ký hiệu đường dẫn từ một đối tượng đến
các đặc trưng của nó, còn dấu mũi tên là ký hiệu đường dẫn từ một đối tượng này có mối quan hệ với
một đối tượng khác.
Thí dụ 5.6. Cho biết tên của các sinh viên chưa tốt nghiệp có tham gia các khoá học thuộc khoa
có Trưởng khoa tên là Thanh.
select s.hoten
from SVChuaTN as s
where s.DaiHoc.truong_khoa.hoten = ‘Thanh’
Cấu trúc như s.DaiHoc.truong_khoa.hoten gọi là biểu thức đường dẫn.
2. Thuộc tính và lượng tử
Biểu thức lôgic trong OQL thực hiện việc kiểm tra trên các thành viên của một lớp sưu
tập. Các phép toán kiểm tra được sử dụng trong biểu thức lôgic là:
(i) forall – kiểm tra với một điều kiện đúng (true) cho tất cả các đối tượng chứa trong
lớp sưu tập.
(ii) exists – kiểm tra sự tồn tại của một đối tượng trong lớp sưu tập thoả mãn một điều
kiện cho trước.
(iii) unique – kiểm tra tính duy nhất của các đối tượng trong lớp sưu tập
(iv) in – kiểm tra một đối tượng có thuộc về một lớp sưu tập hay không.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 106


(v) some, any và all – đây là những lượng từ được dùng để so sánh sự ít nhất (some hay
any) hay với mọi (all) cho các đối tượng thuộc (in) trong một lớp sưu tập.
(vi) set inclusion – Các phép toán so sánh bao hàm {<, <= , >, >=} áp dụng với các lớp
sưu tập để kiểm tra sự bao hàm của một lớp sưu tập này và lớp kia.
Cú pháp của truy vấn có lượng từ forall, exists và in là:
<Truy vấn> ::= forall <Truy vấn> in <Truy vấn> : <Truy vấn>
| exists <Tên> in <Truy vấn> : <Truy vấn>
| exists | unique ( <Truy vấn> )
| <Truy vấn> <Phép toán so sánh> [ some | any | all ] <Truy vấn>
Thí dụ 5.7. Truy vấn sử dụng toán tử in và lượng từ exists (tồn tại)
select f.hoten
from Khoa as f
where exists ‘Am nhac’ in f.so_thich
Trong biểu thức đường dẫn có thể dùng nhiều hơn một lượng từ với sự kết hợp giữa
exists và forall.

Thí dụ 5.8.
select s.hoten
from Khoa as f
where exists f.gv_hd in (forall KhoaHoc.DaiHoc.ten_nganh = ‘Cong nghe thong tin’)
3. Biến tham chiếu
Biến vùng mô tả cho một biểu thức đường dẫn có thuộc tính cuối cùng là một thuộc tính
phức được gọi là biến tham chiếu. Người ta sử dụng các biến vùng biểu diễn cho các đối tượng
của lớp trong một biểu thức đường dẫn.
Thí dụ 5.9.
select s.hoten
from SinhVienTN as s, s.gvhd as f
where s.tuoi > f.tuoi
Trong đó, f là một biến tham chiếu đến các đối tượng thuộc lớp SinhVienTN.
4. Bộ phận của một phân cấp lớp
Cho C là một siêu lớp của C1, C2, …, Cn. Khi thực hiện một truy vấn trên C, việc tìm
kiếm sẽ được thực hiện với tất cả các đối tượng trong phân cấp lớp có gốc tại C, để truy vấn trên một
vài lớp xác định chứ không phải tất cả các lớp, người ta sử dụng kết hợp các phép toán tập hợp như
union, difference và except trong truy vấn.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 107


Các phép toán trên tập hợp được cài đặt tương đương với các công thức trong lý thuyết tập
hợp với cú pháp:
<Truy vấn> :: = <Truy vấn> union / intersect / except <Truy vấn>
Thí dụ 5.10.
select s.hoten
from (SinhVien except (SinhVienTN union SVChuaTN)) as s
5. Phương thức tham chiếu
Phương thức trong truy vấn OQL được thể hiện theo hai dạng. Dạng thứ nhất là phương
thức thuộc tính – suy dẫn, sử dụng để tính giá trị cho mỗi đối tượng trong lớp mà phương thức
tác động. Phương thức thuộc tính – suy dẫn có thể được sử dụng giống như một thuộc tính trong truy
vấn. Dạng thứ hai là Phương thức tân từ, trả về một giá trị kiểu boolean đối với mỗi đối tượng trong
lớp. Thí dụ, ta có phương thức “VienDaiHoc( ) : boolean” trên lớp DaiHoc, phương thức này trả
về giá trị true nếu Đại học có trên 5 trường thành viên hoặc trên 30.000 sinh viên và false nếu
ngược lại.
6. Kết xuất một cấu trúc
Mô hình dữ liệu hướng đối tượng cho phép sử dụng các đối tượng có cấu trúc tập, danh
sách và bộ để thiết lập các đối tượng phức từ các đối tượng đơn. Ngôn ngữ truy vấn OQL cho
phép thiết lập các giá trị phức trong kết quả trả về của một truy vấn bằng việc dùng các phép
toán thiết lập kiểu đối tượng phức ở mệnh đề select với cú pháp:
<Truy vấn>::= struct ([<Định danh>:<Truy vấn> [, <Định danh>:<Truy vấn> ] *] )
|set | bag | list | array ( [ <Truy vấn> [,<Truy vấn>]*] )
Thí dụ 7.11.
select tuple(masv : s.masv, hoten : s.hoten,
Cnghe_Shoc: select c
from s.KhoaHoc as c
where c.DaiHoc.ten_nganh = ‘Sinh hoc’)
from SVChuaTN as s
where s.dtb > 3

5.4. HỆ QUẢN TRỊ CSDL HƯỚNG ĐỐI TƯỢNG (OODBMS)

5.4.1. Giới thiệu về các hệ quản trị CSDL hướng đối tượng

Trong thập kỷ qua, các hệ quản trị CSDL hướng đối tượng (ODBMS) đã phát triển rất mạnh mẽ,
nhiều hệ thống đã trở thành sản phẩm công nghiệp trên thị trường. Bảng 1 dưới đây liệt kê một
số sản phẩm của OODBMS [18]. Xu thế chung là những sản phẩm của những hãng lớn, đã thành
công sẽ thống trị thị trường OODBMSs giống như đối với RDBMSs.
Bảng 5.1: Danh sách một số hệ quản trị CSDL đối tượng

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 108


Để hiểu sâu hơn về những hệ thống OODBMS, chúng ta hãy chọn bốn hệ OODBMS để so sánh.
Trong bảng 5.2, ta thấy hầu hết những sảm phẩm này đều hỗ trợ những khái niệm cơ bản của
hướng đối tượng, như kiểu dữ liệu trừu tượng (định danh đối tượng, lớp và đối tượng thể hiện),
cấu trúc phân cấp lớp và kế thừa cũng như các khả năng đặc trưng của CSDL như phiên bản dữ
liệu, tái tạo và lập bản sao dữ liệu, ….
Bảng 5.2: So sánh một số hệ OODBMS

Tuy nhiên, không phải tất cả những hệ thống này đều hỗ trợ ODL hoặc OQL, mặc dù chúng đều
hỗ trợ các ràng buộc ngôn ngữ ODMG C++ và Smalltalk. Nghĩa là không có một hệ thống nào

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 109


hỗ trợ được tất cả các đặc tả chi tiết đã được định nghĩa trong chuẩn ODMG 3.0 hoặc những
chuẩn khác của OODB. Hơn nữa, chúng ta thấy Objectstore chiếm phần lớn nhất của thị trường
(29%, 1997; 40%, 1999), trong khi Objectivity hỗ trợ hầu hết các chuẩn nêu trên với các tính
năng khá mạnh thì lại chiếm ít hơn (9% trên thị trường).

5.4.2. Ưu điểm của các hệ OODBMS

Hệ quản trị CSDL hướng đối tượng có những lợi thế sau:
 OODBMS có thể xử lý được những sưu tập dữ liệu lớn, phức tạp được định nghĩa bởi
người sử dụng và cho phép bổ sung các kiểu dữ liệu mới dựa vào những kiểu dữ liệu
đã được định nghĩa trước. Như vậy, những kiểu dữ liệu như hợp thành, tham chiếu,
tập hợp, … có thể dùng để hỗ trợ truy cập vào những dữ liệu đa phương tiện như hình
ảnh, âm thanh, video, …
 Thuận tiện cho việc thiết kế và sự phát triển phần mềm ứng dụng, có thể giảm thiểu
được việc viết mã chương trình ở nhiều khâu. OODBMS giúp cho việc thiết kế CSDL
và thao tác đơn giản hơn, bởi vì nó không cần biết những kiểu dữ liệu trừu tượng
được định nghĩa bởi người sử dụng ADT (user- defined abstract data types) làm việc
như thế nào.
 Hiệu năng của hệ thống được cải tiến đáng kể. OODBMS làm việc rất hiệu quả với
những dữ liệu phức tạp. Nếu chúng ta sử dụng hệ quản trị quan hệ RDBMS và ta cần
phải thay đổi cấu trúc của một đối tượng dữ liệu trong CSDL thì thường ta phải thực
hiện nhiều câu truy vấn. Mỗi câu truy vấn này phải chịu các phí tổn nhất định và dẫn
tới kém hiệu quả. CSDL đối tượng sẽ khắc phục được nhược điểm trên bằng cách
thông qua định danh OID- để hệ thống tìm kiếm những thông tin cần thiết một cách
hiệu quả nhất.
Kết luận
CSDL hướng đối tượng OODB (bao gồm các chuẩn OODB, mô hình OODB, truy vấn OODB,
và quản trị OODBMS) đã được phát triển từ những năm 1980. Các ý tưởng về công nghệ và mô
hình lõi của CSDL hướng đối tượng có tầm quan trọng trong nghiên cứu và triển khai các ứng
dụng CSDL hướng đối tượng. Những chuẩn nổi tiếng như ODMG, OMG, …, đã được đề xuất để
cải tiến những hệ quản trị CSDL hướng đối tượng. Tuy nhiên, nó vẫn chưa thống trị được thị
trường các hệ quản trị CSDL hiện nay hoặc trong tương lai gần, bởi vì một số nguyên nhân thực
tế. Hiện tại, cái mà chúng ta dễ nhận thấy là có sự kết hợp của các hệ quản trị CSDL hướng đối
tượng với CSDL quan hệ truyền thống, đó là những hệ quản trị CSDL quan hệ - đối tượng
ORDBMS. Xu thế chính là kết hợp các hệ thống quản trị CSDL quan hệ với hệ thống quản trị
CSDL đối tượng và sử dụng SQL để quản lý những dữ liệu truyền thống và sử dụng hệ thống
quản trị CSDL hướng đối tượng để quản lý những dữ liệu dữ liệu hướng đối tượng, phức hợp.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 110


Chương 6

CÁC MÔ HÌNH CƠ SỞ DỮ LIỆU MỜ

6.1. CƠ SỞ DỮ LIỆU VỚI THÔNG TIN KHÔNG HOÀN HẢO

6.1.1. Mở đầu

Các hệ CSDL kinh điển, phổ biến nhất là các hệ CSDL quan hệ, hầu như không có khả
năng biểu diễn và xử lý có hiệu quả các thông tin không chính xác và không chắc chắn. Chẳng
hạn, với câu hỏi: “hãy cho biết tên các nhân viên trẻ tuổi và có lương khá cao?” thì một hệ quản
trị CSDL kinh điển dường như không có cách gì để cho câu trả lời thỏa đáng. Mặt khác, chúng ta
luôn phải đối mặt với một sự thật là sự hiểu biết của chúng ta về thế giới thực thường là không
hoàn hảo, vì vậy làm thế nào để duy trì được tính toàn vẹn của một CSDL với những thông tin
thu thập được từ thế giới thực? Có hai lựa chọn:
- Hoặc là giới hạn mô hình CSDL trong phạm vi thế giới thực mà ở đó mọi thông tin có
được là hoàn hảo. Điều này sẽ làm cho phạm vi ứng dụng của hệ thống bị hạn chế rất nhiều, vì
thực tế hầu hết các thông tin ta biết về thế giới thực là không hoàn hảo. Chẳng hạn, với một
CSDL về nhân viên, nếu chỉ chấp nhận các thông tin hoàn hảo thì các bộ ứng với các nhân viên
mà không biết chính xác ngày sinh hay mức lương đều có thể bị loại.
- Hoặc là phát triển các mô hình dữ liệu cho phép biểu diễn, thao tác và xử lý các thông tin
không hoàn hảo và không đầy đủ bằng cách mở rộng ngữ nghĩa dữ liệu hoặc mở rộng miền trị
thuộc tính. Chẳng hạn, chấp nhận thông tin có được về tuổi của một nhân viên là không chính
xác, chỉ biết là trong khoảng từ 30 đến 40. Nếu mô hình CSDL có khả năng biểu diễn và thao
thác trên các khoảng, thì có thể chấp nhận những bộ với thông tin mơ hồ như vậy. Một CSDL
như vậy được gọi là CSDL với thông tin không hoàn hảo.
Giải pháp thứ hai rõ ràng là tốt hơn, vì có thể mở rộng các ứng dụng của CSDL trên cơ sở
cho phép biểu diễn và xử lý các thông tin không hoàn hảo.

6.1.2. Thông tin không hoàn hảo

Trong những năm gần đây, để đáp ứng các yêu cầu của những ứng dụng cơ sở dữ liệu
không truyền thống, bao gồm CAD/CAM, các hệ thống tự động hóa văn phòng, những thiết kế
kỹ thuật…, nhiều loại thông tin không hoàn hảo khác nhau đã được đưa vào CSDL quan hệ.
Các mô hình CSDL quan tâm tới năm loại thông tin không hoàn hảo dưới đây:
- Thông tin không nhất quán (inconsistent information): Đây là loại thông tin sai lệch,
trong đó cùng một khía cạnh của thế giới thực được biểu diễn nhiều lần trong cùng một CSDL
hay trong những CSDL khác nhau, khi các biểu diễn đó là đối lập quyết liệt không thể hòa hợp
được. Thông tin không nhất quán có thể ảnh hưởng đến tính toàn vẹn của một CSDL, chẳng hạn
có thể phá vỡ một phụ thuộc dữ liệu nào đó. Thông tin không nhất quán thường xuất hiện khi
tích hợp thông tin từ nhiều CSDL.
- Thông tin không chính xác (imprecise information): Là thông tin được ký hiệu bởi một
tập các giá trị có thể, và giá trị thực của thông tin là một phần tử của tập đó. Như vậy thông tin

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 111


không chính xác không phải là thông tin không nhất quán, nó không làm phương hại tới tính toàn
vẹn của CSDL. Chẳng hạn những thông tin sau đây là không chính xác:
Thông tin tuyển: tuổi của Nam hoặc là 35 hoặc là 36.
Thông tin âm: Tuổi của Nam không phải 30.
Thông tin khoảng miền: Tuổi của Nam giữa 35 và 40, hay tuổi của Nam lớn hơn 32.
Thông tin với sai số: Tuổi của Nam là 35  1.
Các giá trị null được hiểu là thông tin không chính xác, trong đó tập các giá trị có thể là
toàn bộ miền trị hợp lệ,...
- Thông tin mơ hồ (vague information): Có thể thấy thông tin không chính xác và thông
tin mơ hồ là có mối liên hệ tới nội dung của giá trị thuộc tính, có nghĩa là một sự lựa chọn phải
được thực hiện trên một vùng đã cho của miền trị, nhưng ta không thực sự biết chính xác giá trị
nào được chọn. Chẳng hạn, các phát biểu: “Tuổi của Nam là trẻ”, hay “Căn hộ tương đối rộng và
gần bãi biển” là chứa đựng các thông tin mơ hồ, vì ta không biết tuổi của Nam “trẻ” là bao
nhiêu, hay “tương đối rộng” là diện tích bao nhiêu, hay “gần” là khoảng cách bao nhiêu... Thông
tin mơ hồ có thể hiểu là sự biểu diễn của giá trị của các biến ngôn ngữ.
- Thông tin không chắc chắn (uncertaint information): Là loại thông tin không được phát
biểu với niềm tin tuyệt đối và đòi hỏi phải đưa ra niềm tin (mức độ chắc chắn) về thông tin được
phát biểu. Chẳng hạn, với phát biểu: “tuổi của nam là 35 hoặc 36” thể hiện tính không chính xác,
thì phát biểu: “tuối của Nam có khả năng là 35” lại thể hiện tính không chắc chắn.
Chú ý rằng, đôi khi một giá trị chính xác lại kéo theo sự kém chắc chắn, một giá trị càng kém
chính xác thì độ chắc chắn sẽ tăng dần, cuối cùng đạt cực đại với một giá trị có độ chính xác cực
tiểu (chẳng hạn giá trị null). Với phát biểu trên về tuổi của Nam là 35 (chính xác), thì độ chắc chắn
là thấp (chỉ là “có khả năng”), còn phát biểu: “chắc chắn tuổi của Nam từ 25 đến 50”, thông tin này
có niềm tin tuyệt đối, độ chắc chắn cao nhất, nhưng độ chính xác lại rất thấp. Thông tin không chắc
chắn cũng không phải là thông tin không nhất quán, và không làm phương hại tới tính vẹn toàn của
CSDL.
- Thông tin nhập nhằng (ambiguos information): Là loại thông tin còn thiếu một số yếu tố
về ngữ nghĩa, ngữ cảnh, do đó có thể dẫn tới nhiều cách hiểu và giải thích khác nhau. Chẳng hạn
nói rằng lương của Bill là 50.000 USD, là một thông tin nhập nhằng, vì không biết lương đó là
tính theo tuần, theo tháng hay theo năm?.
Như vậy, từ các yêu cầu của thế giới thực, cần đặt ra vấn đề mở rộng mô hình CSDL quan
hệ để cho phép biểu diễn và xử lý những thông tin không hoàn hảo, những thông tin như vậy đều
có tính chất chung là không rõ ràng, được gọi chung là các dữ liệu mờ (Fuzzy Data). Có hai cách
mở rộng mô hình quan hệ để đáp ứng các yêu cầu về biểu diễn, xử lý và khai thác dữ liệu mờ, đó
là: mở rộng ngữ nghĩa của dữ liệu để khai thác dữ liệu rõ với các yếu tố mờ và mở rộng miền trị
thuộc tính để biểu diễn được dữ liệu mờ.

6.1.3. Hai cách mở rộng mô hình cơ sở dữ liệu quan hệ

- Mở rộng ngữ nghĩa dữ liệu


Với cách mở rộng ngữ nghĩa, dữ liệu vẫn được lưu trữ như mô hình dữ liệu quan hệ truyền
thống (là các “CSDL rõ”), tức là dữ liệu tại mỗi bộ tại các thuộc tính là dữ liệu rõ nhưng cho

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 112


phép khai thác dữ liệu với ngữ nghĩa rộng hơn. Chẳng hạn ta có thể hỏi dữ liệu với tiêu chuẩn
không rõ ràng như: “cho biết những nhân viên có lương khá cao trong công ty”. Cách mở rộng
này tất yếu phải xây dựng cơ sở logic cho việc xử lý ngữ nghĩa mở rộng của dữ liệu, như việc ta
phải mô hình hóa những khái niệm mờ như “cao”, “thấp”, cách gắn giá trị chân lý cho những
phép so sánh như “xấp xỉ nhau”, “gần nhau”, “tương đương”,…
Lý thuyết tập mờ và logic mờ là cơ sở cho việc mở rộng theo cách này. Điểm tiện lợi của
cách mở rộng này là có thể sử dụng được các hệ quản trị CSDL của mô hình quan hệ để quản lý
dữ liệu, những mở rộng cho việc xử lý dữ liệu được cài đặt thành một mô đun độc lập. Các ứng
dụng của cơ sở dữ liệu mờ cho đến hiện nay thường làm theo cách này bởi vì CSDL quan hệ
được sử dụng rất rộng rãi trong hầu hết các hệ thống thông tin và trở nên quen thuộc với người
dùng cũng như những người quản trị hệ thống. Hơn nữa, nó không làm thay đổi cấu trúc của hệ
thống cũng như không yêu cầu người dùng phải học thêm một ngôn ngữ hoàn toàn mới.
- Mở rộng miền trị thuộc tính
Đây là cách mở rộng tổng quát hơn so với cách mở rộng ngữ nghĩa. Cách mở rộng này bổ
sung những cú pháp cho phép biểu diễn được nhiều dạng dữ liệu mờ. Nhiều nhà nghiên cứu mở
rộng theo cách này từ những năm 1970 và cho đến nay vẫn tiếp tục phát triển. Nhiều công cụ
toán học được sử dụng để mở rộng khả năng biểu diễn dữ liệu như: lý thuyết tập mờ, biến ngôn
ngữ, lý thuyết khả năng, lý thuyết xác suất… Với cách mở rộng này, bên cạnh bổ sung cú pháp
biểu diễn còn phải giải quyết cả vấn đề ngữ nghĩa của các ký hiệu mới, những cơ sở tính toán,
logic hỗ trợ cho việc xử lý dữ liệu với các ký pháp mở rộng. Do đó cách mở rộng này yêu cầu
người dùng phải học về một cơ sở dữ liệu mới là cơ sở dữ liệu mờ cùng với các hệ quản trị cho
cơ sở dữ liệu mờ.

6.1.4. Ứng dụng lý thuyết tập mờ để mở rộng mô hình cơ sở dữ liệu quan hệ

Mô hình quan hệ do Codd E.F. đề xuất năm 1970 đã đáp ứng được nhu cầu lưu trữ và xử lý
dữ liệu của con người trong một thời gian dài. Tuy nhiên, mô hình này đòi hỏi các thông tin lưu
trữ và xử lý phải là chính xác và hoàn hảo, trong khi các ứng dụng của thế giới thực, thông tin
thường là không hoàn hảo. Như vậy đặt ra vấn đề cần xây dựng một mô hình CSDL mới để lưu
trữ và thao tác với các thông tin không hoàn hảo.
Ta có thể định nghĩa tổng quát cho một mô hình CSDL mờ như sau:
Định nghĩa 6.1: Mô hình CSDL mờ là một mô hình dữ liệu cho phép biểu diễn, thao tác và
xử lý các thông tin không hoàn hảo và không đầy đủ bằng cách mở rộng ngữ nghĩa dữ liệu hoặc
mở rộng miền trị thuộc tính.
Như vậy, một CSDL mà trong đó có chứa một yếu tố liên quan đến các thông tin không
hoàn hảo (các thông tin mờ) thì được gọi là CSDL mờ. Nếu chúng ta chỉ xem xét các mô hình
CSDL quan hệ, biểu diễn bởi tập các bảng thì một cách trực quan có thể thấy nếu một CSDL quan
hệ có chứa ít nhất một bảng có yếu tố mờ thì đó là một CSDL mờ.
Dựa trên các tiếp cận theo logic mờ, người ta đề xuất nhiều phương pháp để lưu trữ và xử
lý thông tin không hoàn hảo dựa trên cơ sở của lý thuyết tập mờ, lý thuyết khả năng và quan hệ
tương tự. Với mỗi cách tiếp cận, có thể xây dựng được các mô hình CSDL quan hệ mờ khác
nhau. Trong giáo trình này, chúng ta giới thiệu một số mô hình CSDL mờ chủ yếu, đó là các mô
hình CSDL quan hệ mờ dựa trên tập con mờ, mô hình CSDL quan hệ mờ dựa trên quan hệ tương

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 113


tự, mô hình CSDL quan hệ mờ dựa trên phân bố khả năng cùng với các vấn đề liên quan đến việc
thiết kế và chuẩn hóa các CSDL mờ.

6.2. CÁC KHÁI NIỆM CƠ SỞ CỦA LÝ THUYẾT TẬP MỜ

6.2.1. Khái niệm tập hợp mờ

Khái niệm ‘Tập hợp mờ’ (Fuzzy Set) được đề xuất bởi Zadez [11] từ năm 1965, là mở rộng
của khái niệm tập hợp cổ điển, nhằm đáp ứng nhu cầu biểu diễn những tri thức không chính xác.
Trong lý thuyết tập hợp cổ điển (tập hợp rõ-crisp set), quan hệ thành viên của các phần tử đối với
một tập hợp được đánh giá theo kiểu nhị phân một cách rõ ràng: mỗi phần tử u của vũ trụ tham
chiếu U chỉ có thể là chắc chắn thuộc tập A hoặc chắc chắn không thuộc tập A. Như vậy, để xem
một phần tử có là là thành viên của tập A hay không, ta gán cho phần tử đó giá trị 1 nếu phần tử
đó chắc chắn thuộc A, và giá trị 0 nếu nó không thuộc về tập hợp A, tức là ta có thể xây dựng
một hàm thành viên (hay hàm thuộc) để đánh giá một phần tử có thuộc tập A hay không:
1 if u  A
u  U ,  A  u   
0 if u  A
Rõ ràng, hàm thành viên A sẽ xác định các phần tử thuộc về tập rõ A chỉ nhận giá trị 0
hoặc 1. Như vậy với tập rõ A thì A: U  { 0, 1}.
Ngược lại, lý thuyết tập mờ cho phép đánh giá nhiều mức độ khác nhau về khả năng một
phần tử có thể thuộc về một tập mờ A. Ta cũng dùng một hàm thành viên A để xác định các
mức độ mà một phần tử u thuộc về tập mờ A, hàm này nhận mọi giá trị từ 0 đến 1, tức là: u 
U, 0  A(u)  1. Như vậy, với tập mờ A thì A : U  [0, 1].
Chẳng hạn, xét vũ trụ tham chiếu là các nhân viên trong một công ty, gọi A là tập ‘những
người có mức lương từ 6 triệu đến 8 triệu đồng, thì A là một ‘tập rõ’, gồm tất cả những người có
mức lương S, mà 6.000.000  S  8.000.000. Rõ ràng ai có lương 5.990.000đ hay 8.010.000đ là
không thuộc tập A. Nếu ta coi mức lương từ 6.000.000 trở lên là mức ‘thu nhập cao’, thì cả
những người có mức lương thấp hơn 6.000.000 vài chục ngàn đến vài trăm ngàn đồng vẫn có thể
được xem là thuộc tập hợp ‘những người có thu nhập cao’. Nếu gọi B là tập: ‘những người có
thu nhập cao’ thì B là tập mờ, mỗi phần tử của vũ trụ tham chiếu đều được gán một giá trị chỉ
mức độ mà phần tử đó thuộc về tập mờ này. Chẳng hạn một nhân viên có mức lương 6.800.000
có độ thuộc vào tập B này là bằng 1 (chắc chắn là người có thu nhập cao), nhưng một người có
mức lương 2.000.000 thì có thể coi là thành viên của tập này với độ thuộc rất thấp, độ thuộc sẽ
tăng dần với những người có mức lương càng cao. Những người có thu nhập dưới 1.000.000 đ
thì không thể xem là có thu nhập cao, chắc chắn không thể thuộc tập B (mức độ là thành viên là
bằng 0).
Ta có định nghĩa hình thức cho một tập con mờ trên một vũ trụ tham chiếu U (là tập hợp
tất cả các phần tử xem xét, còn gọi là ‘tập nền’) như sau:
Định nghĩa 6.2: Tập con mờ A trên tập nền U xác định bởi hàm thuộc A: U  [0, 1] gán
cho mỗi phần tử u của U, một giá trị A(u), với 0 ≤ A(u) ≤1, để chỉ mức độ mà phần tử u thuộc
 u  
về tập mờ A và được xác định: A   A i ui U , i  1, 2,..., n 
 ui 

Có thể dùng ký hiệu: A   ui ,  A  ui   ui  U 

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 114


hoặc:
 A  u1   A  u2   A  un 
A   ... 
u1 u2 un

và chú ý rằng các dấu ‘+’ và ký hiệu phân số trong biểu diễn trên chỉ là một cách ký hiệu cho
mỗi phần tử ui (ở mẫu số) và mức độ thuộc về A của các phần tử đó (ở tử số) chứ không liên quan
gì đến các phép toán.
Nếu hàm A(u) cho kết quả 0 đối với phần tử u  U thì phần tử đó không có trong tập mờ
A, kết quả 1 thì phần tử đó hoàn toàn thuộc tập đã cho. Các giá trị trong khoảng mở từ 0 đến 1
đặc trưng cho các phần tử mờ, tức là mức độ là thành viên của phần tử đó đối với tập hợp dã cho.
Trường hợp đặc biệt khi A: U  {0, 1}, tức là hàm A(u) chỉ lấy giá trị bằng 0 hay 1, thì
tập con mờ A là một tập con cổ điển của U. Như vậy, tập con cổ điển (tập rõ) là một trường hợp
riêng của tập con mờ.
Thí dụ 6.1. Xét tập U gồm 8 căn hộ được ký hiệu là u1, u2, u3, u4, u5, u6, u7 và u8, mỗi căn
hộ có số phòng tương ứng là 1, 2,…, 8 phòng. Gọi A là tập hợp gồm các căn hộ “rộng”, B là tập
hợp gồm các căn hộ “thích hợp cho 4 người”. Ta xây dựng hàm thuộc cho các tập mờ A và B
như sau:
A : A(u3) = 0,4; A(u4) = 0,5; A(u5) = 0,6; A(u6) = 0,8; A(u7) = 0,9; A(u8) = 1,0
B : B(u3) = 0,4; B(u4) = 1,0; B(u5) = 0,7; B(u6) = 0,5;
đối với các phần tử khác, các giá trị của hàm thuộc là bằng 0.
Như vậy có thể biểu diễn các tập mờ trên như sau:
A = {0,4/u3; 0,5/u4; 0,6/u5; 0,8/u6; 0,9/u7; 1,0/u8}
B = {0,4/u3; 1,0/u4; 0,7/u5; 0,5/u6},
Từ nay về sau, để cho gọn ta có thể dùng “Tập mờ” thay cho “Tập con mờ” mà không gây
ra sai sót và hiểu lầm nào.

6.2.2. Các đặc trưng của tập mờ


Các đặc trưng của một tập mờ A trên U, là những thông tin để mô tả về các phần tử liên
quan đến tập mờ A, những đặc trưng này còn chỉ rõ sự khác biệt của tập mờ A, so với những tập
con cổ điển khác của U.
Định nghĩa 6.3: Cho tập mờ A trên vũ trụ tham chiếu U, các đặc trưng cơ bản của tập mờ
A được định nghĩa và xác định như sau:
(1) Giá đỡ của tập mờ A (Support) là tập các phần tử có giá trị hàm thuộc lớn hơn 0 trong
tập mờ A, được ký hiệu và xác định như sau:
supp(A) = {u | u  U | A(u) > 0}
(2) Chiều cao của tập mờ A là giá trị lớn nhất mà hàm thuộc có thể lấy trong tập mờ A,
được ký hiệu và xác định như sau:
h(A) = sup{A (u), u U }
- Chú ý rằng nếu U là tập rời rạc thì h(A) = max{A(u), uU}

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 115


- Tập mờ A gọi là chuẩn hóa nếu chiều cao của nó h(A) = 1
Như vậy, tập mờ A trên U được gọi là chuẩn hóa, nếu chắc chắn có ít nhất 1 phần tử của U
là thật sự thuộc A.
(3) Hạt nhân của tập mờ A là tập các phần tử có giá trị hàm thuộc bằng 1, được ký hiệu và
xác định như sau:
ker(i) = {u | uU | A(u) = 1}
Như vậy, tập mờ A có hạt nhân khác rỗng khi và chỉ khi A là tập mờ chuẩn hóa.
(4). Lực lượng của tập mờ A được ký hiệu và xác định như sau:
A   A u 
uU

Chú ý rằng nếu A là tập rõ thì A(u) = 1 với mọi u thuộc A, tổng trên bằng số phần tử của
A, định nghĩa này là mở rộng của định nghĩa lực lượng của tập hợp cổ điển cho một tập rời rạc.
(5)  - nhát cắt của tập mờ A (hay tập mức  của A) là tập các phần tử có giá trị hàm
thuộc lớn hơn hoặc bằng , với   [0, 1], được ký hiệu và định nghĩa như sau:
A = {u | uU | A(u)  }
Chú ý rằng  - nhát cắt của tập mờ A là 1 tập “rõ”, các phần tử của A hoàn toàn được xác
định.
Thí dụ 6.2. Xét tập mờ A là các căn hộ rộng, trong thí dụ 6.1:
A = {0,4/u3; 0,5/u4; 0,6/u5; 0,8/u6; 0,9/u7; 1,0/u8}
Khi đó: Giá đỡ, hạt nhân, chiều cao, tập mức  của tập mờ A được xác định
như sau:
supp(A) = {u3, u4, u5, u6, u7, u8}
ker(A) = {u8}
h(A) = 1.0
A là tập mờ chuẩn hóa, do có h(A) = 1.
Một số nhát cắt mức  = 0,5 của tập mờ A:
A0,5 = {u4, u5, u6, u7, u8};
A0,9 = {u7, u8}

6.2.3. Các phép toán trên tập mờ


Tương tự như lý thuyết tập hợp, trên các tập mờ cũng định nghĩa các khái niệm bằng nhau,
bao hàm nhau và một số phép toán như: phép hợp, phép giao, tích Đề các (Descartes) của 2 tập
mờ, là sự mở rộng các phép toán tương ứng trong lý thuyết tập hợp cổ điển.
a. So sánh các tập mờ

Cho A và B là hai tập con mờ trên vũ trụ tham chiếu U với hàm thuộc tương ứng là A và
B, để so sánh các tập con mờ A, B ta xem xét các hàm thuộc của nó. Ta có:
- Hai tập mờ A và B là bằng nhau: ký hiệu A = B, nếu  u  U thì A(u) = B(u)
- Tập mờ A chứa trong tập mờ B: ký hiệu A  B, nếu  u  U thì A(u)  B (u).
- Tập rỗng  có thể xem là tập mờ A, với hàm thuộc A(u) = 0, u  U

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 116


Từ các khái niệm trên, ta thấy hai tập mờ là bằng nhau, khi mọi phần tử của tập này cũng
thuộc tập kia (với cùng độ thuộc) và ngược lại. Điều này hoàn toàn tương tự khái niệm bằng
nhau của hai tập hợp cổ điển. Ngoài ra, tập mờ A là tập con của tập mờ B nếu một phần tử bất kỳ
thuộc A thì cũng thuộc B (với độ thuộc không thấp hơn độ thuộc của phần tử đó trong A), điều
này cũng tương tự như đối với các tập hợp cổ điển.
b. Phép hợp 2 tập mờ
Định nghĩa 6.4: Hợp của hai tập mờ A và B trên U, ký hiệu A  B, là một tập mờ trên U
với hàm thuộc được ký hiệu AB(u) và xác định như sau:
 u U, AB(u) = max{A(u), B (u)}
Đồ thị hàm thuộc của hợp mờ A, B và tập mờ A  B được cho trong hình sau:

Hình 6.1. Hợp của hai tập mờ A và B

c. Phép giao 2 tập mờ


Định nghĩa 6.5: Giao của hai tập mờ A và B trên U, ký hiệu A  B, là một tập mờ trên U
với hàm thuộc được ký hiệu A  B(u) và được xác định như sau:
u U, AB(u) = min{A(u), B(u)}
Đồ thị hàm thuộc của hợp mờ A, B và tập mờ A  B được cho trong hình sau:

Hình 6.2. Giao của hai tập mờ A và B


d. Một số tính chất của phép hợp và phép giao các tập mờ:

Các tính chất giao hoán, kết hợp và phân bố của phép hợp và phép giao trong lý thuyết tập
hợp cổ điển vẫn đúng đối với phép hợp, phép giao của các tập con mờ. Tức là nếu A, B, C là các
tập con mờ trên vũ trụ tham chiếu U, ta có các công thức sau:

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 117


- Tính chất giao hoán:
AB=BA
AB=BA
- Tính chất kết hợp:
(A  B)  C = A  (B  C)
(A  B)  C = A  (B  C)
- Tính chất phân bố:
A  (B  C) = (A  B)  (A  C)
A  (B  C) = (A  B)  (A  C)
Nói chung, những công thức của tập hợp cổ điển chỉ liên quan đến phép hợp và phép giao,
thì cũng đúng đối với các tập con mờ, chẳng hạn: A  B  A  A  B, A  U = A, A  U = U
và vv…
e. Phần bù của một tập mờ
Trong tập hợp cổ điển, phần bù của một tập hợp chứa những phần tử không thuộc tập đó
(trên cùng tập vũ trụ tham chiếu). Đối với tập con mờ A trên U, phần bù của A, ký hiệu là A ,
chứa những phần tử với độ thuộc càng cao nếu độ thuộc của phần tử này vào A càng nhỏ. Nói
cách khác, một phần tử càng ít có khả năng thuộc vào tập mờ A thì càng có nhiều khả năng thuộc
vào phần bù A , như vậy A cũng là một tập con mờ trên U và được định nghĩa như sau:
Định nghĩa 6.6: Phần bù của tập mờ A, ký hiệu A là một tập con mờ trên U với hàm
thuộc được ký hiệu  A (u) và xác định như sau:
u U,  A (u) = 1- A(u)
Đồ thị hàm thuộc của tâp mờ A và tập mờ A như sau:

Hình 6.3. Phần bù của tập mờ A

g. Một số tính chất của phép lấy phần bù các tập mờ:
Đối với các tập con cổ điển trên tập vũ trụ U, ta luôn có A  A =  và A  A = U, nhưng
đối với các tập mờ thì hai tính chất này nói chung không đúng, tức là nếu A là phần bù của tập
mờ A trên U thì:
A  A  , và
A  A  U.
Đây là điểm khác nhau quan trọng giữa các tập con cổ điển và các tập con mờ.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 118


Các tính chất khác đối với phần bù của tập con cổ điển vẫn đúng cho các tập con mờ, tức là
nếu A, B là các tập con mờ trên U thì ta có:
- Một số tính chất về phần bù (phủ định):
AA; U=Ø; Ø =U
- Các công thức đối ngẫu (công thức De Morgan):
AB  AB
AB  AB
Thí dụ 6.3. Trở lại các tập mờ A, B trong thí dụ 6.1, với các tập con mờ A, B
như sau:
A là tập hợp các căn hộ “rộng”. A = {0,4/u3; 0,5/u4; 0,6/u5; 0,8/u6; 0,9/u7; 1,0/u8}
B là tập hợp các căn hộ “thích hợp cho 4 người”. B = {0,4/u3; 1,0/u4; 0,7/u5; 0,5/u6}
Khi đó ta có:
- A  B = {Các căn hộ thích hợp cho 4 người “hoặc” rộng}
= {0,4/u3; 1,0/u4; 0,7/u5; 0,8/u6; 0,9/u7; 1,0/u8}
- A  B = {Các căn hộ thích hợp cho 4 người “và” rộng}
= {0,4/u3; 0,5/u4; 0,6/u5; 0,5/u6}
- A = {Các căn hộ không rộng}
= {0,6/u3; 0,5/u4; 0,4/u5;0,2/u6; 0,1/u7}
- A  A = {0,4/u3 ; 0,5/u4 ; 0,4/u5 ; 0,2/u6 ; 0,1/u7}  
h. Tích Đề các (Descartes) của tập mờ
Trước hết ta định nghĩa tích Đề các của 2 tập con mờ A và B trên các vũ trụ tham chiếu
tương ứng U và V, giả sử U và V là độc lập với nhau.
Định nghĩa 6.7: Cho A và B là hai tập con mờ có các hàm thuộc A và B trên các vũ trụ
tham chiếu tương ứng U và V, khi đó tích Đề các của A và B là một tập con mờ ký hiệu là A  B
trên vũ trụ tham chiếu U  V, với hàm thuộc là A B được xác định
như sau:
(u,v)  U  V, AB (u,v) = min{A(u), B(v)}
Tương tự như trong lý thuyết tập hợp cổ điển, ta có thể mở rộng định nghĩa tích Đề các cho
k tập mờ trên các vũ trụ tham chiếu độc lập:

Định nghĩa 6.8: Tích Đề các của k tập mờ A1, A2,..., Ak trên các vũ trụ tham chiếu U1,
U2,.., Uk là một tập con mờ ký hiệu là A1  A2 ...  Ak trên vũ trụ tham chiếu U1  U2 ...  Uk,
với hàm thuộc là A1 A2… Ak được xác định như sau:
A1 A2 ×… Ak (u) = min{A1(u1), A2(u2),..., Ak(uk)},
u = (u1, u2,…, uk)  U1  U2 ...  Uk.
Các khái niệm về tích Đề các của các tập con mờ là cơ sở để nghiên cứu các quan hệ mờ
trong các phần sau.

6.3. CÁC QUAN HỆ MỜ


6.3.1. Định nghĩa quan hệ mờ

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 119


Chúng ta bắt đầu xem xét trường hợp đơn giản nhất của các quan hệ mờ, đó là quan hệ mờ
giữa 2 phần tử của vũ trụ tham chiếu U nào đó (U còn được gọi là tập nền).
Đây cũng là trường hợp có nhiều ứng dụng nhất của các quan hệ mờ, đó là các quan hệ mờ
hai ngôi trên cùng một tập nền. Trong Giáo trình này, ta cũng chủ yếu xét các quan hệ mờ hai
ngôi trên cùng một tập nền, việc mở rộng định nghĩa cho các quan hệ mờ trên nhiều tập nền là
không khó khăn.
Đối với các quan hệ cổ điển R (quan hệ “rõ”) thì với 2 phần tử a, b  U, chúng hoặc là có
quan hệ với nhau (khi đó ta viết aRb), hoặc là không có quan hệ với nhau (ta viết aRb). Ta có
thể gán giá trị cho cặp (a, b) là bằng 1 nếu a và b có quan hệ với nhau, và gán giá trị 0 trong
trường hợp trái lại. Như vậy hàm hai biến:
1 if aRb
a, b  U, fR(a, b) =  lấy giá trị trong tập {0, 1} sẽ xác định được tất cả những
0 if aRb
cặp (a, b)  U  U có quan hệ với nhau theo quan hệ R nào đó, những cặp phần tử như vậy tạo
nên một tập con của tích Đề các U  U, và được gọi là một quan hệ hai ngôi (rõ) trên tập hợp U.
Với các quan hệ mờ, thì mỗi cặp phần tử a, b  U có thể có mối liên hệ không chỉ ở mức độ 0
hoặc 1, mà có thể có nhiều mức độ giữa 0 và 1. Như vậy, nếu ta dùng một hàm fR(a, b) lấy mọi
giá trị trong miền [0, 1] thì sẽ xác định được nhiều cấp độ quan hệ giữa hai phần tử bất kỳ a, b 
U, tức là xác định được quan hệ mờ 2 ngôi trên U, quan hệ này sẽ là một tập con mờ của tích Đề
các U  U. Ta có định nghĩa sau:
Định nghĩa 6.9: Một quan hệ mờ R trên tập tham chiếu U, ký hiệu là R(U), (hay RU) là một
tập con mờ của tích Đề các U  U, xác định bởi hàm thuộc fR: U  U  [0, 1].
Nếu hai phần tử a, b U có liên hệ theo quan hệ R với mức độ , thì ta viết fR(a, b) = , (
chỉ mức độ quan hệ nhiều hay ít giữa hai phần tử a và b, với 0 <  < 1)
Nếu tập U là hữu hạn: U = {u1, u2,..., un} thì quan hệ mờ hai ngôi trên U có thể được biểu
diễn bằng một ma trận vuông cấp n, (hoặc cho bởi bảng n hàng, n cột) mà phần tử ij nằm trên
hàng i và cột j là mức độ quan hệ của cặp phần tử ui, uj trong U, tức là ij = fR(ui, uj).
Ma trận của quan hệ mờ R được ký hiệu và xác định như sau:
M(R) = (ij)n × n ; với ij = fR(ui, uj), (i = 1, 2,..., n; j = 1, 2,..., n)
Việc cho một quan hệ mờ 2 ngôi R trên U tương đương với việc cho một ma
trận M(R).
Thí dụ 6.4. Cho tập 3 sinh viên: {Hùng, Liên, Dung}, ký hiệu ngắn gọn: U = {H, L, D}.
Cho R là một quan hệ mờ hai ngôi trên U, là mức độ tin cậy của sinh vên này đối với sinh viên
kia. Quan hệ R (mức độ “tin cậy” lẫn nhau) giữa các sinh viên cho trong bảng dưới đây:

Bảng 6.1. Quan hệ “tin cậy” giữa các sinh viên

R H L D
H 1 0,9 0,3
L 0,9 1 0,1
D 0,5 0,1 1

Ta có thể cho quan hệ mờ R bằng ma trận M(R) = (aij) với aij là mức độ tin cậy của sinh
viên thứ i với sinh viên thứ j, với i, j = 1, 2, 3.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 120


 1 0,9 0,3
M  R   0,9 1 0,1
 0,5 0,1 1 
Tức là ta có các mức độ tin cậy giữa các cặp SV như sau:
fR(H, L) = fR(L, H) = 0,9;
fR(L, D) = fR(D, L) = 0,1;
fR(H, D) = 0,3; fR(D, H) = 0,5;
fR(H, H) = fR(L, L) = fR(D, D) = 1,
Nếu biểu diễn quan hệ trên dưới dạng tập con mờ ta có:
R(U) ={0,9/(H, L), 0,9/(L, H), 0,1/(L, D), 0,1/(D, L), 0,3/(H, D), 0,5/(D, H), 1,0/(H, H), 1,0/(L, L),
1,0/(D, D)}
Mở rộng định nghĩa quan hệ mờ trên nhiều tập tham chiếu U1, U2,…, Uk như sau:
Định nghĩa 6.10: Một quan hệ mờ k ngôi R trên k tập tham chiếu U1, U2, …,Uk, ký hiệu là
R(U), là một tập con mờ của tích Đề các U = U1 U2 … Uk với hàm thuộc:
fR: U1 U2 … Uk  [0, 1]
Trong định nghĩa trên, khi các tập tham chiếu U1= U2 =…= Uk = U thì ta có quan hệ mờ k
ngôi trên U, đó là tập con mờ của tích Đề các U  U  … U (ký hiệu là Un), xác định bởi hàm
thuộc fR: Un  [0, 1]. Các quan hệ k ngôi R thường cũng gọi là quan hệ R. Các quan hệ mờ 2
ngôi trên U là trường hợp đơn giản nhất của định nghĩa này, với U1 = U2 = U.

6.3.2. Hợp thành của các quan hệ mờ

Với các quan hệ cổ điển trên ba tập tham chiếu X, Y, Z, nếu có một quan hệ giữa X và Y,
và một quan hệ giữa Y và Z sẽ cho phép xác định một quan hệ giữa X và Z, quan hệ thứ ba gọi là
hợp thành của hai quan hệ ban đầu. Với các quan hệ mờ cũng vậy, ta có thể xây dụng một quan
hệ mờ là hợp thành của hai quan hệ mờ cho trước, khái niệm quan hệ hợp thành mờ là sự mở
rộng của khái niệm quan hệ hợp thành cổ điển. Chẳng hạn, ta có quan hệ mờ R: chiều rộng của
sản phẩm là nhỏ hơn nhiều so với chiều dài. Quan hệ này xác định một lớp không chính xác các
chiều rộng và chiều dài của các sản phẩm, mà chiều rộng nhỏ hơn nhiều so với chiều dài. Đây là
một quan hệ mờ hai ngôi trên tập XY các cặp số thực là chiều rộng, chiều dài của các sản phẩm
trong vũ trụ tham chiếu. Giả sử ta cũng có quan hệ mờ S: chiều dài của sản phẩm là nhỏ hơn
chiều cao, đây cũng là một quan hệ mờ hai ngôi xác định trên tập YZ các cặp số thực là chiều
dài và chiều cao của các sản phẩm trong vũ trụ tham chiếu đang xét. Như vậy, nếu kết hợp hai
quan hệ mờ này, ta sẽ được một quan hệ mờ giữa các chiều rộng và chiều cao của sản phẩm.
Phép kết hợp đó gọi là phép hợp thành của hai quan hệ R và S.
Định nghĩa 6.11: Hợp thành của quan hệ mờ hai ngôi R trên X  Y với hàm thuộc fR(x, y)
và quan hệ S trên Y  Z với hàm thuộc fS(y, z) là một quan hệ mờ trên X  Z, ký hiệu là R o S (hoặc
đơn giản là RS) và có hàm thuộc được xác định như sau:
(x,z) X  Z, fRoS(x, z) = supy Y {min[fR(x, y); fS(y, z)]} (6.1)
Một số trường hợp đặc biệt:
- Nếu X, Y, Z là các tập hữu hạn, hàm thuộc của quan hệ hợp thành được xác định như sau:
(x,z) X  Z, fRoS(x, z) = maxy Y {min[fR(x, y); fS(y, z)]} (6.2)

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 121


- Nếu X = Y = Z, tức là R và S đều là các quan hệ hai ngôi trên X, với X là tập hữu hạn, thì
hàm thuộc của quan hệ hợp thành RoS được xác định như sau:
 x, y, z  X, fRoS(x, z) = maxy X {min[fR(x, y); fS(y, z)]} (6.3)
- Nếu R và S là cùng một quan hệ hai ngôi trên X, với X là tập hữu hạn, thì hàm thuộc của
quan hệ hợp thành RoS được xác định đơn giản hơn:
x, y, z  X, fRoR (x, z) = maxy X {min[fR(x, y); fR(y, z)]} (6.4)
Nếu quan hệ mờ R có ma trận là M(R), quan hệ S có ma trận là M(S) thì ma trận của quan
hệ hợp thành RoS được ký hiệu và xác định như sau:
M(RoS) = M(R)M(S) (6.5)
trong đó phép  xác định các phần tử của ma trận quan hệ hợp thành theo công thức (6.1) hoặc
(6.2).
Chú ý: Về hình thức, phép nhân  cho hai ma trận quan hệ mờ trong (6.5) cũng được áp
dụng tương tự phép nhân hai ma trận thông thường, chỉ cần thay phép tính cộng các số hạng bởi
phép lấy ‘max’ và phép tính tích 2 phần tử thay bởi phép lấy ‘min’.
Thí dụ 6.5. Cho quan hệ 2 ngôi R trên X  Y và quan hệ S trên Y  Z có các ma trận quan hệ
mờ tương ứng là M(R) và M(S) như sau:
 1 0, 2 0,8   0, 2 1 0, 4 
 
M  R   0, 2 1 0,5 ; M  S    0 0, 6 0,3 
 0,8 0,5 1   0 1 0,3 
Theo công thức (6.2), ta tính được ma trận của quan hệ mờ hợp thành RoS là:
0, 2 1 0, 4 
M  R S   0, 2 0, 6 0,3 
0, 2 1 0, 4 
Nhiều khi người ta cần xác định quan hệ hợp thành của R với chính nó, tức là
tính RoR
Thí dụ 6.6. Xét quan hệ mờ hai ngôi R của thí dụ 6.4 (Bảng 6.1)
R H L D

H 1 0,9 0,3

L 0,9 1 0,1

D 0,5 0,1 1

Ma trận của quan hệ R là:


 1 0,9 0,3
M  R   0,9 1 0,1 
 0,5 0,1 1 
Theo công thức (6.4), ta tính được ma trận của quan hệ hợp thành RoR
 1 0,9 0,3
M  R R   0,9 1 0,3
 0,5 0,5 1 

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 122


Quan hệ R trên đây là mức độ tin cậy của đối tượng này trực tiếp với đối tượng khác, còn
quan hệ RoR có thể được hiểu là mức độ tin cậy của đối tượng này với đối tượng kia, thông qua
một đối tượng trung gian.
Chẳng hạn, trong R thì mức độ tin cậy của D đối với L là 0,1, nhưng trong quan hệ RoR thì
mức độ tin cậy của D với L, được tính theo công thức (6.4):
fRoR (D,L) = max{min[fR(D,H); fR(H,L)], min[fR(D,L); fR(L,L)], min[fR(D,D); fR(D,L)]}
= max{min[0,5; 0,9], min[0,1; 1)], min[0,3; 0,1]} = 0,5,
Như vậy, mức độ tin cậy của D đối với L thông qua các trung gian khác là 0,5, lớn hơn so
với mức liên hệ trực tiếp là 0,1.
6.3.3. Một số tính chất của các quan hệ mờ
Với các quan hệ R hai ngôi cổ điển (rõ), chúng ta quan tâm đến các tính chất sau:

- Quan hệ R có tính phản xạ nếu: aRa, a  X


- Quan hệ R có tính đối xứng nếu: aRb  bRa
- Quan hệ R có tính bắc cầu nếu: (aRb và bRc)  aRc
Cũng giống như các quan hệ cổ điển, người ta quan tâm đến một số tính chất đặc biệt của
các quan hệ mờ hai ngôi. Những tính chất dưới đây là sự mở rộng của các tính chất tương ứng
trong các quan hệ cổ điển.
Định nghĩa 6.12: Một quan hệ mờ hai ngôi R trên U được gọi là:
Phản xạ nếu: x  U, fR(x,x) = 1
Đối xứng nếu: (x,y)  U  U, fR(x,y) = fR(y,x)
Bắc cầu max-min nếu: x, y, z  U, fR(x, z) ≥ maxy U{min[fR(x, y); fR(y, z)]}
Định nghĩa 6.13: Quan hệ mờ hai ngôi S trên U được gọi là quan hệ tương tự nếu S là
quan hệ phản xạ, đối xứng và bắc cầu max-min.
Quan hệ tương tự (Similarity Relation) là sự mở rộng của quan hệ tương đương cổ điển, có
vai trò rất lớn trong việc xây dựng mô hình CSDL quan hệ mờ. Trong các phần còn lại của giáo
trình này, tính bắc cầu max-min của quan hệ mờ cũng được gọi ngắn gọn là tính bắc cầu.
Thí dụ 6.7. Xét quan hệ mờ R trên tập 3 sinh viên U = {H, L, D} trong thí dụ 6.6.
Dễ thấy R là phản xạ, nhưng không là đối xứng vì ta có:
fR(H, D) = 0,3  fR(D, H) = 0,5.
Hơn nữa quan hệ này cũng không bắc cầu (max-min). Thật vậy, ta có fR(D, L) = 0,1, như
vậy:
fR(D, L) < max{ min[fR(D, H), fR(H, L)]; min[fR(D, L), fR(L, L)]; min[fR(D, D), fR(D, L)]}
= max{min[0,5 ; 0,9]; min[0,1 ; 1,0]; min[1,0 ; 0,1] } = max{0,5 ; 0,1 ; 0,1}
= 0,5. Điều này không thỏa tính bắc cầu max-min.
Do đó S không phải quan hệ tương tự trên miền U.
Chú ý 6.3.3
(1) Nếu quan hệ R được biểu diễn bằng ma trận quan hệ mờ M(R), thì quan hệ sẽ là phản
xạ nếu ma trận M(R) là có các phần tử trên đường chéo chính đều bằng 1 (các ii = 1); quan hệ R

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 123


là đối xứng nếu ma trận M(R) là đối xứng (các phần tử đối xứng qua đường chéo chính thì bằng
nhau: ij = ji)
(2) Để kiểm tra tính bắc cầu max-min của quan hệ R, ta tính ma trận của quan hệ hợp thành
RoR, nếu mọi phần tử của M(R) đều không nhỏ hơn phần tử tương ứng của M(RoR) thì quan hệ
R là bắc cầu max-min. Nói chung khi M(R) = M(RoR) thì R là có tính bắc cầu mắc-min, còn khi
M(RoR)  M(R) thì phải kiểm tra kỹ hơn với mọi phần tử tương ứng ở hai ma trận.
(3) Để cho gọn, có thể ký hiệu hàm thuộc của quan hệ mờ R là:
R(x, y),  (x,z)U  U.
Thí dụ 6.8.Trở lại quan hệ R trong thí dụ 6.7, ta sẽ kiểm tra tính bắc cầu bằng phương pháp
tính ma trận của quan hệ hợp thành RoR. Quan hệ R có ma trận quan hệ mờ là:
 1 0,9 0,3
M  R    0,9 1 0,1 , mặt khác có thể tính được:
 0,5 0,1 1 

 1 0,9 0,3
M  R R   0,9 1 0,3  M  R  .
 0,5 0,5 1 
Do M(RoR) có phần tử ở hàng 3 cột 2 lớn hơn phần tử tương ứng trong M(R), vậy R không
phải là quan hệ bắc cầu.
Ngoài ra, dễ thấy quan hệ R là phản xạ do các phần tử trên đường chéo đều bằng 1 và R
không phải quan hệ đối xứng vì ma trận của quan hệ R không phải ma trận đối xứng. Rõ ràng là
R không phải quan hệ tương tự.
Thí dụ 6.9. Cho miền trị D gồm các giá trị D = {a, b, c, d}, ta xác định một quan hệ S trên
D như sau:
Bảng 6.2. Quan hệ S trên miền trị D

S a b c d
a 1 0,8 0 0
b 0,8 1 0 0
c 0 0 1 0,7
d 0 0 0,7 1

Ta kiểm tra các tính chất trong định nghĩa 6.12 với quan hệ S:
(1) Với a, b, c, d  D, ta có S(a, a) = S(b, b) = S(c, c) = S(d, d) = 1, vậy S là phản xạ.
(2) Với mọi cặp x, y trong D, ta đều có S(x, y) = S(y, x), chẳng hạn S(a, b) = S(b, a) = 0,8,
S(c, d) = S(d, c) = 0,7… vậy tính chất đối xứng thỏa mãn, do đó S là quan hệ
đối xứng.
(3) Để kiểm tra tính bắc cầu max-min, ta cần kiểm tra điều kiện (3) trong định nghĩa quan
hệ tương tự phải thỏa mãn với mọi bộ 3 giá trị a, b, c  D. Theo chú ý 6.3.3, có thể thực hiện
việc kiểm tra này bằng việc tính ma trận M(SoS).
Do M(SoS) = M(S) nên theo chú ý 6.3.3, S là một quan hệ bắc cầu max-min. Do S có cả 3
tính chất phản xạ, đối xứng và bắc cầu max-min nên S là một quan hệ tương tự trên D.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 124


 1 0,8 0 0   1 0,8 0 0 
0,8 1 0  
0  0,8 1 0 0 
M  SoS    
 0 0 1 0, 7   0 0 1 0, 7 
   
 0 0 0, 7 1   0 0 0, 7 1 
 1 0,8 0 0 
0,8 1 0 0 
   M S 
 0 0 1 0, 7 
 
 0 0 0, 7 1 
Thí dụ 6.10. Cho miền trị C (Color) gồm các màu Blue, Green và Red, C = {B, G, R}, ta có
một quan hệ mờ hai ngôi S trên C chỉ mức độ giống nhau giữa các màu như sau:
Bảng 6.3. Quan hệ S trên miền trị C

S B G R
Blue (B) 1 0,7 0
Green (G) 0,7 1 0
Red (R) 0 0 1

Từ ma trận quan hệ mờ M(S), ta thấy ngay rằng S là quan hệ phản xạ, đối xứng. Ta tính
được ma trận quan hệ hợp thành của S với chính nó là:

 1 0, 7 0   1 0, 7 0   1 0, 7 0 
M  SoS   0, 7 1 0   0, 7 1 0   0, 7 1 0   M  S  .
 0 0 1   0 0 1   0 0 1 
Vậy S là quan hệ bắc cầu max-min. Do 3 tính chất trên, S là quan hệ tương tự
trên C.

6.3.4. Quan hệ mức  liên kết với quan hệ mờ


Ta đã biết rằng, về bản chất, một quan hệ mờ hai ngôi trên U là một tập con mờ của tích
Đề các U × U. Như vậy, tất cả những tính chất và định nghĩa liên quan đến tập con mờ đều có
thể áp dụng được cho các quan hệ mờ. Chẳng hạn, có thể định nghĩa chiều cao, giá đỡ, hạt nhân
và nhát cắt mức  của một quan hệ mờ tương tự như với các tập con mờ, trong đó nhát cắt mức
 của một quan hệ mờ là một khái niệm quan trọng và có nhiều ứng dụng trong việc phân tích và
xử lý dữ liệu.
Cho quan hệ mờ hai ngôi R trên U với hàm thuộc fR: U×U [0, 1]. Quan hệ mờ R là một
tập con mờ của tích Đề các U ×U. Nhát cắt mức  của tập con mờ này sẽ cho ta tất cả những cặp
(x, y)  U × U mà fR(x, y)  , như vậy nhát cắt mức  này sẽ xác định một tập con “rõ” của tích
Đề các U × U, tức là xác định một quan hệ “rõ” hai ngôi trên U, gọi là quan hệ mức  liên kết
với quan hệ mờ R. Ta có định nghĩa:
Định nghĩa 6.14: Cho quan hệ mờ R trên U với hàm thuộc fR: U×U [0, 1], và một
ngưỡng   [0, 1]. Quan hệ mức  liên kết với quan hệ R là một quan hệ được ký hiệu và được
xác định như sau:
R(U) = {(x, y) U×U | fR(x, y)  }

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 125


Như vậy, với mỗi quan hệ mờ R trên U, sẽ có nhiều quan hệ R với các mức  khác nhau
liên kết với R, và đều là các quan hệ ‘rõ’ trên U.
Thí dụ 6.11. Xét quan hệ mờ hai ngôi R trên U = {H, L, D}, đã cho trong bảng 6.1:
R H L D
H 1 0,9 0,3
L 0,9 1 0,1
D 0,5 0,1 1

Với mức  = 0,9, ta có quan hệ R0.9 gồm các cặp sau: (H, H), (H, L), (L, H), (L, L), (D,
D), những cặp khác coi như không có liên hệ với nhau (vì mức độ quan hệ dưới ngưỡng cho
trước). Như vậy, các cặp thỏa quan hệ R0,9 là:
R0,9(U) = {(H, H), (H, L), (L, H), (L, L), (D, D)}
Đây là một quan hệ hoàn toàn ‘rõ’ trên U, cũng có biểu diễn quan hệ R0,9 dưới dạng bảng:
R0,9 H L D
H 1 1 0
L 1 1 0
D 0 0 1

hoặc cho bởi ma trận quan hệ:


1 1 0 
M  R0,9   1 1 0 
0 0 1 
Tương tự, quan hệ mức  = 0,5 gồm các cặp:
R0,5(U) = {(H, H), (H, L), (L, H), (L, L), (D, H), (D, D)}, và có ma trận là:
1 1 0 
M  R0,5   1 1 0  ;
1 0 1 
ma trận của các quan hệ mức  = 0,3 gồm các cặp:
R0,3(U) = {(H, H), (H, L), (H, D), (L, H), (L, L), (D, H), (D, D)},
và có ma trận là:
1 1 1 
M  R0,3   1 1 0  .
1 0 1 
Định lý sau cho sự liên hệ giữa một quan hệ mờ và các quan hệ mức  liên kết với nó.
Định lý 6.1. Cho quan hệ mờ R trên U, ký hiệu R là quan hệ mức  liên kết với R, khi đó
ta có:
- R là quan hệ mờ phản xạ khi và chỉ khi quan hệ R là phản xạ,   [0, 1]
- R là quan hệ mờ đối xứng khi và chỉ khi quan hệ R là đối xứng,   [0, 1]
- R là quan hệ mờ bắc cầu max-min khi và chỉ khi quan hệ R là bắc cầu,   [0, 1]

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 126


Việc chứng minh định lý trên là khá dễ dàng, sinh viên có thể tự chứng minh hoặc tham
khảo trong [11].

6.3.5. Phân cụm theo quan hệ mờ


Khi quan hệ mờ S là quan hệ tương tự thì S sẽ có cả 3 tính chất: phản xạ, đối xứng và bắc
cầu max-min, do đó theo định lý 6.1 ta suy ra mọi quan hệ mức  của quan hệ tương tự S cũng
là quan hệ (rõ) phản xạ, đối xứng và bắc cầu. Vậy ta có bổ đề sau:
Bổ đề 6.1. Nếu S là một quan hệ tương tự trên U, thì với mọi mức   [0, 1], mọi quan hệ
mức  của quan hệ S là quan hệ tương đương trên U.
Việc chứng minh bổ đề trên được suy ra trực tiếp từ định lý 6.1.
Bổ đề trên khẳng định rằng mỗi quan hệ S là một quan hệ tương đương trên U, mà mọi
quan hệ tương đương trên U đều cho phép phân hoạch U thành các lớp tương đương, tức là
người ta nhóm những phần tử thỏa mãn một quan hệ tương đương thành một cụm, tất cả những
phần tử trong cùng một cụm là tương đương với nhau theo quan hệ tương đương này
Vì vậy, mỗi quan hệ tương tự S có thể cho phép phân cụm tập nền U thành các cụm theo
nhiều mức  khác nhau, điều này là rất quan trọng trong việc xử lý thông tin, thu nhận tri thức từ
dữ liệu thực tế.
Với  = 0, tất cả các phần tử của U đều coi là tương đương nhau, ta không thể phân biệt
được các phần tử này, tất cả các phần tử trong U thuộc về 1 lớp, tức là ta không thể phân cụm
được U.
Nếu ta tăng dần mức , tức là tăng yêu cầu về mức độ tương tự giữa các phần tử, U sẽ có sự
phân lớp rõ ràng hơn, và mức  càng cao thì càng có ít phần tử trong cùng một lớp thỏa mãn
quan hệ R, tức là mức  càng cao thì U càng được phân thành nhiều lớp, tức là  càng cao thì U
càng được phân lớp “mịn” hơn, và các lớp ở mức cao hơn sẽ bị bao hàm trong các lớp ở mức
thấp hơn.
Đối với quan hệ tương tự S trên miền U, mỗi quan hệ S là một quan hệ tương đương trên
U. Do đó, có nhiều cách phân cụm miền U, mỗi cách phân cụm là một phân hoạch của miền U
theo mỗi quan hệ tương đương S với các mức  khác nhau. Ta sẽ xét một số thí dụ cụ thể sau
đây.
Thí dụ 6.12. Cho S là một quan hệ mờ trên miền trị C gồm các màu Blue, Green và Red, C
= {B, G, R}. Trong thí dụ 6.10 ta đã chứng minh S là quan hệ tương tự.
Bảng 6.4. Quan hệ tương tự S trên miền trị C
S B G R
Blue (B) 1 0,7 0
Green (G) 0,7 1 0
Red (R) 0 0 1

Với mức  = 0,7: quan hệ S0.7 là một qua hệ tuong đương, có ma trận cho trong hình dưới đây.
Bảng 6.5. Quan hệ S0,7 trên miền trị C
S0,7 B G R
Blue (B) 1 1 0
Green (G) 1 1 0
Red (R) 0 0 1

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 127


Đây là một quan hệ tương đương (rõ). Các lớp tương đương theo quan hệ S0.7 là: {B, G}và
{R}, tức là ta có thể coi màu Xanh nước biển (Blue) và màu Xanh lá cây (Green) là thuộc cùng
một lớp, với mức độ tương tự là 0,7), còn lớp kia là màu Đỏ (Red). Các tập {B, G}và {R} là một
cách phân cụm của tập C theo mức  = 0,7.
Với mức  = 1,0: ma trận của quan hệ S1,0 là
Bảng 6.6. Quan hệ S1.0 trên miền trị C
S1,0 B G R
Blue (B) 1 0 0
Green (G) 0 1 0
Red (R) 0 0 1

Mỗi màu chỉ tương đương với chính nó, mỗi lớp tương đương chỉ gồm một màu, các tập
{B}, {G} và {R} là một cách phân cụm của tập C.
Với mức  = 0: tất cả các màu đều coi là tương đương với nhau (với mức độ bằng 0), tất cả
các giá trị trong ma trận đều bằng 1. Tất cả tập C là thuộc cùng một lớp tương đương, tức là
không thể phân cụm được tập C.
Thí dụ 6.13. Cho tập nền tham chiếu U = {a, b, c, d} và một quan hệ mờ R hai ngôi trên U
với hàm thuộc cho bởi bảng sau:
Bảng 6.7. Quan hệ R trên miền trị U
R a b c d
a 1 0,3 0,9 0,5
b 0,3 1 0,3 0,3
c 0,9 0,3 1 0,5
d 0,5 0,3 0,5 1

Từ ma trận quan hệ mờ M(R), dễ nhận thấy quan hệ R là phản xạ và đối xứng. Để kiểm tra
tính bắc cầu max-min, ta tính ma trận của quan hệ hợp thành M(RoR):
 1 0,3 0,9 0,5  1 0,3 0,9 0,5
 0,3 1 0,3 0,3  0,3 1 0,3 0,3
M  RoR    
0,9 0,3 1 0,5 0,9 0,3 1 0,5
   
 0,5 0,3 0,5 1  0,5 0,3 0,5 1 
 1 0,3 0,9 0,5
 0,3 1 0,3 0,3
   M R 
0,9 0,3 1 0,5
 
 0,5 0,3 0,5 1 
Như vậy, R là bắc cầu max-min. Quan hệ mờ R là quan hệ tương tự trên U.
Ta có thể tính các quan hệ R với các mức  khác nhau.
Với  = 0.3 (mức tương tự nhỏ nhất giữa các phần tử) thì tất cả các cặp phần tử đều có
quan hệ với nhau với mức độ lớn hơn hoặc bằng mức này, tức là  x, y  U thì xR0,3 y, vậy ta
có:

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 128


1 1 1 1
1 1 1 1
M  R 0,3   
1 1 1 1
 
1 1 1 1
R0,3 xác định một lớp tương đương trên U, đó là {a, b, c, d}, gọi là một phân hoạch của U
ứng với R0,3.
Với  = 0.,5, ta có:
1 0 1 1
0 1 0 0 
M  R 0,5   
1 0 1 1
 
1 0 1 1
Quan hệ R0,5 xác định một phân hoạch của U gồm 2 lớp tương đương là {a, c, d} và {b}
Với  = 0,9, ta có:
1 0 1 0
0 1 0 0 
M  R 0,9   
1 0 1 0
 
0 0 0 1
Quan hệ R0,9 chia U thành 3 lớp tương đương là {a, c}, {d} và {b}, là một phân hoạch của
U.
Cuối cùng, nếu lấy mức  = 1, thì mọi phần tử chỉ có quan hệ với chính nó, ma trận quan
hệ là:
1 0 0 0
0 1 0 0 
M  R 1,0   
0 0 1 0
 
0 0 0 1
Quan hệ R1,0 chia U thành 4 lớp tương đương là {a}, {c}, {d} và {b}.
Như vậy, với mỗi mức , các quan hệ R sẽ xác định một phân hoạch của U, các phân
hoạch này được gọi là các phân hoạch liên kết với quan hệ tương tự R, có thể biểu diễn bằng
“cây phân hoạch” như sau:

Hình 6.4. Cây phân hoạch liên kết với quan hệ tương tự R

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 129


Từ cây phân hoạch trên, có thể thấy rằng với ngưỡng  càng cao thì phân hoạch của U
càng “mịn”. Chẳng hạn, với  = 0,3 thì ta không thể phân hoạch được U thành các lớp nhỏ hơn,
với  = 0,5 thì U được phân hoạch thành 2 lớp, một lớp là {a, c, d}, lớp còn lại là {b}, với  =
0,9 thì lớp {a, c, d} lại được phân hoạch mịn hơn thành {a, c} và {d}, tức là U được phân hoạch
thành {a, c}, {d} và {b}, khi  = 1,0 thì U phân hoạch thành các cụm {a}, {c}, {d}và{b}, là
phân hoạch mịn nhất.
Chú ý: Nếu quan hệ mờ S không phải quan hệ tương tự, nhưng các quan hệ liên kết S vẫn
có thể là quan hệ tương đương với  nào đó, và ta vẫn có thể phân cụm U theo mức  này. Xét
thí dụ sau:
Thí dụ 6.14. Cho quan hệ mờ S trên miền trị U = {a, b, c } như sau:
S a b c
a 1 0,5 0,3
b 0,5 1 0,6
c 0,3 0,6 1

Dễ thấy quan hệ này là phản xạ và đối xứng, tuy nhiên không có tính bắc cầu max-min nên
S không phải quan hệ tương tự.
1 0 0 
Với  = 0,6, quan hệ S0,6 có ma trận quan hệ là: M  S0,6   0 1 1 
0 1 1 
Rõ ràng S0,6 là quan hệ tương đương, có thể phân hoạch tập U theo quan hệ này. Do đó có
thể phân cụm miền U theo mức  = 0,6, đó là các cụm: {a} và {b, c}.

6.4. CÁC MÔ HÌNH CƠ SỞ DỮ LIỆU MỜ


Trước hết, chúng ta đưa ra một số quy ước về ký pháp:
- Một lược đồ quan hệ R xác định trên tập thuộc tính ={A1, A2,…, An}, có thể ký hiệu
R(A1, A2,…, An), hay R ={A1, A2,…, An}.
- Một quan hệ r trên lược đồ R, được ký hiệu là r(R), còn gọi là một thể hiện của lược đồ
quan hệ R. Quan hệ r có thể là rõ hay mờ, được biểu diễn bằng một bảng, với các hàng là các bộ,
các cột là giá trị của các thuộc tính đối với mỗi bộ.

6.4.1. Mô hình CSDL quan hệ mờ dựa trên tập con mờ


Mô hình này được đề xuất bởi Baldwin và Zhou vào năm 1984, Zvieli đưa ra năm 1986.
Cách tiếp cận này không mở rộng miền trị của thuộc tính mà mở rộng ngữ nghĩa của dữ liệu rõ,
xem mỗi quan hệ như một tập con mờ của tích Đề các của các miền trị thuộc tính.
Cho lược đồ quan hệ R xác định trên tập thuộc tính  = {A1, A2, …, An}, với miền trị của
thuộc tính Ai là Di = Dom(Ai), i = 1, 2,…, n. Khi đó một quan hệ (rõ) r trên lược đồ R là tập con
của tích Đề các D1  D2 … Dn, hay có thể viết:
r  D1  D2 … Dn
Mỗi bộ của R có dạng: t = (a1, a2, …,an), với ai  Di.
Trong mô hình CSDL quan hệ dựa trên tập con mờ, mỗi quan hệ mờ r trên lược đồ R là
một tập con mờ của tích Đề các D1  D2 … Dn, được xác định bởi hàm thuộc:

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 130


R: D1  D2 … Dn  [0, 1]
như vậy với mỗi bộ t = (a1, a2, …,an)  D1  D2 … Dn ta xác định được giá trị của hàm thuộc
R(a1, a2, …,an)  [0, 1], chỉ mức độ mà bộ này thuộc về quan hệ mờ r.
Về hình thức, việc biểu diễn một quan hệ trong mô hình này giống như trong mô hình quan
hệ kinh điển, nhưng thêm vào cột , để lưu độ thuộc của mỗi bộ vào quan hệ.
Như vậy, mỗi bộ của một quan hệ trong mô hình dựa trên tập con mờ có dạng:
t = (a1, a2,…, ai,…, an, )
với ai là giá trị các thuộc tính Ai, tức là ai  Dom(Ai), và  = (a1, a2,…, ai,…, an),   [0, 1], là
độ thuộc của bộ t vào quan hệ r. Như vậy, với mô hình này thì tính mờ thể hiện ở mức độ thuộc
của mỗi bộ vào quan hệ, trong khi các giá trị của các thuộc tính là không mờ.
Thí dụ 6.15. Cho một quan hệ mờ biểu diễn các nhân viên có tuổi trẻ và lương
khá cao:
Quan hệ mờ: NV_TRE_LCAO (#NV, TEN, TUOI, LUONG, )
Bảng 6.7. Một quan hệ mờ dựa trên mô hình tập con mờ
STT #NV TEN TUOI LUONG 
t1 10 Hùng 45 4.000.000 0.4
t2 15 Nam 30 6.400.000 1.0
t3 20 Sơn 26 5.600.000 0.9
t4 05 Linh 47 2.600.000 0.2
t5 25 Bắc 55 1.500.000 0

Với quan hệ này, giá trị của các thuộc tính là rõ, nhưng với mỗi bộ có thêm giá trị chỉ mức
độ mà bộ đó thuộc về quan hệ mờ đang xét. Loại quan hệ này có thể nhận được từ một quan hệ
thông thường, trên đó các bộ cần thỏa một điều kiện mờ nào đó (chẳng hạn: trẻ và có lương khá
cao).

6.4.2. Mô hình CSDL quan hệ mờ dựa trên dựa trên lý thuyết khả năng
Mô hình này đề xuất bởi Prade và Testermale vào năm 1983 để mở rộng mô hình CSDL
quan hệ kinh điển, theo hướng mở rộng miền trị thuộc tính bằng cách cho phép các thuộc tính
nhận giá trị là các phân bố khả năng thay vì các giá trị thuộc tính đơn. Như vậy, mỗi giá trị của
một thuộc tính có thể là một tập con mờ tương ứng với một phân bố khả năng.
Trong mô hình này, một quan hệ mờ R là một tập con của tích Đề các D1  D2 …
Dn, trong đó:
Di = { | với  là một phân bố khả năng của Ai trên Di}
Như vậy, mỗi bộ của một quan hệ trong mô hình này có dạng:
t = <A1, A2,…, Ai,…, An>
với Ai là phân bố khả năng của thuộc tính Ai trên miền trị Di của nó, phân bố khả năng này
được xác định bởi Di. Có thể hiểu Ai là một tập con mờ trên Di xác định bởi hàm thuộc Ai: Di
 [0, 1], x  Di. Như vậy Ai(x) là khả năng x là giá trị thực sự của t[Ai]).
Đây là hướng mở rộng tổng quát hơn mô hình trên, tuy nhiên cũng đối mặt với khó khăn là
việc biểu diễn dữ liệu khá phức tạp. Dưới đây trình bày một thí dụ đơn giản về một CSDL mờ
dựa trên lý thuyết khả năng.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 131


Thí dụ 6.16. Cho một quan hệ mờ trên lược đồ Mon_Hoc(MaMH, TenMH, Tinchi,
Hocky), các thuộc tính MaMH, TenMH là các giá trị chính xác. Thuộc tính ‘Tinchi’ có giá trị là
các phân bố khả năng trên miền trị Dom(Tinchi) = {1, 2, 3, 4, 5, 6}, thuộc tính ‘Hocky’có giá trị
là các phân bố khả năng trên miền trị Dom(Hocky) = {1, 2, 3, 4, 5, 6, 7, 8}, quan hệ mờ này có
thể được biểu diễn như sau:
Quan hệ: Mon_Hoc(MaMH, TenMH, Tinchi, Hocky)
Bảng 6.8. Một quan hệ mờ dựa trên phân bố khả năng
Mon_Hoc(MaMH, TenMH, Tinchi, Hocky)
STT MaMH TenMH Tinchi Hocky
t1 001 Tiếng Anh cơ bản {0,4/2; 0,7/3; 0,3/4} {0,9/1; 0,8/2; 0,5/3}
t2 005 Pascal cơ bản {0,7/3; 0,8/4; 0,9/6} {0,4/2; 0,7/3; 0,8/4}
t3 010 Chính trị {1,0/1; 0,9/2; 0,8/3 } {0,2/1; 0,6/2; 0,9/3}
t4 012 Java {0,6/3; 0,75/4; 0,85/5} {0,5/5; 0,7/6; 0,9/7; 0,2/8}
t5 006 Toán cao cấp { 0,6/3; 0,95/4; 0,5/5 } {0,9/1; 0,8/2; 0,7/3}

Với quan hệ này, mỗi bộ t đều chứa cả giá trị rõ và giá trị mờ. Chẳng hạn, với bộ t4, ta có
t4[MaMH] = 012 và t4[TenMH] = ‘Java’ là các giá trị rõ, nhưng t4[Tinchi] = {0.6/3, 0.75/4,
0.85/5} là một tập mờ trên miền trị Dom(Tinchi) = {1, 2, 3, 4, 5, 6}, tập mờ này là một phân bố
khả năng của số tín chỉ đối với môn học Java, trên miền {1, 2, 3, 4, 5, 6}. Với t4[Hocky] cũng có
nhận xét tương tự, tức là t4[Hocky] là tập mờ {0.5/5, 0.7/6, 0.9/7, 0.2/8} cũng là một phân bố khả
năng trên miền Dom(Hocky) = {1, 2, 3, 4, 5, 6, 7, 8}.

6.4.3. Mô hình CSDL mờ dựa trên quan hệ tương tự


Mô hình này được Buckles và Petry đề xuất năm 1982, nhằm mở rộng mô hình CSDL
quan hệ theo hướng mở rộng miền trị thuộc tính, để cho phép biểu diễn những dữ liệu không
chính xác.
Xét lược đồ quan hệ R xác định trên tập thuộc tính U ={A1, A2,…, An}, với miền trị của
thuộc tính Ai là Di. Trên mỗi miền trị Di được xác định một quan hệ tương tự SDi để làm cơ sở
đánh giá độ “tương tự nhau” giữa các giá trị trong cùng một miền trị. Trong mô hình dựa trên
quan hệ tương tự, giá trị của mỗi bộ tại một thuộc tính Ai có thể là đa trị (một tập con các giá trị
của miền trị Di) nhưng có một ràng buộc là các giá trị của mỗi bộ tại một thuộc tính Ai đòi hỏi
phải “đủ tương tự nhau” theo quan hệ tương tự trên miền trị Di, hay nói cách khác là độ tương tự
của hai giá trị bất kỳ của mỗi bộ tại một thuộc tính không nhỏ hơn một ngưỡng cho trước, ít nhất
là phải lớn hơn 0. Với mô hình này, các quan hệ mờ đã được mở rộng miền trị của các thuộc
tính, theo đó, mỗi miền trị của thuộc tính Ai là một tập con của tập Di. Như vậy, mỗi quan hệ mờ
của mô hình CSDL quan hệ mở rộng theo hướng này là một một tập con mờ của tích Đề các các
tập lũy thừa của Di:
R  2D1  2D2 … 2Dn
Như vậy, mỗi bộ của quan hệ mờ trong mô hình dựa trên quan hệ tương tự
có dạng:
t = (p1, p2, …, pi, …, pn)
với pi  Di, trong đó Di là miền trị của thuộc tính Ai, trên mỗi Di có một quan hệ tương tự SDi
Như vậy, với mô hình CSDL quan hệ mờ dựa trên quan hệ tương tự thì mỗi giá trị t[Ai]
của bộ t trên thuộc tính Ai là một tập con của Di.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 132


Thí dụ 6.17. Giả sử ta có quan hệ mờ S trên miền trị COLOR = {Blue, Green, Red}, quan
hệ này đã được chứng minh là quan hệ tương tự trong thí dụ 6.10.
- Quan hệ: COLOR(Blue, Green, Red).
Bảng 6.9. Quan hệ tương tự S trên miền trị COLOR
S B G R
Blue (B) 1 0,7 0
Green (G) 0,7 1 0
Red (R) 0 0 1

Ta có thể xây dựng quan hệ mờ về CAR (xe), với các thuộc tính TYPE (kiểu xe), COLOR
(màu sắc) và PRICE (giá), dựa trên quan hệ tương tự của miền trị COLOR.
- Quan hệ: CAR(TYPE, COLOR, PRICE)
Bảng 6.10. Quan hệ mờ CAR (TYPE, COLOR, PRICE)
STT TYPE (Kiểu) COLOR (Màu sắc) PRICE (Giá)
t1 {Xe thể thao} {Blue, Green} {rất cao}
t2 {Xe con} {Red} {vừa phải}
t3 {Xe thể thao} {Red} {cao }
t4 {Xe con} {Blue} {cao }
t5 {Xe con} {Green} {tương đối }

Trong quan hệ này, chỉ có một miền trị của thuộc tính COLOR được mở rộng thực sự:
COLOR = {{Blue, Green}, {Red}, {Blue}}. Tuy nhiên, tất cả các giá trị đơn của các thuộc tính
đều được hiểu là một tập con của mỗi miền trị, chẳng hạn {Red}, {Blue}, {Green} đều là các tập
con của COLOR, còn các tập một phần tử {rất cao}, {cao}… cũng được hiểu là các tập con của
PRICE.
Ngoài ba mô hình trên còn có hai mô hình nữa là cách tiếp cận mở rộng lý thuyết khả năng
và cách tiếp cận phối hợp tất cả 3 cách trên cũng được một số tác giả nghiên cứu như Kerre
(1988), Chen (1991), những mô hình này bạn đọc có thể tìm hiểu trong các tài liệu [1, 3].

6.5. CÁC PHỤ THUỘC DỮ LIỆU TRÊN CƠ SỞ DỮ LIỆU MỜ

Trong các mô hình CSDL quan hệ kinh điển, để xác định các phụ thuộc dữ liệu cần phải so
sánh hai giá trị thuộc tính xem chúng có bằng nhau hay không. Quan hệ đồng nhất i sẽ phản ánh
điều này, ta có i(x, y) = 1 nếu và chỉ nếu x = y, và i(x, y) = 0 trong trường hợp trái lại. Trong các
mô hình quan hệ mờ có sự mở rộng miền trị của các thuộc tính (chẳng hạn mô hình dựa trên
quan hệ tương tự hoặc dựa trên phân bố khả năng), ta sẽ so sánh 2 giá trị thuộc tính bằng cách đo
lường độ gần nhau giữa 2 giá trị này theo quan hệ tương tự hay theo phân bố khả năng được xác
định trên miền trị của thuộc tính đó.
Trong giáo trình này, chúng ta chỉ nghiên cứu một phụ thuộc dữ liệu phổ biến và quan
trọng nhất, đó là các phụ thuộc hàm mờ. Trong những phần dưới đây, chúng ta sẽ trình bày
những vấn đề lý thuyết liên quan đến phụ thuộc hàm, khóa và các dạng chuẩn của CSDL mờ dựa
trên quan hệ tương tự.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 133


Có nhiều cách định nghĩa các phụ thuộc hàm mờ, ở đây chúng ta sử dụng định nghĩa của
Yazici and M.I. Sozat [7] dựa trên quan hệ tương tự. Các vến đề lý thuyết về phụ thuộc hàm mờ,
khóa và các dạng chuẩn mờ trong giáo trình này được xây dựng cho mô hình CSDL mờ dựa trên
quan hệ tương tự (xem chương 6). Đây là mô hình khá tổng quát, là sự mở rộng tự nhiên của mô
hình quan hệ truyền thống, với việc sử dụng một quan hệ tương tự để tổng quát hóa cho quan hệ
đồng nhất.

6.5.1. Sự gần nhau của hai bộ


Chúng ta xem xét một quan hệ mờ r của mô hình CSDL mờ dựa trên quan hệ tương tự.
Mức độ gần nhau giữa 2 bộ được xác định trên một thuộc tính hoặc trên một tập thuộc tính. Đối
với CSDL rõ, hai bộ bất kỳ gọi là bằng nhau trên một thuộc tính, nếu và chỉ nếu các giá trị trên
thuộc tính đó là bằng nhau. Đối với mô hình CSDL mờ (dựa trên quan hệ tương tự), tính chất
bằng nhau của hai giá trị x, y trên miền trị của một thuộc tính được thay thế bởi mức độ tương tự
S(x, y) (sự gần nhau) của hai giá trị đó. Quan hệ tương tự trên một miền trị của một thuộc tính sẽ
xác định mức độ gần nhau của hai bộ đối với thuộc tính đó như thế nào.
Định nghĩa 7.1: Mức độ gần nhau của hai bộ t1 và t2 của quan hệ r đối với thuộc tính Ak
xác định trên miền trị Dk được ký hiệu và xác định như sau:

 
xd1 yd 2  
C  Ak t1 , t2   min min max S  x, y  , min max S  x, y 
xd 2 yd1 
với d1, d2 là tập giá trị của bộ t1, t2 trên miền trị Dk ; S(x, y) là quan hệ tương tự trên miền trị Dk,
do 0 < S(x, y) < 1 nên rõ ràng là 0 < C(Ak[t1, t2]) < 1
Định nghĩa 7.2: Mức độ gần nhau của hai bộ t1 và t2 của quan hệ r đối với tập thuộc tính
X được ký hiệu và xác định như sau:

C  X t1 , t2   min C  Ak t1 , t2 
Ak X

Chú ý 7.1.1.
- Mức độ gần nhau của hai bộ C(X[t1, t2]) là một giá trị trong khoảng [0, 1]. Với CSDL rõ
thì d1 và d2 là các giá trị duy nhất, mức độ gần nhau của hai bộ bất kỳ chỉ có thể là 0 (nếu d1  d2)
hoặc 1 (nếu d1 = d2), đây là các trường hợp riêng theo định nghĩa 7.2. Như vậy khái niệm sự gần
nhau của hai bộ trong CSDL mờ là khái niệm tổng quát hơn khái niệm sự bằng nhau của hai bộ
đối với CSDL rõ.
- Nếu C(Ak[t1, t2])   đối với quan hệ r, khi đó hai bộ t1 và t2 của quan hệ r được gọi là
gần nhau trên thuộc tính Ak (hay trên tập thuộc tính X) với mức . (với  [0, 1])
Thí dụ 7.4. Cho quan hệ mờ VEHICLE (TYPE, COLOR, PRICE) trong hình 7.5, với các
quan hệ tương tự trên miền Color và Price như trong bảng 7.2 và bảng 7.3.
Hãy tính mức độ gần nhau của hai bộ t2 và t5 đối với thuộc tính PRICE và mức độ gần nhau
của 2 bộ này với tập thuộc tính X = {PRICE, COLOR}.
Bảng 7.1. Quan hệ mờ VEHICLE
VEHICLE (TYPE, COLOR, PRICE)
TYPE COLOR PRICE
t1 {sportcar} {blue, green} {very expensive}
t2 {wagon} {red} {modest, affordable}
t3 {bicycle} {green} {very cheap}

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 134


t4 {truck} {blue} {modest, afforadable}
t5 {motorbile} {red} {modest}

Bảng 7.2. Quan hệ tương tự trên miền COLOR


S B G R
Blue (B) 1 0,7 0
Green (G) 0,7 1 0
Red (R) 0 0 1

Bảng 7.3. Quan hệ tương tự trên miền PRICE


PRICE VC C M AF AC E VE
Very Cheap (VC) 1 0,8 0,3 0,3 0,3 0 0
Cheap (C) 0,8 1 0,3 0,3 0,3 0 0
Modest (M) 0,3 0,3 1 0,8 0,7 0 0
Afforadable (AF) 0,3 0,3 0,8 1 0,7 0 0
Afforadable (AF) 0,3 0,3 0,7 0,7 1 0 0
Expensive (E) 0 0 0 0 0 1 0,8
Very Expensive (VE) 0 0 0 0 0 0,8 1

Giải:
(1) Tính mức độ gần nhau của hai bộ t2 và t5 đối với thuộc tính PRICE được xác định theo
công thức ở định nghĩa 7.1 như sau:
- Giá trị của t2 trên miền trị PRICE là: d1 = {modest, affordable} hay d1 = {M, AF}.
- Giá trị của t5 trên miền giá trị PRICE d2 = {modest} hay d2 = {M}.
C(PRICE[t2, t5]) =
= min{min{max{S(M, M)}, max{S(AF, M)}}, min{max{S(M, M), S(M, AF)}}}
= min{min{max{1}; max{0,8}}, min{max{1; 0,8} }
= min{0,8 ; 1,0}= 0,8
(2) Tính mức độ gần nhau của hai bộ t2 và t5 đối với tập thuộc tính X = {PRICE, COLOR}
được xác định theo công thức ở định nghĩa 7.2 như sau:
Ta tính mức độ gần nhau của 2 bộ t2 và t5 đối với từng thuộc tính PRICE và COLOR trong
X:
- Theo kết quả phần (1) ta đã có C(PRICE[t2, t5]) = 0,8
- Ta tính C(COLOR[t2, t5]) theo định nghĩa 7.1:
d1 = {R} là giá trị của bộ t2 trên miền trị COLOR
d2 = {R} là giá trị của bộ t5 trên miền giá trị COLOR
C(COLOR[t2, t5]) = min{min{max{S(R, R)}}, min{max{S(R, R)}}}
= min{min{max{1}}, min{max{1}}}
= min{1, 1} = 1

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 135


(Theo chú ý 7.1.1: do d1 và d2 là các giá trị đơn bằng nhau trên miền trị COLOR, nên độ
gần nhau của chúng là bằng 1, nếu chúng khác nhau thì độ gần nhau là bằng 0, nên có thể suy ra
ngay C(COLOR[t2, t5]) = 1).
Vậy theo định nghĩa 7.2, mức độ gần nhau của 2 bộ t2 và t5 đối với tập thuộc tính X là:
C(X[t2, t5]) = min{C(COLOR[t2, t5]), C(PRICE[t2, t5])}
= min{1; 0,8}
= 0,8

6.5.2. Phụ thuộc hàm mờ


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 một lược đồ quan hệ hoặc trong các lược đồ quan hệ của một 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 thỏa mãn ở mọi thời điểm. Những điều kiện bất biến đó 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.
Các ràng buộc toàn vẹn đóng vai trò quan trọng trong việc thiết kế CSDL. Trong số các
ràng buộc đó, các phụ thuộc dữ liệu được chú ý hơn cả. Một trong những phụ thuộc dữ liệu quan
trọng nhất là phụ thuộc hàm (Functional Dependency-FD). Sự quan trọng của các phụ thuộc hàm
là nó có thể giúp các nhà thiết kế CSDL loại bỏ được hầu hết các dữ liệu dư thừa trong một quan
hệ.
Trong các mô hình CSDL mờ, phụ thuộc hàm mờ (Fuzzy Functional Dependency-FFD)
cũng có vai trò rất quan trọng. Tuy nhiên, định nghĩa phụ thuộc hàm không thể áp dụng trực tiếp
cho các CSDL mờ. Đối với CSDL quan hệ kinh điển, khái niệm phụ thuộc hàm dựa trên sự bằng
nhau của hai bộ trên một tập thuộc tính. Phụ thuộc hàm X  Y nói lên rằng: nếu t[X] = t’[X] thì
suy ra t[Y] = t’[Y] (ký hiệu t[X] là hạn chế của bộ t trên X, tức là tập các giá trị của bộ t đối với
các thuộc tính trong X). Nói cách khác: phụ thuộc hàm (rõ) giữa 2 tập thuộc tính X và Y sẽ có
nghĩa là ”Sự bằng nhau của các bộ trên X sẽ kéo theo sự bằng nhau của các bộ trên Y”.
Nhưng sẽ không có một cách rõ ràng nào để kiểm tra được hai giá trị mờ (có thể là 2 tập
con) là bằng nhau, mà chỉ có thể đánh giá chúng tương tự hay gần nhau đến mức nào. Trong một
mô hình dữ liệu quan hệ mờ, mức độ của “Y phụ thuộc X” có thể không nhất thiết là chắc chắn
(giá trị là 1) như trong trường hợp của CSDL rõ, tất nhiên, một vùng giá trị trên đoạn [0, 1] có
thể được chấp nhận để đo mức độ của sự phụ thuộc này. Vì vậy, bằng cách nào đó phải mở rộng
định nghĩa phụ thuộc hàm cho các mô hình CSDL quan hệ mờ. Trong mô hình CSDL mờ dựa
trên quan hệ tương tự, định nghĩa dưới đây là một khái niệm phụ thuộc hàm mở rộng của khái
niệm phụ thuộc hàm kinh điển cho mô hình CSDL quan hệ mờ, theo đó phụ thuộc hàm mờ giữa
2 tập thuộc tính X và Y sẽ có nghĩa là "Sự gần nhau của các bộ trên X sẽ kéo theo sự gần nhau
của các bộ trên Y”.
Những phụ thuộc hàm mờ (FFD) phản ánh một số kiểu tri thức ngữ nghĩa về những tập
con thuộc tính của thế giới thực. FFD được sử dụng để thiết kế CSDL mờ trong đó dư thừa và
những dị thường khi cập nhật dữ liệu được giảm tới mức thấp nhất.
Định nghĩa 7.3 (định nghĩa phụ thuộc hàm mờ): Cho r là một quan hệ mờ trên lược đồ
quan hệ R(A1, A2, …, An). Gọi U = {A1, A2, …, An } là tập các thuộc tính và X, Y là các tập con

của U. Quan hệ mờ r gọi là thỏa phụ thuộc hàm mờ FFD: X  Y (đọc: X xác định mờ Y với độ
mạnh ) nếu với hai bộ bất kỳ t1 và t2 trong r ta có:

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 136


C(Y[t1, t2])  min {  , C(X[t1, t2])}
Ở đây   [0, 1], là độ mạnh ngữ nghĩa của phụ thuộc hàm, tức là mức độ khẳng định của
các phát biểu của phụ thuộc hàm mờ, nói chung  càng lớn thì các phát biểu của phụ thuộc hàm
càng có ý nghĩa, thường chọn  < C(X[t1, t2], tốt nhất nên chọn  = C(X[t1, t2]). Nếu không quan
tâm đến ngữ nghĩa, ta có bỏ qua độ mạnh trong phụ thuộc hàm mờ.
Nhận xét 7.1.2. Một vài so sánh định nghĩa phụ thuộc hàm mờ với phụ thuộc hàm kinh
điển:
Phụ thuộc hàm (rõ) X   Y thỏa trên quan hệ r: với mọi cặp bộ (t1, t2) của r thì nếu
t1[X] = t2[X] thì suy ra t1[Y] = t2[Y].

Phụ thuộc hàm mờ X  Y thỏa trên quan hệ r: với mọi cặp bộ (t1, t2) của r thì nếu t1[X]
và t2[X] gần nhau với mức  = C(X[t1, t2]), thì suy ra t1[Y] và t2[Y] phải gần nhau với mức >
min(, ).

Tức là: X  Y nếu và chỉ nếu C(Y[t1, t2])  min {  , C(X[t1, t2])}.
Nếu có phụ thuộc hàm (rõ) X 
 Y thỏa trên quan hệ r, thì có thể coi là phụ thuộc hàm
mờ (với độ mạnh bằng 1) X 
 Y thỏa trên r.
1

Thí dụ 7.5 Xét quan hệ mờ VEHICLE 1 cho ở bảng 7.4 dưới đây, với các quan hệ tương tự
trên các thuộc tính COLOR và PRICE đã cho ở hai bảng 7.2 và 7.3.
Bảng 7.4. Quan hệ mờ VIHICLE 1
VIHICLE (TYPE, COLOR, PRICE)
VIHICLE 1 TYPE COLOR PRICE
t1 {sportcar} {blue, green} {very expensive}
t2 {wagon} {red} {modest, affordable}
t3 {motorbile} {green} { modest }

Hãy kiểm tra phụ thuộc hàm mờ COLOR  PRICE có thỏa quan hệ mờ 0,6

này không?
Giải: Quan hệ VIHICLE 1 gọi là thỏa phụ thuộc hàm mờ COLOR  0,6
 PRICE nếu mọi
cặp bộ đều thỏa phụ thuộc hàm này. Theo định nghĩa FFD, ta cần kiểm tra điều kiện: C(Y[t1, t2])
 min {  , C(X[t1, t2])}, với X = {COLOR}, Y = {PRICE},  = 0.6.
- Với hai bộ t1 và t2, ta có:
t1 = <{sportcar}, {blue, green}, {very expensive}>, hay t1 = <{S}, {B, G}, {VE}>.
t2 = <{wagon}, {red}, {modest, affordable}>, hay t2 = <{W}, {R}, {M, AF}>.
Ta tính mức độ gần nhau của 2 bộ t1 và t2 đối với từng thuộc tính COLOR
và PRICE:
- Với thuộc tính COLOR
d1 = {B, G} là giá trị của bộ t1 trên miền giá trị COLOR
d2 = {R} là giá trị của bộ t2 trên miền giá trị COLOR
C(COLOR[t1, t2]) = min {min{max[s(B, R), s(G, R)]}, min{max[s(R, B), s(R, G)]}}
= min{min{max[0, 0]}, min{max[0, 0]}}
=0

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 137


Vậy min{0,6, C(COLOR[t1, t2]) } = min{0,6, 0} = 0
- Với thuộc tính PRICE:
d1 = {VE} là giá trị của bộ t1 trên miền giá trị PRICE
d2 = {M, AF} là giá trị của bộ t2 trên miền giá trị PRICE
C(PRICE[t1, t2]) = min{min{max[s(VE, M), s(VE, AF)]}, min{max[s(M, VE), s(VF,
AF)]}}
= min{min{max[0, 0]}, min{max[0, 0]}}
=0
Vậy C(PRICE[t1, t2]) > min{0,6, C(COLOR[t1, t2])}, theo định nghĩa t1 và t2 thỏa mãn phụ
thuộc hàm COLOR  0,6
 PRICE.
- Với hai bộ t1 và t3:
Tương tự ta tính mức độ gần nhau của 2 bộ t1 và t3 đối với từng thuộc tính PRICE và
COLOR:
C(COLOR[t1, t3]) = 0
C(PRICE[t1, t3]) = 0
Vậy ta cũng có C(PRICE[t1, t3]) > Min{0,6, C(COLOR[t1, t3])}, hay t1 và t3 thỏa mãn phụ
thuộc hàm COLOR  0,6
 PRICE
Với hai bộ t2 và t3
Tương tự ta cũng tính được mức độ gần nhau của 2 bộ t2 và t3 đối với từng thuộc tính
PRICE và COLOR:
C(COLOR[t2, t3]) = 1
C(PRICE[t2, t3]) = 0,8
Vậy ta có C(PRICE[t2, t3]) > Min{0,6, C(COLOR[t2, t3])} = 0,6, do đó t2 và t3 thỏa mãn
phụ thuộc hàm COLOR  0,6
 PRICE
Vậy quan hệ mờ VEHICLE 1 thỏa phụ thuộc hàm COLOR 
0.6
PRICE.
Phụ thuộc hàm mờ trên đây có thể được phát biểu: “Màu sắc ít - nhiều xác định giá của xe”, ‘ít -
nhiều’ ở đây là với mức độ 0.6, tức là màu sắc có tác động chút ít đến giá
của xe.

6.5.3. Quy tắc suy diễn cho các phụ thuộc hàm mờ
Một khái niệm quan trọng có liên quan tới những phụ thuộc dữ liệu là các quy tắc suy diễn.
Cho một quan hệ và một tập phụ thuộc hàm, những quy tắc suy diễn là những phép sinh những
phụ thuộc hàm mới cũng thỏa quan hệ đã cho, và bởi vậy chúng có quan hệ gần gũi với định
nghĩa và ngữ nghĩa của những phụ thuộc hàm. Đối với CSDL quan hệ kinh điển, chúng ta đã biết
hệ tiên đề Armstrong là một tập các quy tắc suy diễn cho các phụ thuộc hàm.
Nhắc lại hệ tiên đề Armstrong và các quy tắc suy diễn:
Hệ tiên đề Armstrong: Cho lược đồ quan hệ R = < U, F >, với U = {A1, A2,..., An} là tập
các thuộc tính
Giả sử X, Y, Z  U; ký hiệu XY thay cho XY, ta có các tiên đề sau:
(A1) Tiên đề phản xạ: Nếu Y  X thì X  Y

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 138


(A2) Tiên đề gia tăng: Nếu X  Y thì XZ  YZ
(A3) Tiên đề bắc cầu: Nếu X  Y và Y  Z thì X  Z
Từ hệ tiên đề Armstrong, dễ dàng chứng minh các luật sau:
(L1) Luật hợp: Nếu X  Y và Z  V thì XZ  YV
(L2) Luật tựa bắc cầu: Nếu X  Y và YW  Z thì XW  Z
(L3) Luật tách (chiếu) Nếu X  Y và Z  Y thì X  Z
Ký hiệu: F+ = { g | F ├A g } (ký hiệu F├A g để chỉ phụ thuộc hàm g được suy diễn bằng
cách áp dụng một số hữu hạn lần các quy tắc của hệ tiên đề Armstrong).
Dưới đây chúng ta trình bày những quy tắc suy diễn cho các phụ thuộc hàm mờ (FFD).
Bằng trực quan ta thấy những quy tắc này gần giống như những quy tắc suy diễn trong hệ tiên đề
Armstrong cho các phụ thuộc hàm (FD) trong CSDL quan hệ kinh điển, tuy nhiên các quy tắc
này có thêm một vài tính chất đặc trưng cho các quan hệ mờ.
Ta có các quy tắc suy diễn cho các phụ thuộc hàm mờ: Cho một lược đồ quan hệ mờ R
trên tập thuộc tính U = {A1, A2,…., An}, và một tập phụ thuộc hàm mờ F trên R. Giả sử X, Y, Z là
các tập con của U, ta có:
(1) Quy tắc bao hàm (chỉ có với các phụ thuộc hàm mờ)
1 2
Nếu X   Y đúng và 1  2 thì X  Y
(2) Quy tắc phản xạ (tương tự A1)

Nếu X  Y, thì X   Y đúng cho mọi   [0, 1]
(3) Quy tắc gia tăng (tương tự A2)
 
R thỏa mãn X   Y, thì nó cũng thỏa mãn XZ   YZ
(4) Quy tắc bắc cầu (tương tự A3)
1 2 min( 1 ,2 )
R thỏa mãn X   Y, Y   Z thì nó thỏa mãn X   Z
Những quy tắc suy diễn bổ sung cho FFD có thể được phát biểu như sau:
(5) Quy tắc hợp (tương tự L1)
1 2 min( 1 ,2 )
R thỏa mãn X   Y, X   Z thì nó thỏa mãn X   YZ
(6) Quy tắc tựa bắc cầu (tương tự L2)
1 2 min( 1 ,2 )
R thỏa mãn X   Y, WY   Z thì nó thỏa mãn WX  Z
(7) Quy tắc tách (tương tự L3)
 
Nếu X   Y đúng và Z  Y, thì X   Z cũng đúng.
Chúng ta chỉ liệt kê những quy tắc trên đây để làm cơ sở cho các vấn đề lý thuyết ở những
phần sau. Các chứng minh và những vấn đề chi tiết hơn cho các quy tắc trên, ban đọc có thể xem
trong tài liệu tham khảo [8].

6.5.4. Phụ thuộc hàm mờ một phần

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 139


Sử dụng định nghĩa của phụ thuộc hàm mờ, chúng ta có thể định nghĩa một phụ thuộc hàm
mờ một phần. Khái niệm này sẽ được sử dụng trong định nghĩa khóa mờ và dạng chuẩn mờ
Fuzzy 2NF.

Định nghĩa 7.4 (định nghĩa phụ thuộc hàm mờ một phần): Phụ thuộc hàm mờ X   Y là
phụ thuộc hàm mờ một phần, nếu và chỉ nếu tồn tại một tập thuộc tính X’  X, X’  Ø, sao cho
X’ 
 Y, với độ mạnh    . Khi đó Y được gọi là phụ thuộc hàm mờ một phần vào X với độ
mạnh  .

Theo cách hiểu khác, một FFD: X   Y là một FFD một phần, nếu tồn tại một thuộc
tính A  X sao cho khi ta bớt A khỏi X thì phụ thuộc hàm vẫn đúng. Nghĩa là X \{A} vẫn xác
định Y với độ mạnh   
Thí dụ 7.6. Cho lược đồ quan hệ R = {A, B, C} và các FFD là AB 
0,6
 C và A 
0,7
C
Sau khi bớt đi thuộc tính B khỏi vế trái AB của phụ thuộc hàm đầu tiên, phụ thuộc hàm
vẫn đúng như vậy AB  0,6
 C là phụ thuộc hàm mờ một phần.

6.5.5. Cập nhật cơ sở dữ liệu mờ


Khi cập nhật một CSDL quan hệ, chúng ta phải xem xét đến các phụ thuôc dữ liệu, thường
là các phụ thuộc hàm. Việc chèn thêm một bộ, hay việc thay đổi giá trị các bộ phải đảm bảo rằng
quan hệ mới luôn thỏa các phụ thuộc hàm. Với các CSDL mờ cũng vậy, với mỗi thao tác cập
nhật, phải kiểm tra các bộ mới có phá vỡ phụ thuộc hàm mờ đã có của CSDL hay không.
Một thí dụ câp nhật CSDL mờ.
Cho một lược đồ quan hệ R= {COUNTRY, INF, IND},
Giải thích:
- COUNTRY: Tên quốc gia,
- INF (quality of infrastructure): chất lượng cơ sở hạ tầng.
- IND (industrialization): mức độ công nghiệp hóa.
Giả sử ta cần chèn vào quan hệ r (R) các bộ sau:
- t1: <{Australia}, {normally good, excellent}, {very high}>
- t2: <{philippines}, {adequate}, {fair, moderate}>
- t3: <{venezuela}, {adaquate, satisfactory}, {fair}>
- t4: <{nigeria}, {satisfactory}, {poor}>
- t5: <{nigeria}, {no infastructure}, {poor}>
Giả sử các quan hệ tương tự trên các miền trị được cho như sau:

Bảng 7.5. Quan hệ tương tự trên miền COUNTRY

COUNTRY A P V N
Australia (A) 1 0 0 0
Philippines (P) 0 1 0 0
Venezuela (V) 0 0 1 0
Nigeria (N) 0 0 0 1

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 140


Bảng 7.6. Quan hệ tương tự trên miền INF
INF E NG S A I NI
Excellent (E) 1 0,8 0,1 0,1 0 0
Normally good (NG) 0,8 1 0,1 0,1 0 0
Satisfactory (S) 0,1 0,1 1 0,75 0 0
Adequate (A) 0,1 0,1 0,75 1 0 0
Inadequate (I) 0 0 0 0 1 0,6
No infrastructure (NI) 0 0 0 0 0,6 1

Bảng 7.7. Quan hệ tương tự trên miền IND


IND VH F M L P LI
Very high (VH) 1 0,25 0,25 0 0 0
Fair (F) 0,25 1 0,81 0 0 0
Moderate (M) 0,25 0,81 1 0 0 0
Low (L) 0 0 0 1 0,75 0,75
Poor (P) 0 0 0 0,75 1 0,81
Litle (LI) 0 0 0 0,75 0,81 1

Giả sử lược đồ quan hệ có xác định một phụ thuộc hàm mờ INF  0,6
 IND (có nghĩa là:
cơ sở hạ tầng của một quốc gia “ít- nhiều” xác định mức độ công nghiệp hóa của quốc gia đó).

Hãy kiểm tra xem những bộ nào có thể được chèn vào quan hệ, những bộ nào phá vỡ phụ
thuộc hàm mờ đã cho. Trình bày quan hệ cuối cùng với các bộ thỏa phụ thuộc hàm mờ
INF 0,6
 IND.
Giải: ta lần lượt chèn các bộ vào r, sau mỗi lần chèn, tính độ gần nhau cho mỗi cặp bộ theo
định nghĩa 7.1 và kiểm tra r có thỏa phụ thuộc hàm mờ theo định nghĩa 7.3. Nếu quá trình chèn
thêm một bộ mà phá vỡ FFD thì loại bộ đó khỏi r.
Bước 1. Chèn bộ t1 vào quan hệ r, vì r chỉ có 1 bộ nên luôn thỏa FFD đã cho, ta có:
r COUNTRY INF IND
t1 {Australia} {normally good, excellent} {very high}

Bước 2. Chèn bộ t2 = <{philippines}, {adequate}, {fair, moderate}> vào quan


hệ r:
r COUNTRY INF IND
t1 {Australia} {normally good, excellent} {very high}
t2 {Philippines} {adequate} {fair, moderate}

Tính mức độ gần nhau của 2 bộ t1 và t2 với thuộc tính INF và IND:
C(INF[t1, t2]) = 0,1 và C(IND[t1, t2]) = 0,25  C(IND[t1, t2]) > min {0,6, C(INF[t1, t2])} 
vậy r thỏa phụ thuộc hàm INF  0,6
 IND
Bước 3. Chèn bộ t3 = <{venezuela}, {adaquate, satisfactory}, {fair}> vào quan hệ r:
Bảng 7.8. Quan hệ r sau bước 3
r COUNTRY INF IND
t1 {Australia} {normally good, excellent} {very high}
t2 {Philippines} {adequate} {fair, moderate}
t3 {Venezuela} {adaquate, satisfactory} {fair}

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 141


Tính mức độ gần nhau của các cặp bộ [t1, t3] và [t2, t3] với thuộc tính INF và IND:
C(INF[t1, t3]) = 0,1 và C(IND[t1, t3]) = 0,25  C(IND[t1, t3]) > min {0,6, C(INF[t1, t3])}
C(INF[t2, t3]) = 0,75 và C(IND[t2, t3]) = 0,81  C(IND[t2, t3]) > min {0.6, C(INF[t2, t3])}
 vậy việc chèn thêm t3 không phá vỡ phụ thuộc hàm mờ INF 
0,6
 IND, quan hệ r lúc
này có 3 bộ như bảng 7.8.
Bước 4. Chèn bộ t4 = <{Nigeria}, {satisfactory}, {poor}> vào quan hệ r:
Bảng 7.9. Quan hệ r sau bước 4
r COUNTRY INF IND
t1 {Australia} {normally good, excellent} {very high}
t2 {Philippines} {adequate} {fair, moderate}
t3 {Venezuela} {adaquate, satisfactory} {fair}
t4 {Nigeria} {satisfactory} {poor}

Tính mức độ gần nhau của cặp bộ [t2, t4 ] với thuộc tính INF và với IND:
C(INF[t2, t4]) = 0,75 và C(IND[t2, t4]) = 0  C(IND[t2, t4]) < min {0,6, C(INF[t2, t4])}, như
vậy việc chèn thêm bộ t4 vào đã phá vỡ phụ thuộc hàm mờ INF  0,6
 IND, vậy bộ t4 không thể
chèn vào r (Bảng 7.9) và quan hệ r sau bước 4 vẫn chỉ gồm 3 bộ như bảng 7.8.
Bước 5. Chèn bộ t5 = <{Nigeria}, {no infrastructure}, {poor}> vào quan hệ r:

Bảng 7.10. Quan hệ r sau bước 5


r COUNTRY INF IND
t1 {Australia} {normally good, excellent} {very high}
t2 {Philippines} {adequate} {fair, moderate}
t3 {Venezuela} {adaquate, satisfactory} {fair}
t5 {Nigeria} {no infrastructure} {poor}

Tính mức độ gần nhau của các cặp bộ [t1, t5 ], [t2, t5] và [t3, t5] với thuộc tính INF và với
thuộc tính IND:
C(INF[t1, t5]) = 0 và C(IND[t1, t5]) = 0  C(IND[t1, t5]) > min {0,6, C(INF[t1, t5])},
C(INF[t2, t5]) = 0 và C(IND[t2, t5]) = 0  C(IND[t2, t5]) > min {0,6, C(INF[t2, t5])},
C(INF[t3, t5]) = 0 và C(IND[t3, t5]) = 0  C(IND[t2, t5]) > min {0,6, C(INF[t3, t5])}.
Vậy việc thêm bộ t5 vào quan hệ r không vi phạm phụ thuộc hàm mờ INF 
0,6
 IND.
Vậy sau 5 bước chèn các bộ vào r, ta nhận được quan hệ r thỏa phụ thuộc hàm
INF 0,6
 IND như trong bảng 7.10.

6.6. KHÓA MỜ VÀ BAO ĐÓNG MỜ TRÊN CƠ SỞ DỮ LIỆU MỜ

6.6.1. Khóa mờ

Giống như CSDL kinh điển, các dạng chuẩn mờ được dựa trên khái niệm phụ thuộc hàm
mờ và các khóa mờ.
Trước hết ta nhắc lại một số khái niệm về khóa trong CSDL quan hệ kinh điển:

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 142


Siêu khóa: Là vế trái của một phụ thuộc hàm đặc biệt X   U, trong đó U là tập tất cả
các thuộc tính. Như vậy có thể hiểu là, một tập con X các thuộc tính của U là một siêu khóa, nếu
như mọi thuộc tính của U được xác định bởi những thuộc tính trong X. Vậy tập thuộc tính X là
siêu khóa nếu X xác định U.
Khóa (hay khóa dự tuyển): Là một siêu khóa K, mà không có tập con nào của K có thể xác
định U.
Trong mô hình CSDL quan hệ kinh điển, những giá trị đồng nhất trên khóa K sẽ kéo theo
những giá trị đồng nhất trên U. Còn trong mô hình CSDL quan hệ mờ, khái niệm đồng nhất trên
một tập thuộc tính sẽ được thay thế bởi khái niệm tương đương ngữ nghĩa, hay sự gần nhau của
các bộ trên một tập thuộc tính. Vậy nếu K là một khóa mờ trong CSDL quan hệ mờ thì sự gần
nhau của các bộ trên K sẽ kéo theo sự gần nhau của các bộ trên U. Khi các phụ thuộc hàm mờ
được gắn với độ mạnh ngữ nghĩa thì khóa trong quan hệ mờ cũng được gắn với độ mạnh ngữ
nghĩa  nào đó.
Ta phát biểu định nghĩa về khóa mờ như sau:
Định nghĩa 6.5: Cho một lược đồ quan hệ R trên tập thuộc tính U = {A1, A2,…., An}, một tập
phụ thuộc hàm mờ F trên R. Tập thuộc tính K  U được gọi là một khóa mờ của R với độ mạnh
 nếu và chỉ nếu thỏa mãn hai điều kiện sau:

- K   U  F+

- K   U không là phụ thuộc hàm mờ một phần.
Ở đây  = min {i | i = 1, 2,…, n}, với i là những độ mạnh của các FFD được sử dụng để

suy diễn ra FFD: K   U, và 0 < i < 1.
Nếu K chỉ thỏa mãn điều kiện 1. thì K là siêu khóa.
Thí dụ 7.7. Cho lược đồ quan hệ R = {A, B, C, D}, và tập phụ thuộc hàm mờ:
F = {A 
0,7
 B, A 
0,9
 CD}. Hãy tìm khóa mờ của R.
Ta có: A  B, do đó A  AB (1), mặt khác ta lại có A  CD (2) F
0,7 0,7 0,9

Áp dụng quy tắc hợp cho (1) và (2) ta có A 


0,7
 ABCD, và dễ thấy A 
0,7
 ABCD
không là phụ thuộc hàm mờ một phần.
Theo định nghĩa 7.5 thì A là khóa mờ của lược đồ quan hệ R với độ mạnh 0,7.

6.6.2. Bao đóng mờ của một tập thuộc tính


Bao đóng mờ sẽ được tìm khi ta muốn biết liệu một phụ thuộc hàm mờ (FFD) đã cho có
thể nhận được bằng việc sử dụng tập phụ thuộc hàm mờ F của một quan hệ và những quy tắc suy
diễn cho các phụ thuộc hàm mờ hay không. Tuy nhiên, không đơn giản để tính toán tập tất cả các
FFD nhận được từ F bằng việc sử dụng những quy tắc suy diễn, bởi tập này có số các FFD là rất
lớn. Thay vì việc phải tính toán toàn bộ tập này, chúng ta tìm tập toàn bộ các thuộc tính được xác
định từ X nhờ các phụ thuộc hàm mờ FFD, được gọi là bao đóng mờ của X, ký hiệu là X+(),
hoặc đơn giản là X+.
Định nghĩa 7.6: Cho một lược đồ quan hệ R trên tập thuộc tính U = {A1, A2,…., An}, một tập
phụ thuộc hàm mờ F trên R. Với mọi tập thuộc tính X  U, bao đóng mờ của X với độ mạnh , ký
hiệu là X+() là tập tất cả các thuộc tính được xác định từ X và các phụ thuộc hàm trong F, với  là
độ mạnh nhỏ nhất của các phụ thuộc hàm tham gia tính X+.
Thuật toán tìm bao đóng mờ của tập thuộc tính X có thể được tóm tắt như sau:

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 143


Bước khởi tạo: X+ được khởi tạo gồm tất cả các thuộc tính của X, như vậy độ mạnh của
bao đóng khởi tạo là bằng 1, ta có X+(1):= X.
Các bước lặp: Lần lượt xét tất cả các phụ thuộc hàm mờ trong F, có vế trái là các thuộc
tính trong X+, vế phải của phụ thuộc hàm mờ này được kết nạp vào X+, độ mạnh của X+ được
gán là giá trị nhỏ nhất của độ mạnh cũ X+ và độ mạnh của phụ thuộc hàm mờ vừa sử dụng.
Thuật toán sẽ dừng khi đã xét hết các phụ thuộc hàm mờ với mỗi bao đóng mới, và không
thể kết nạp thêm thuộc tính mới vào X+, độ mạnh của bao đóng sẽ là độ mạnh nhỏ nhất của các
phụ thuộc hàm đã sử dụng.
Thí dụ 7.8. Xét lược đồ quan hệ R ở thí dụ 7.7, lược đồ này có tập thuộc tính U = {A, B, C,
 B, A  CD}. Ta tính bao đóng của thuộc tính X = {A} theo
0,9
D} và tập FFD: F = {A  0,7

các bước sau:


(1) Khởi tạo: đặt X+(1) = {A}
(2) Các bước lặp:
Xét phụ thuộc hàm trong F có vế trái thuộc X+ = {A}, ta có A 
0,7
 B, vậy
kết nạp thêm B vào X , độ mạnh của bao đóng mới là min{1 ; 0,7} = 0.7, ta được
+

X+(0,7) = {A, B}.


Tiếp tục xét phụ thuộc hàm A  CD, kết nạp thêm C, D vào bao đóng, độ mạnh của
0,9

bao đóng mới là: min{0,7 ; 0,9}= 0,7, vậy bao đóng mới có độ mạnh 0,7, ta được X+(0.7) = {A, B,
C, D}.
Với bao đóng mới, lại quay lại xét các phụ thuộc hàm, không có thêm thuộc tính nào được
kết nạp. Thuật toán kết thúc, bao đóng cuối cùng là A+(0,7) = {A, B, C, D}.

6.6.3. Tìm khóa mờ của một quan hệ mờ


Cũng giống như trong CSDL quan hệ kinh điển, việc tìm các khóa mờ của một lược đồ
quan hệ dựa trên việc tính bao đóng của một tập thuộc tính và dựa vào định nghĩa khóa mờ.
Có nhiều thuật toán để tìm khóa mờ, dựa trên việc tính các bao đóng mờ, ở đây chúng ta
chỉ đưa ra phương pháp chung, mà không đưa ra các thuật toán cụ thể, tuy nhiên, với các phương
pháp này, có thể dễ dàng phát triển thành các thuật toán hiệu quả để tìm khóa mờ.
Phương pháp chung để tìm khóa mờ của quan hệ r trên lược đồ quan hệ R với tập thuộc
tính U:
Với một tập thuộc tính X  U, tính bao đóng của X, nếu X+() = U, thì X là một siêu khóa
mờ của R với độ mạnh .

Nếu có X   U không phải là phụ thuộc hàm mờ một phần thì X là một khóa mờ với độ
mạnh .
Thí dụ 7.9. Cho lược đồ quan hệ R trên tập thuộc tính U = {A, B, C, D, E}, tập phụ thuộc
hàm mờ F = {A  0,6
 B, B 
0,7
 A, AC 
0,8
 DE, DE 0,9
C }
Ta có thể tìm được các khóa mờ sau:
K1 = AC với độ mạnh 0,6, K2 = BC với độ mạnh 0,7, K3 = ADE(0,6),
K4 = BDE(0,7).
Sinh viên tự kiểm tra lại quá trình tìm các khóa trên, dựa trên việc tính các bao đóng mờ
Trong thí dụ 7.8, dễ thấy A là một khóa mờ với độ mạnh 0,7.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 144


6.7. CHUẨN HÓA CƠ SỞ DỮ LIỆU MỜ.
Trước hết, ta định nghĩa khái niệm thuộc tính khóa mờ và thuộc tính không
khóa mờ.
Định nghĩa 7.7: Cho một lược đồ quan hệ R, với tập thuộc tính U và một tập các khóa mờ
K của R. Thuộc tính A U được gọi là một thuộc tính khóa mờ nếu và chỉ nếu A  Ki với Ki là
một khóa thuộc K.
Những thuộc tính mà không phải là thuộc tính khóa mờ (không xuất hiện trong bất kỳ một
khóa mờ nào) được gọi là thuộc tính không khóa mờ.
Từ đây trở đi, thay vì gọi thuộc tính khóa mờ, thuộc tính không khóa mờ ta gọi đơn giản là
thuộc tính khóa và thuộc tính không khóa, nếu không gây nhầm lẫn.
Một thuộc tính là một thuộc tính khóa, nó sẽ là một phần của ít nhất một trong những khóa
dự tuyển mờ của quan hệ. Tương tự như vậy, một thuộc tính là một thuộc tính không khóa, nó sẽ
không xuất hiện trong bất kỳ một khóa dự tuyển mờ nào của quan hệ. Trong thí dụ 7.8. thuộc
tính A là một thuộc tính khóa với độ mạnh 0.7, các thuộc tính còn lại là thuộc tính không khóa.
Với thí dụ 7.9, tất cả các thuộc tính trong U đều là thuộc tính khóa.
Khi thiết kế một CSDL, thì phải thiết kế các lược đồ quan hệ đạt đến một tiêu chuẩn nào
đó. Việc chuẩn hóa các lược đồ quan hệ mờ nhằm làm cho việc cập nhật dữ liệu không gây ra
những dị thường như làm mất hoặc dư thừa thông tin, phá vỡ các ràng buộc toàn vẹn... Cũng
tương tự như với CSDL quan hệ kinh điển, người ta cũng phân lớp CSDL quan hệ mờ thành các
dạng chuẩn, ở giáo trình này chúng ta chỉ xem xét các dạng chuẩn mờ 1NF, 2NF và 3NF. Những
dạng chuẩn cao hơn bạn đọc có thể tìm hiểu trong các tài liệu tham khảo.

6.7.1. Dạng chuẩn mờ thứ nhất (fuzzy 1NF - F1NF)


Định nghĩa 7.8: Một lược đồ quan hệ R được gọi là ở dạng chuẩn mờ 1NF nếu và chỉ nếu
với mọi quan hệ r trong R, không một thuộc tính nào của r là đa trị
Thí dụ 7.10. Xét lược đồ quan hệ R với các thuộc tính là {Tên, Tuổi, Nghề nghiệp}. Một
quan hệ r của R chứa các bộ được cho như sau:
t1 = <Tùng, 30, Giáo viên>
t2 = <An, 45, {Luật sư, Giáo viên}>
t3 = <Thanh, [rất trẻ, trẻ], Bác sĩ >
Quan hệ r có bộ thứ hai với thuộc tính nghề nghiệp nhận hai giá tri, trong bộ này An có thể
làm nghề ‘Giáo viên’ hoặc ‘Luật sư’vậy R không thỏa mãn dạng chuẩn mờ 1NF, lược đồ R
không thuộc dạng chuẩn mờ 1NF. Chú ý rằng tuổi của Thanh trong khoảng [rất trẻ, trẻ] là một
giá trị mờ, không phải là đa trị. Có thể sửa quan hệ trên trở thành thỏa dạng chuẩn mờ 1NF bằng
cách tách bộ t2 thành 2 bộ, và quan hệ R trở thành:
t1 = <Tùng, 30, Giáo viên>
t2 = <Thanh, [rất trẻ, trẻ], Bác sĩ >
t3 = <An, 45, Luật sư>
t4 = <An, 45, Giáo viên>
Quan hệ này đã ở dạng chuẩn fuzzy 1NF.

6.7.2. Dạng chuẩn mờ thứ hai (fuzzy 2NF - F2NF)

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 145


Định nghĩa 7.9 (dạng chuẩn mờ thứ hai): Với F là một tập các FFD trên lược đồ quan hệ
R, K là một khóa mờ bất kỳ của R với độ mạnh  . R được gọi là thuộc dạng chuẩn mờ 2NF nếu
và chỉ nếu không có thuộc tính không khóa nào là phụ thuộc hàm mờ một phần vào khóa K.
Thí dụ 7.11. Cho lược đồ quan hệ R(A, B, C, D), với tập phụ thuộc hàm mờ:
F = {A  0,7
 B, A 0,9
 CD}.
Dễ thấy lược đồ này có duy nhất A là khóa mờ của R với độ mạnh 0,7. Vì không có thuộc
tính không khóa nào của R là phụ thuộc hàm mờ một phần vào khóa mờ của R là A nên R thuộc
dạng chuẩn mờ 2NF.
- Kiểm tra dạng chuẩn mờ thứ hai
Định nghĩa dạng chuẩn mờ 2NF đã bao gồm việc kiểm tra FFD một phần cho những thuộc
tính không khóa vào khóa mờ của lược đồ quan hệ R. Chúng ta sẽ kiểm tra phụ thuộc hàm mờ
một phần dựa trên thực tế rằng: “Nếu một tập con thực sự của vế trái một FFD nào đó quyết định
vế phải theo một độ mạnh hơn hoặc bằng độ mạnh của FFD đó, thì FFD là phụ thuộc hàm một
phần”. Muốn biết một quan hệ cho trước có ở dạng chuẩn mờ 2NF hay không thì toàn bộ những
thuộc tính không khóa của quan hệ sẽ được kiểm tra để biết xem liệu chúng có phụ thuộc hàm
một phần vào một khóa mờ nào của quan hệ không.
Chú ý 7.3.2: Nếu vế trái của FFD chứa một thuộc tính đơn, phép kiểm tra không cần thiết
phải áp dụng, FFD không phải là phụ thuộc hàm mờ một phần.
Thí dụ 7.12. Xét lược đồ quan hệ R = {A, B, C, D} và tập các phụ thuộc hàm mờ là: F = {
AB 
0,8
 D, A 0,9
 C }. Dễ thấy AB là khóa mờ của R với độ majnh 0.8.
Vì thuộc tính không khóa C là phụ thuộc hàm mờ một phần vào khóa mờ của R là AB nên
R không thuộc dạng chuẩn mờ 2NF.
- Phân tách lược đồ quan hệ về dạng chuẩn mờ 2NF
Định nghĩa 7.10 (khóa mờ một phần): Giả sử X là một khóa mờ của lược đồ quan hệ R.

Nếu có FDD: X   Y là một phụ thuộc hàm mờ một phần, khi đó X được gọi là khóa mờ một
phần.
Nếu một lược đồ quan hệ không ở dạng chuẩn mờ 2NF, nó có thể được chuẩn hóa thành
tập những quan hệ ở dạng chuẩn mờ 2NF, theo các bước sau:
(i) Nếu quan hệ đang xét không ở chuẩn 2NF, tìm những khóa mờ một phần và những
thuộc tính không khóa phụ thuộc hàm một phần vào chúng.
(ii) Phân tách và khởi tạo một quan hệ mới cho mỗi khóa mờ một phần cùng với những
thuộc tính phụ thuộc vào chúng.
(iii) Loại những thuộc tính không khóa phụ thuộc hàm một phần vào bất kỳ một khóa mờ
nào của quan hệ ra khỏi quan hệ ban đầu và tạo một quan hệ mới với những thuộc tính còn lại.
Thí dụ 7.13. Xét lược đồ quan hệ R = {A, B, C, D}, tập FFD: F = { AB 0,8
 D,
A  C}. Dễ thấy AB là khóa mờ một phần, vậy R không thuộc dạng chuẩn 2NF,
0,9

Áp dụng các bước trên, phân tách R được thành hai lược đồ quan hệ ở dạng chuẩn mờ
2NF:
R1 = {A, C} với A là khóa mờ của R1 với độ mạnh 0,9
R2 = {A, B, D} với AB là khóa mờ của R2 với độ mạnh 0,8

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 146


Người ta chứng minh được phép phân tách R tách thành R1 và R2 là một phép kết nối
không mất thông tin, tức là khi kết nối các quan hệ trên các lược đồ con lại, ta nhận được quan
hệ ứng với lược đồ ban đầu. [1]

6.7.3. Dạng chuẩn mờ thứ ba (fuzzy 3NF - F3NF)


Dạng chuẩn mờ F3NF là dạng chuẩn phổ biến nhất, thường được sử dụng khi thiết kế
CSDL. Với dạng chuẩn F3NF, các dị thường khi thực hiện các phép cập nhật sẽ được hạn chế tới
mức thấp.
Định nghĩa 7.11 (dạng chuẩn mờ thứ 3): Cho F là tập các phụ thuộc hàm mờ FFD trên R,
và K là khóa mờ của R với độ mạnh  . R được gọi là thuộc dạng chuẩn mờ 3NF nếu và chỉ nếu

R đã ở dạng chuẩn mờ 2NF và với mọi phụ thuộc hàm mờ X   Y trong F, Y  X, thì: hoặc X
chứa một khóa mờ, hoặc Y là thuộc tính khóa mờ.
- Kiểm tra dạng chuẩn mờ thứ ba: Định nghĩa của dạng chuẩn mờ 3NF có thể trực tiếp
được sử dụng để kiểm tra xem liệu một quan hệ đã cho có ở dạng chuẩn mờ 3NF hay không.
Toàn bộ các FFD được kiểm tra để so sánh với các điều kiện sau:
+ Nếu những thuộc tính ở vế trái FFD chứa toàn bộ những thuộc tính ở vế phải, thì FFD đó
không vi phạm dạng chuẩn mờ 3NF.
+ Nếu các thuộc tính ở vế trái FFD chứa bất kỳ một khóa mờ nào của quan hệ, thì dạng
chuẩn mờ 3NF cũng không bị vi phạm.
+ Nếu những thuộc tính ở vế phải của các FFD đều là những thuộc tính khóa, dạng chuẩn
mờ 3NF cũng không bị vi phạm.
Thí dụ 7.14. Xét lược đồ quan hệ R = {A, B, C, D}, tập phụ thuộc hàm FFD:
F = {A 
0,7
 B, A 
0,9
 CD}.
Dễ thấy A là khóa mờ của R với độ mạnh 0,7
Vì R ở dạng chuẩn mờ 2NF và A là khóa mờ nên R cũng ở dạng chuẩn 3NF.
Thí dụ 7.15. Xét lược đồ quan hệ R = {A, B, C, D, E} và tập các FFD:
F = { AB 
0,9
 C, AC 
0,8
 D, C 
0,6
 E }.
Dễ thấy AB là khóa mờ duy nhất của R, phụ thuộc hàm mờ AB  0,9
 C có vế trái chứa
khóa mờ nên không vi phạm dạng chuẩn mờ 3NF. Hai FFD còn lại AC  D, C 
0,8 0,6
 E vi
phạm dạng chuẩn mờ 3NF vì các vế trái không chứa khóa mờ AB, hai thuộc tính ở vế phải cũng
không phải là thuộc tính khóa. Vậy R không thuộc dạng chuẩn mờ 3NF.
- Phân tách lược đồ quan hệ về dạng chuẩn mờ F3NF
Tương tự như việc phân tách lược đồ về dạng chuẩn mờ F2NF (fuzzy 2NF), ta có thể phân
tách lược đồ R về dạng chuẩn mờ F3NF theo các bước:
(1) Tìm các phụ thuộc hàm thỏa F3NF, vế trái chung 1 khóa, gộp vế trái và các vế phải
thành các thuộc tính của lược đồ con R1. Tiếp tục với tất cả các phụ thuộc hàm thỏa F3NF.
(2) Với các phụ thuộc hàm không thỏa F3NF, gộp các thuộc tính vế trái và vế phải thành
lược đồ con Ri, khóa là vế trái phụ thuộc hàm. Các lược đồ R1, R2, … đều thỏa F3NF.
Có thể chứng minh được phép phân tách R như trên là một phân tách không mất thông tin [1].
Chẳng hạn với thí dụ trên, ta có một phân tách của R thành tập lược đồ thỏa F3NF là: R =
{ABC, ACD, CE}

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 147


BÀI TẬP CHƯƠNG 6
1. Cho A, B là các tập con cổ điển của tập vũ trụ X. Có thể dùng hàm thuộc để biểu diễn các tập con A, B
như sau:
1 if x  A 1 if x  B
x  X ,  A ( x)  và x  X ,  B ( x) 
0 if x A 0 if x  B

Hãy xây dựng các hàm thuộc để biểu diễn các tập AB ; AB và A .
1
2. Cho tập mờ A trên không gian nền X = R, xác định bởi  A ( x)  , x X .
1  | x  3|
Hãy xác định chiều cao của A, lõi của A.
Tìm nhát cắt A0,5 ; A0,25

Tìm phần bù của A với phép phủ định: n(a) 1  a , a [0,1].


Quan hệ A đã được chuẩn hóa chưa.
3. Xét tập U gồm 5 ứng viên vào chức vụ quản đốc phân xưởng, U = {u1, u2, u3, u4, u5}, họ được lựa
chọn theo hai tiêu chuẩn: A – trình độ nghiệp vụ (mức độ lành nghề), và B - kinh nghiệm nghề nghiệp.
Tập thể có ý kiến đánh giá về mức độ phù hợp của các ứng viên với các tiêu chuẩn A và B như sau:
U Tiêu chuẩn A Tiêu chuẩn B
u1 Khá phù hợp Tương đối phù hợp
u2 Hoàn toàn phù hợp Khá phù hợp
u3 Rất phù hợp Hoàn toàn phù hợp
u4 Ít phù hợp Không phù hợp
u5 Tương đối phù hợp Rất phù hợp

Các mức độ phù hợp được lượng hóa như sau:


- Hoàn toàn phù hợp: mức độ phù hợp: 1;
- Rất phù hợp: mức độ phù hợp: 0,8;
- Khá phù hợp: mức độ phù hợp: 0,6;
- Tương đối phù hợp: mức độ phù hợp: 0,4;
- Ít phù hợp: mức độ phù hợp: 0,2
- Không phù hợp: mức độ phù hợp: 0;
Gọi A và B là các tập con mờ những người thỏa tiêu chuẩn A và B tương ứng. Hãy xác định các tập
mờ A và B.
a. Tìm tập con mờ của U những ứng viên thỏa ít nhất một trong hai tiêu chuẩn
b. Thỏa mãn cả hai tiêu chuẩn.
c. Không thỏa tiêu chuẩn A.
d. Tìm nhát cắt mức  của tập mờ những ứng viên thỏa cả 2 tiêu chuẩn, với  = 0,6 và
 = 0,8.
4. Hãy xem xét tập hợp các ngôi nhà “gần bãi biển” tại một địa phương, ta có thể coi khoảng cách từ các
ngôi nhà đến bãi biển dưới 200 m chắc chắn là gần, hay có thể cách bãi biển trên 200 m vẫn có thể coi
là gần, nhưng tính chất “gần bãi biển” sẽ ít dần đi, và từ 500m trở lên thì không thể coi là gần bãi biển
nữa.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 148


a. Theo các tri thức trên, hãy xây dựng và vẽ đồ thị tập mờ A là khoảng cách đến bãi biển của các ngôi
nhà ‘gần bãi biển’.
b. Hãy xây dựng và vẽ đồ thị hàm thuộc của tập mờ B là khoảng cách đến bãi biển của những ngôi nhà
‘không gần bãi biển’.
c. Hãy xây dựng và vẽ đồ thị hàm thuộc của tập mờ C là khoảng cách đến bãi biển của những ngôi nhà
cách biển khoảng 300 đến 400 m, chấp nhận sai số đến 50 m.
5. Cho A là tập con mờ trên tập vũ trụ U, chứng minh rằng với mọi , ‘  [0, 1], nếu ’  thì A 
A‘, với A và A‘ là các nhát cắt mức  và ‘ của tập mờ A.
6. Cho A, B là các tập con mờ trên tập vũ trụ U, chứng minh rằng với mọi  [0, 1], những nhát cắt mức
 của các tập mờ A, B, A  B, A  B thỏa mãn các tính chất sau:
a. (A  B) = A  B
b. (A  B) = A  B
c. nếu A  B thì A  B
7. Cho tập các số nguyên: U = {1, 2, 3, 4, 5}. Xét R là quan hệ “nhỏ hơn hay bằng” trên U như sau: a, b
 U, ta nói aRb nếu a < b.
a. Hãy biểu diễn quan hệ R bằng một tập con của tích Đề các U x U.
b. Hãy viết ma trận quan hệ R.
c. Quan hệ trên có những tính chất nào trong các tính chất sau: phản xạ, đối xứng và bắc cầu?
8. Cho tập các số nguyên: U = {1, 2, 3, 4, 5}. S là quan hệ mờ hai ngôi trên U xác định bởi hàm thuộc
sau:
 x y 
x, y U , f S  x, y   max 0, 1  
 3 
a. Hãy biểu diễn quan hệ mờ S bằng tập con mờ của tích Đề các U × U
b. Hãy xác định ma trận quan hệ mờ của S.
c. Quan hệ trên có những tính chất nào trong các tính chất sau: phản xạ, đối xứng và bắc cầu max-
min?
9. Cho quan hệ mờ RA trên miền trị A = {a1, a2, a3} như sau:
RA a1 a2 a3
a1 1 0,8 0,6
a2 0,8 1 0,6
a3 0,6 0,6 1
a. Chứng minh rằng RA là một quan hệ tương tự trên A.
b. Phân cụm các phần tử của tập A theo các mức .
10. Cho quan hệ mờ RD trên miền trị D = {d1, d2, d3, d4} như sau:
RD d1 d2 d3 d4
d1 1 0,8 0,7 0,8
d2 0,8 1 0,6 0,7
d3 0,7 0,6 1 0,8
d4 0,8 0,7 0,8 1
a. Quan hệ RD có phải là quan hệ tương tự trên D không? Tại sao?
b. Tìm các quan hệ mức  liên kết với quan hệ RD.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 149


11. Các loại thông tin nào được coi là thông tin không hoàn hảo? (mỗi loại trình bày vắn tắt không quá 5
dòng).
12. CSDL mờ là gì? Giới thiệu 3 mô hình CSDL mờ cùng với đặc trưng chủ yếu của mỗi mô hình. Cho
thí dụ cho mỗi mô hình.
13. Thế nào là mức độ gần nhau của hai bộ đối với một thuộc tính và đối với một tập thuộc tính.
14. Định nghĩa phụ thuộc hàm mờ dựa trên mức độ gần nhau của hai bộ đối với một tập thuộc tính, so
sánh sự giống nhau và khác nhau với các phụ thuộc hàm kinh điển (rõ)
15. Phát biểu các (7) quy tắc suy diễn cho các phụ thuộc hàm mờ.
16. a. Định nghĩa phụ thuộc hàm mờ một phần,
b. Cho lược đồ quan hệ mờ R= {A, B, C} và tập các FFD:
F = {CB  0,8
 A; C 
0,7
 CA}. Hãy chỉ ra phụ thuộc hàm mờ 1 phần trong F,
giải thích?
17. a. Định nghĩa khóa mờ của một lược đồ quan hệ mờ. Thế nào là thuộc tính khóa mờ và thuộc tính
không khóa mờ. Định nghĩa khóa mờ 1 phần của lược đồ CSDL mờ.
b. Cho lược đồ quan hệ R = {A, B, C, D}, và tập phụ thuộc hàm mờ:
F = {B  0,7
 A, B 
0,6
 CD}. Hãy tìm khóa mờ của R. Xác định các thuộc tính khóa và thuộc
tính không khóa.
c. Cho lược đồ quan hệ R trên tập thuộc tính U = {A, B, C, D, E}, tập phụ thuộc hàm mờ F =
{C 0,6
 B, B 
0,7
 C, AC 0,8
 DE, DE 0,9
 CA}. Xác định các khóa mờ của lược đồ R.
18. a.Định nghĩa dạng chuẩn mờ thứ nhất (F1NF) và dạng chuẩn mờ thứ hai (F2NF).
b.Cho lược đồ quan hệ mờ R(A, B, C, D), với tập phụ thuộc hàm mờ: F = {B 
0,7
 A,
B  CD}. Kiểm tra xem R có thỏa dạng chuẩn mờ thứ hai không.
0,9

c. Xét lược đồ quan hệ mờ R = {A, B, C, D} và tập các phụ thuộc hàm mờ là:
F = { AC 
0,8
 D, A 
0,9
 B }. Kiểm tra xem R có thỏa dạng chuẩn mờ thứ hai không?
d. Xét lược đồ quan hệ mờ R = {A, B, C, D}, tập phụ thuộc hàm mờ
F = { BC  0,8
 D, C  0,9
 A}. Xác định dạng chuẩn cao nhất của lược đồ R. Nếu R chưa ở F2NF
thì hãy tách lược đồ trên thành các lược đồ con ở dạng chuẩn F2NF.
19. a. Phát biểu định nghĩa dạng chuẩn mờ thứ ba (F3NF).
b. Cho lược đồ quan hệ mờ R = {A, B, C, D}, tập phụ thuộc hàm mờ:
F = {B 
0,7
 A, C 
0,9
 AD}. Xác định dạng chuẩn cao nhất của lược đồ R
c. Cho lược đồ quan hệ mờ R = {A, B, C, D, E}, và tập phụ thuộc hàm mờ:
F = { AB 0,9
 D, AD  0,8
 C, C  0,6
 E}. Xác định dạng chuẩn cao nhất của lược đồ R, nếu
R chưa ở F3NF thì hãy hãy tách lược đồ trên thành các lược đồ con ở dạng chuẩn F3NF.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 150


TÀI LIỆU THAM KHẢO
1. Hồ Thuần, Hồ Cẩm Hà (2007). Các hệ cơ sở dữ liệu - Lý thuyết và thực hành (Tập 1, 2). Nhà xuất
bản Giáo dục.
2. Đỗ Trung Tuấn (2010). Cơ sở dữ liệu suy diễn. Nhà xuất bản Giáo dục.
3. B.Bouchon, Meunier, Hồ Thuần, Đặng Thanh Hà (2007). Logic mờ và ứng dụng. Nhà xuất bản Đại
học Quốc gia Hà Nội.
4. Nguyễn Văn Định (2004). Siêu đồ thị và Lược đồ CSDL phi chu trình. Luận án Tiến sĩ Toán học, Đại
học Khoa học Tự nhiên, ĐHQG Hà Nội.
5. Đoàn Văn Ban, Tính đúng đắn của lược đồ cơ sở dữ liệu hướng đối tượng, Tạp chí Tin học và Điều
khiển học, 16 (3), tr. 7– 5, 2000.
6. Đoàn Văn Ban, Nguyễn Thị Tĩnh, Giáo trình phân tích, thiết kế hệ thống hướng đối tượng bằng
UML, Nhà xuất bản Đại học Sư Phạm 2011.
7. Đoàn Văn Ban, Viện CNTT, Viện HLKH-CN Việt nam (2010) ,“Bài giảng Cơ sở dữ liệu hướng
đối tượng”.
8. M. Tamer Ozsu, Patrick Valduriez (1999). Nguyên lý các hệ cơ sở dữ liệu phân tán (Bản dịch). Nhà
xuất bản Thống kê.
9. Michael L. Horowitz, An Introduction to Object-Oriented Databases and Database Systems,
Carnegie Mellon University, 1991.
10. Mishra J. and Ghosh S. (2012). Normalization in a fuzzy relational database model. International
journal of computing engineer and technology, 3(2): 506-517.
11. Buckles P.B., Petry F.E. (1982). A fuzzy representation of data for relational database”. Fuzzy Set
Syst., 7: 213-229.
12. Yazici A., Sozat I. (1999) The integrity constraints for similarity-based fuzzyralational database.
International journal of Intelligent Syst. 1999; 13: 641-660.
13. G.M. Bierman, A. Trigoni, Towards a formal typ e system for ODMG OQL, University of Cambridge
Computer Laboratory, 2000
14. Cettell R. G. G., Barry D. K., The Object – Oriented Standard: ODMG, San Francisco, CA: Morgan
Kaufmann, 1997.
15. Hamouz, S. and Biswas, R. (2006). Fuzzy Functional Dependencies in Relational Databases.
International Journal of Computational Cognition, 4(1): 39-43.
16. J.D. Ullman. (1992). Principles of Database and Knowledgebase system. 1, 2. ISBN 0888-2096.
17. Jarke M., Koch J. (1990). Query optimization in databas system. ACM Computing Surveys, 16(2):
73-170.
18. Zadeh, L.A. (1965). Fuzzy sets. Information and Control, 8, 338-353.

Bài giảng “Cơ sở dữ liệu nâng cao” | nvdinh@vnua.edu.vn 151

You might also like