Tải bản đầy đủ (.pdf) (60 trang)

tối ưu hóa truy vấn đối với cơ sở dữ liệu hướng đối tượng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (761.09 KB, 60 trang )

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


































ĐẠI HỌC THÁI NGUYÊN
KHOA CÔNG NGHỆ THÔNG TIN







Phạm Thị Huệ



TỐI ƯU HÓA TRUY VẤN ĐỐI VỚI CƠ SỞ DỮ LIỆU
HƯỚNG ĐỐI TƯỢNG


LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH












Thái Nguyên - 2010

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

































ĐẠI HỌC THÁI NGUYÊN
KHOA CÔNG NGHỆ THÔNG TIN






Phạm Thị Huệ



TỐI ƯU HÓA TRUY VẤN ĐỐI VỚI CƠ SỞ DỮ
LIỆU HƯỚNG ĐỐI TƯỢNG
Chuyên ngành: Khoa học máy tính
Mã số: 604801

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS. Đoàn Văn Ban





Thái Nguyên - 2010

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


1
LỜI NÓI ĐẦU
Hiện nay công nghệ thông tin đã trở thành lĩnh vực không thể thiếu được
cho cuộc sống của con người. Từ khi ra đời công nghệ thông tin đã không
ngừng phát triển, nó từng bước thể hiện vai trong các ngành nghề: Y tế, quân
sự, giáo dục, văn hoá …. Cơ sở dữ liệu là một lĩnh vực quan trọng của Công
nghệ thông tin.
Việc tìm kiếm và xây dựng các phần mềm ứng dụng phục vụ nhu cầu của
xã hội các nhà chuyên môn luôn hướng tới mục đích đáp ứng đượ c các bài
toán phức tạp như CSDL cho WebCSDL multimedia, CSDL phân tán… đồng
thời tốc độ xử lý phải nhanh và chính xác. Xuất phát từ nhu cầu đó, các nhà
nghiên cứu không ngừng tìm tòi, cải tiến và đưa ra mô hình dữ liệu với khả
năng ứng dụng cho các đối tượng phức, khả năng mở rộng kế thừa. Mô hình
CSDL hướng đối tượng, với cách tiếp cận mới là giải pháp tốt cho các CSDL
ứng dụng phức tạp đó.
Trong những năm gần đây, việc phát triển các ngôn ngữ CSDL trên các
hệ thống CSDL hướng đối tượng được xem là một hướng nghiên cứu quan
trọng. Các ngôn ngữ CSDL được mở rộng theo hướng tích hợp với ngôn ngữ
lập trình hướng đối tượng, điều này tạo điều kiện cho các hệ thống tăng khả
năng tính toán phức tạp và xây dựng giao diện lập trình hướng đối tượng.
Một trong những hướng nghiên cứu quan trọng được đề cập trong hệ
thống CSDL hướng đối tượng là tối ưu hoá truy vấn hướng đối tượng. Với
một truy vấn sẽ tồn tại nhiều phương án mà hệ thống CSDL cho phép xử lý và
đưa ra kết quả theo yêu cầu. Việc tối ưu hoá truy vấn sẽ cho chúng ta lựa chọn

phương án nào có tổng thời gian thực hiện truy vấn hiệu quả nhất. Hiện nay
đã có rất nhiều các kết quả nghiên cứu về phát triển ngôn ngữ hướng đối

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


2
tượng và biên dịch truy vấn tương đương từ truy vấn hướng đối tượng sang
quy vấn quan hệ.
Xuất phát từ nhu cầu cấp thiết của việc nghiên, mở rộng ngôn ngữ hướng
đối tượng, biên dịch truy vấn và tối ưu hoá truy vấn quan hệ cùng các kết quả
nghiên cứu của nhiều tác giả Đoàn Văn Ban, Hoàng Bảo Hùng, Lê Mạnh
Thạnh… tôi đã chọn đề tài luận văn: “Tối ưu hoá truy vấn đối với CSDL
hướng đối tượng”. Nội dung luận văn bao gồm phần mở đầu, kết luận và bốn
chương.
Chương 1 trình bày kiến thức nền tảng của mô hình dữ liệu hướng đối tượng
như định danh đối tượng, kiểu, lớp, lược đồ mối quan hệ kế thừa phương
thức.
Chương 2 Tìm hiểu Ngôn ngữ truy vấn OQL và đại số đối tượng tương ứng
được chọn làm cơ sở cho những nghiên cứu, mở rộng các thuật toán tối ưu
hoá truy vấn đối tượng và là công cụ minh hoạ cho các thuật toán tối ưu hoá
truy vấn được đề xuất trong chương 3.
Chương 3 giới thiệu và trình bày khái niệm siêu đồ thị kết nối đối tượng. Sau
đó sử dụng ký pháp siêu đồ thị để biểu diễn truy vấn OQL. Xây dựng giải
thuật khởi tạo siêu đồ thị trong các trường hợp truy vấn đối tượng đơn và
lồng. Đưa ra giải thuật ước lượng siêu cạnh cho các trường hợp tách biệt hay
liên thông của các siêu đồ thị con hợp thành siêu đồ thị mà biểu diễn cho một
truy vấn đối tượng lồng.
Chương 4 cài đăt mô phỏng thuật toán chuyển đổi lược đồ đối tượng sang
lược đồ quan hệ nhúng.


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


3
Chƣơng 1: CÁC KHÁI NIỆM CƠ BẢN VỀ CƠ SỞ DỮ LIỆU HƢỚNG
ĐỐI TƢỢNG
1.1. Đối tƣợng, lớp và định danh đối tƣợng
1.1.1. Đối tƣợng và định danh đối tƣợng
Khái niệm cơ bản nhất của mô hình hướng đối tượng (HĐT) là đối
tượng. Đối tượng [1], [2] 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 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ó những đố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ế.
Mỗi đối tượng có thể được biểu thị bởi bộ ba (oid, class_name, value).
Trong đó oid là giá trị thuộc tính định danh OID của đối tượng class_name là
tên lớp chứa đối tượng này và value là giá trị của đối tượng đó.
1.1.2. Lớp đối tƣợng
Đối tượng là một thể hiện, một đại biểu 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 khác và có chung ngữ nghĩa trong hệ thống. Lớp thường xuất
hiện dưới dạng những danh từ chung trong các tài liệu mô tả bài toán hay
trong các thảo luận với người sử dụng. Cũng như các đối tượng, lớp có thể là


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


4
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 trong thiết kế phục vụ cho vài đặt hệ
thống vv…
Một cách hình thức, ta có một số ký hiệu được qui ước như sau:
Alloid: Tập tất cả các định danh đối tượng.
C: Tập các tên lớp
A: Tập các tên thuộc tính
Interger, Real, Boolean, String: Tập các kiểu nguyên tố (kiểu cơ sở) có miền
trị tương ứng lần lượt là D
1
, D
2
,

D
3
,

D
4
.
D: Tập các giá trị nguyên tố D= D
1
 D
2

 D
3


D
4

0: Tập các đối tượng.
1.1.3. Giá trị và kiểu
Các giá trị trên tập các đối tượng (0) được định nghĩa như sau:
 Một phần tử thuộc D hoặc thuộc Alloid là một giá trị được gọi là giá trị
nguyên tố.
 Nếu v
1
, v
2
, …, v
n
là các giá trị và a
1
, a
2
, …, a
n
là các tên thuộc tính, thì
[a
1
: v
1
, a

2
: v
2
, …, a
n
: v
n
] là một giá trị được gọi là giá trị bộ.
 Nếu v
1
, v
2
,…, v
n
là các giá trị phân biệt thì {v
1
, v
2
, …, v
n
} là một giá
trị được gọi là giá trị tập.
Khái niệm về kiểu trên tập các lớp (C) cũng được định nghĩa như sau:
 Interger, Real, String, Boolean là các kiểu gọi là kiểu nguyên tố.
 Các lớp trong C cũng là các kiểu.
 Nếu T
1
, T
2
,…, T

n
là các kiểu và a
1,
a
2
, , a
n
là các tên thuộc tính phân
biệt của C thì [a
1
: T
1
, a
2
: T
2
, , a
n
: T
n
] cũng là một kiểu còn gọi là kiểu
bộ.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


5
 Nếu T là một biểu thức kiểu, thì {T} hoặc Set(T) cũng là kiểu còn được
gọi là kiểu tập.
1.1.2. 1.1.4. Thuộc tính thao tác và phƣơng thức

Mỗi thuộc tính có thể là thuộc tính đơn trị hoặc thuộc tính đa trị. Trái
với thuộc tính đơn trị, một thể hiện của thuộc tính đa trị là tương ứng với một
tập các giá trị.
Ví dụ.1.1: Về thuộc tính đơn và đa trị
Class HoSo
Type tuple (mahs: int, hoten: char, thanhpho: char, ngaysinh:
tuple(ngay, thang, nam))
Class NhanVien inherits HoSo
Type tuple (manv: int, luong: float, thuong: float, tenphong: Phong)
Class Phong
Type tuple(maphong: int, tenphong: char, diadiem: char)
NhanVien là lớp được kế thừa từ lớp HoSo, có thuộc tính tenphong là
thuộc tính tham chiếu đối tượng đến lớp Phong, ngaysinh là thuộc tính đa trị,
các thuộc tính còn lại là đơn trị.
 Set (tập hợp): Các phần tử không có thứ tự, không lặp, không cố định
số phần tử
 List (danh sách): Các phần tử có thứ tự, có lặp, không cố định số phần
tử.
(i) Array (mảng): Các phần tử có thứ tự, có lặp, cố định số phần tử
tối đa.
Một thuộc tính có trong một lớp còn có thể là thuộc tính phức hợp, là
thuộc tính được xây dựng là tập các thuộc tính khác. Việc khai báo một thuộc
tính phức hợp được thực hiện bằng toán tử xây dựng tuple (bộ).
Formatted: cap2, Left, Line spacing: single,
No bullets or numbering
Formatted: Bulleted + Level: 1 + Aligned at:
0.25" + Tab after: 0.5" + Indent at: 0.5"
Formatted: Indent: First line: 0.5"

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên



6
Thao tác (operation) là một hàm hay thủ tục có thể áp dụng (gọi hàm)
cho hoặc bởi các đối tượng trong một lớp. Khi nói tới một thao tác là ngầm
định nói tới một đối tượng đích để thực hiện thao tác đó. Ví dụ, thao tác (hàm)
hienthi() của lớp MonHoc khi gọi để hiển thị về các sinh viên học một môn
học cụ thể như Lập trình hƣớng đối tƣợng chẳng hạn.
Một phương thức là một cách thức cài đặt của một thao tác trong một
lớp.
Một số thao tác có thể là đa xạ, được nạp chồng, nghĩa là nó có thể áp
dụng cho nhiều lớp khác nhau với những nội dung thực hiện có thể khác
nhau, nhưng cùng tên gọi. Ví dụ lớp ThietBi có hàm tinhgia(). Hàm này có
thể nạp chồng (đa xạ) bởi vì có nhiều phương thức (công thức) tính giá bán
khác nhau tuỳ thuộc từng loại thiết bị. Tất cả các phương thức này đều thực
hiện một nhiệm vụ tinhgia(), nhưng được cài đặt với nội dung (các đoạn
chương trình) khác nhau. Hệ thống hướng đối tượng tự động chọn phương
thức tương ứng với ngữ cảnh của đối tượng để thực hiện.
Việc khai báo các toán tử hay các phương thức sử dụng từ khoá
operations của mỗi đối tượng thuộc một lớp đối tượng nhằm phản ánh các
hành vi được thực hiện trên mỗi đối tượng thuộc lớp đó. Mỗi phương thức
nhằm đặc tả tên của phương thức, các tham số kèm kiểu dữ liệu của chúng,
kiểu của phương thức và phần thân là phần chứa mã lệnh của phương thức.
Dưới đây là mẫu đặc tả cho một lớp thường được xây dựng như sau:
Class <class name>
Properties
{Các thuộc tính}
Operations
{Các phương thức}
End < class name>


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


7
Các đối tượng đều được đóng gói. Có nghĩa là cấu trúc bên trong của
đối tượng được che giấu, người dùng chỉ có thể biết được các phương thức
thực hiện của đối tượng đó. Các thao tác trên các giá trị của một đối tượng chỉ
được thực hiện thông qua các phương thức được định nghĩa trên đối tượng đó.
Đây chính là tính đóng gói thông tin trong mô hình dữ liệu hướng đối tượng.
Việc đóng gói thông tin độc lập với dữ liệu vật lý.
Các phương thức được gọi bởi các thông điệp. Một thông điệp về cơ
bản chỉ là một lời gọi đến một phương thức nào đó, trong đó tham số đích
được phân biệt và có cách xử lý riêng về cú pháp.
1.2. 1.2. Các mối quan hệ giữa các lớp
1.2.1. Sự phân cấp lớp
Các lớp trong mô hình hướng đối tượng có thể được tổ chức theo một
phân cấp lớp (Class hierarchy). Ta nói lớp C
2
nếu tập các thuộc tính và
phương thức là tập con của các tập thuộc tính và phương thức của C
2
đồng
thời tập các đối tượng thuộc C
2
là tập con của tập các đối tượng thuộc C
1
.
Điều đó có nghĩa rằng một lớp con sẽ kế thừa tất cả các đặc tính cho phép của
lớp cha, ngoài ra các lớp con còn có thể bổ sung các đặc tính khác, bổ sung

các hàm hay viết để một số hàm được kế thừa. Nguyên tắc này tạo thuận lợi
trong việc tái sử dụng các thuộc tính và các phương thức của lớp cha bên
trong các lớp con, cho phép tạo ra một hệ thống hiệu quả và tin cậy hơn.
1.2.2. 1.2.2. Sự kế thừa
Trong các mô hình hệ thống hướng đối tượng, một số hệ thống chỉ cho
phép một lớp con có tối đa một lớp cha, trong khi các hệ thống khác cho phép
một lớp con có thể có nhiều lớp cha. Một lớp con kế thừa các thuộc tính và
các phương thức từ chỉ một lớp cho được gọi là kế thừa đơn, ngược lại một
Formatted: Indent: First line: 0.5"
Formatted: cap1, Left, Line spacing: single,
No bullets or numbering
Formatted: cap2, Left, Line spacing: single
Formatted: cap2, Left, Line spacing: single,
No bullets or numbering

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


8
lớp con kế thừa các thuộc tính và phương thức từ nhiều hơn một lớp cha được
gọi là kế thừa bội.
Việc khai báo một mối quan hệ kế thừa giữa một lớp con và một lớp
cha được thực hiện bằng cách sử dụng từ khoá inherits kèm tên lớp cha khi
định nghĩa lớp con đó.
Ví dụ 1.2
Để định nghĩa lớp GiaoVien là lớp con của lớp Nguoi, theo cách này, ta
chỉ cần khai báo các thuộc tính và các phương thức được bổ sung cho lớp
GiaoVien.
Class GiaoVien
Inherits: Nguoi

Properties
Luong: Real ;
Tdo_Ngoaingu: Char ;
Chunhiem: String ;
Giang: String ;
Operations
…………
End GiaoVien ;
Thông thường, các hệ thống quy định nếu một lớp không có lớp cho thì
sẽ được xem như là lớp con của lớp Object được định nghĩa bởi hệ thống.
Quan hệ kế thừa tồn tại một số vấn đề sau:
 Vấn đề thứ nhất là tồn tại sự xung đột về tên giữa một lớp con và lớp
cha của nó, và giữa các lớp cha của một lớp. Nếu tên của một thuộc
tính hay một phương thức xung đột giữa một lớp con và lớp cha của nó
thì tên dùng trong lớp con được ưu tiên trước, tức thuộc tính và phương
thức đó của lớp cha không được kế thừa. Đối với trường hợp xung đột
Formatted: Indent: First line: 0.5"

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


9
về tên các thuộc tính và phương thức giữa các lớp cha, thông thường ta
chọn một lớp cha trên cơ sở thứ tự về quyền ưu tiên trước. Phần lớn các
hệ thống yêu cầu một thứ tự ưu tiên về tên giữa các lớp cha trong mô tả
sự phân cấp lớp, tuy nhiên một số hệ thống khác lại xác định thứ tự ưu
tiên này khi thực hiện.
 Vấn đề thứ hai là phạm vi tác động của tính kế thứa. Cách giải quyết
thứ nhất là phạm vi tác động của sự kế thừa yêu cầu sẽ kế thừa đầy đủ
hoặc cho phép kế thừa có chọn lọc. Kế thừa đầy đủ có nghĩa một lớp kế

thừa đầy đủ tất cả các thuộc tính và phương thức gây nên xung đột về
tên. Kế thừa có chọn lựa cho phép một lớp con không kế thừa một số
thuộc tính và phương thức từ các lớp cha. Mặc dù kế thừa có chọn lựa
có một số thuận lợi hơn nhưng hầu hết các hệ thống chấp nhận kế thừa
đầy đủ vì kế thừa có chọn lựa có sự khó khăn là phải lưu vết kế thừa.
Hướng thứ hai là cho phép kế thừa các thuộc tính cùng tên nhưng khác
đặc tả, cụ thể là đặc tả về kiểu.
 Vấn đề thứ ba là vi phạm nguyên tắc đóng gói. Nếu người dùng có thể
truy nhập trực tiếp đến các thuộc tính của một lớp cha từ một lớp con
như các phép toán đổi tên hoặc xoá một thuộc tính thì có thể làm mất
hiệu lực xác định trong lớp con mà chúng tham chiếu đến các thuộc
tính đó. Một hướng khắc phục là giới hạn việc truy cập đối với các
thuộc tính của một lớp thông qua các phương thức xác định chúng.
Tóm lại, một lược đồ CSDL hướng đối tượng có thể được mô tả bởi
một đồ thị phân cấp phức hợp. Cụ thể mỗi nút của đồ thị là tương ứng với một
lớp (kèm cấu trúc các thuộc tính). Nếu lớp C
1
là lớp con của lớp C
2
thì sẽ có
một cung đi từ nút C
1
đến nút C
2
(sử dung cung nét đậm trên hình vẽ). Ngoài
ra bên trong đồ thị phân cấp này người ra còn biểu diễn mối quan hệ giữa các
lớp. Nếu lớp C
1
có thuộc tính mối quan hệ A với kiểu dữ liệu là lớp C
2

, thì sẽ

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


10
có một cung xuất phát từ thuộc tính A và trỏ vào tên lớp C
2
(sử dụng cung nét
mỏng). Các thuộc tính đa trị được đánh dấu *. Bằng cách này ta có thể mô tả
trực quan một lược đồ CSDL hướng đối tượng.
1.3. Kết luận
Chương 1 trình bày các khái niệm về đối tượng, lớp, kiểu và sự kế thừa
. Đó là những kiến thức cần thiết để phục vụ cho các chương sau. Ta thấy
rằng CSDL hướng đối tượng tập chung xử lý về dữ liệu, nhằm làm cho
chương trình trở nên linh hoạt, tin cậy và dễ phát triển. Hơn thế tính đột phá
của cơ sở dữ liệu hướng đối tượng là chúng cho phép người thiết kế đặc tả
cấu trúc của các đối tượng cùng với các phương thức thực hiện trên đối tượng
đó.


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


11
Chƣơng 2: NGÔN NGỮ TRUY VẤN OQL VÀ ĐẠI SỐ ĐỐI
TƢỢNG
2.1. Ngôn ngữ truy vấn OQL
2.1.1. Khái niệm
OQL là ngôn ngữ truy vấn CSDL hướng đối tượng đã đề xuất trong

ODMG-93. Phiên bản cuối cùng của OQL trong ODMG-93 là siêu tập của
SQL92, được mô tả như là một phần của chuẩn ODMG [7], [10], [13], [14] .
OQL là ngôn ngữ truy vấn không đưa ra môi trường lập trình đầy đủ, chẳng
hạn như 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.
1- OQL được dùng để mô tả truy vấn và các thao tác của đối tượng.
2- Ngôn ngữ định nghĩa đối tượng (OQL): Sử dụng mã OQL để định
nghĩa giao diện với các kiểu đối tượng.
3- 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 trên CSDL đối tượng.
Trong (3) 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 CSDL, 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, điều này cho
phép kết quả của truy vấn 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

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


12

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.
2.1.2. Kiểu và lƣợc đồ suy dẫn 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 2.1. 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. 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 nút lá trong hình 2.1 là
các kiểu đặc trưng.













Hình 2.1. Sự phân cấp các kiểu trong CSDL

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
String
int/float
char
set
bag
list
array
int
float
Siêu kiểu
Siêu phi thủ tục
Kiểu hàm
Formatted: Tab stops: 0.74", Left
Formatted: Tab stops: 1.71", Left + 1.93",
Left + 3.57", Left
Formatted: Centered
Formatted: Font: Times New Roman, 12 pt
Formatted: Centered
Formatted: Font: Times New Roman, 12 pt
Formatted: Centered
Formatted: Font: Times New Roman, 12 pt
Formatted: Font: Times New Roman, 12 pt
Formatted: Centered
Formatted: Font: Times New Roman, 12 pt
Formatted: Font: Times New Roman, 12 pt
Formatted: Font: Times New Roman, 12 pt

Formatted: Font: Times New Roman, 12 pt
Formatted: Font: Times New Roman, 12 pt
Formatted: Centered
Formatted: Font: Times New Roman, 12 pt
Formatted: Font: Times New Roman, 12 pt
Formatted: Centered
Formatted: Font: Times New Roman, 12 pt
Formatted: Font: Times New Roman, 12 pt
Formatted: Font: Times New Roman, 12 pt
Formatted: Centered
Formatted: Font: Times New Roman, 12 pt
Formatted: Centered
Formatted: Font: Times New Roman, 12 pt
Formatted: Centered
Formatted: Font: Times New Roman, 12 pt
Formatted: Centered
Formatted: Font: Times New Roman, 12 pt
Formatted: Font: 12 pt
Formatted: Centered
Formatted: Font: Times New Roman, 12 pt
Formatted: Centered
Formatted: Font: 12 pt
Formatted: Font: Times New Roman, 12 pt
Formatted: Centered
Formatted: Font: Times New Roman, 12 pt

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


13

2.1.3. Thuộc tính và lƣợng từ
Biểu thức lôgic trong OQL [14] 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 logic là:
1. 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.
2. 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.
3. unique - kiểm tra tính duy nhất của các đối tượng trong lớp sưu tập
4. in - kiểm tra một đối tượng có thuộc về một lớp sưu tập hay không.
5. 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.
6. 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, exits và in là:
<Truy vấn>:: = forall <Truy vấn> in <Truy vấn> : <Truy vấn>
|exits <Tên> in <Truy vấn> : <Truy vấn>
|exits | unique (<Truy vấn>)
|<Truy vấn> <Phép toán so sánh> [some | any | all] <Truy
vấn>
Các vị từ trong truy vấn CSDL hướng đối tượng có thể được thiết lập bằng
cách sử dụng các thuộc tính tập hợp và phép toán thành viên in.

Formatted: Indent: First line: 1.13"
Formatted: Indent: Left: 1.13", Hanging:
4.38"

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên



14
Một số ví dụ về lƣợng từ:
Ví dụ 2.1
select f.hoten
from Khoa as f
where „Am nhac‟ in f.so_thich
Truy vấn trên có thể được viết lại bằng cách sử dụng lượng từ exits như
sau:
Ví dụ 2.2
select f.hoten
from Khoa as f
where exists so_thich = „Am nhac‟
Lượng từ với mọi Forall có thể được áp dụng cho các thuộc tính tập đối
với các dạng vị từ. Đường dẫn không chứa thuộc tính tập hợp gọi là đơn trị,
ngược lại gọi là giá trị - tập. Các vị từ có thể sử dụng trong các biểu thức
đường dẫn.
Ví dụ 2.3
Select s.hoten
From SV chua TN as s
Where s.exists Khoahoc.DaiHoc.ten_nganh = “CNTT”
Biểu thức đường dẫn có thể có nhiều hơn một lượng từ với sự kết hợp
bất kỳ giữa exists và forall.
Ví dụ 2.4
Select f.tenkhoa
From Khoa as f
Where f.exists gvhd.forall Khoahoc.DaiHoc.ten_nganh = „CNTT‟



Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


15
2.1.4. 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.
Ví dụ 2.5
Select s.hoten
from SinhVienTN as s, s.gvdh 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.
2.1.5. Phƣơng thức tham chiếu
Phương thức trong truy vấn OQL được thể hiện qua 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. Ví 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 30000 sinh viên và false nếu ngược lại.3- Các ngô
2.2. Đại số đối tƣợng
Các phép toán đại số đối tượng được chia làm sáu loại: phép toán đối
tượng, phép toán bộ, phép toán tập hợp, phép toán “ túi” phép toán danh sách
và phép toán mảng [16].
Formatted: cap2, Left, Line spacing: single
Formatted: Indent: First line: 0.5"

Formatted: Font: Italic
Formatted: Font: Italic

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


16

2.2.1. Phép toán đối tƣợng
Mỗi đối tượng được biểu diễn như một bộ ba (oid, TênLớp, GiaTrị),
oid là định danh của đối tượng, TênLớp là kiểu của đối tượng và Giá trị của
đối tượng do người sử dụng định nghĩa thường là kiểu bộ. Có ba phép toán
đối tượng:
 Chiếu theo định danh (
0
): Phép toán 
0
nhận vào một đối tượng
và trả về định danh của đối tượng.
 Chiếu theo giá trị (
v
): Phép toán 
v
nhận vào một đối tượng và
trả về giá trị của đối tượng.
 Chiếu theo đối tượng (
D
): Phép toán 
D
nhận vào một định danh

đối tượng và trả về đối tượng có định danh tương ứng.
2.2.2. Phép toán bộ (tuple)
Thiết lập bộ: tuple(a
1
: v
1
, …, a
n
: v
n
). Phép toán tuple nhận vào các
thuộc tính và các cặp giá trị (a
1
: v
1
) và trả về một bộ (a
1
, …, a
n
).
Chiếu theo bộ (
(Attrs)
): phép toán 
(Attrs)
nhận một bộ và trả về một bộ
con với tên các thuộc tính được mô tả trong tập Attrs.
Trích xuất giá trị thuộc tính (
(Attr)
): Nhận vào một bộ và trả về giá trị
của thuộc tính mô tả Attr.

Ghép bộ (tuple_ cat): Nhận vào hai bộ và nối chúng vào một bộ mới.
Phép toán này dùng thay thế tích Đề các .
2.2.3. Phép toán tập hợp (set)
Thiết lập tập hợp (set() hoặc {} ): khởi tạo một tập từ một số phần tử.
Hợp của hai tập hợp: set_union.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


17
Hiệu của hai tập hợp: set_diff.
Chọn trên tập hợp (
s
s.f
): Phép toán 
s
s.f
nhận vào một tập (thường là
một tập đối tượng) và trả về một tập (đối tượng) sao cho mỗi phần tử ở tập kết
quả đều thoả mãn điều kiện của biểu thức f.
Ví dụ 2.6
Cho A = {2, 6, 4, 9}, 
s
s.s > 5
(A) = {6, 9}.
Ký hiệu “” trong “s” được dùng như một biến đếm các phần tử trong
tập đã cho . Với tập đã cho là một lớp, s là một biến thể hiện lớp.
Làm phẳng tập (set_ flat): phép toán set_flat nhận vào một tập các tập
và trả về một tập chứa phần hợp của các phần tử của các tập lồng nhau.
Ví dụ 2.7

set_flat({1, 2, 3}, {2, 3, 4}, {4, 5}) ={1, 2, 3, 4, 5}.
Áp dụng hàm trên tập ( set_apply
s.e
): phép toán set_apply
s.e
nhận vào
một tập và áp dụng biểu thức đại số e cho mỗi phần tử trong tập.
Ví dụ 2.8
A = {{1, 2, 3}, {2, 3, 4}, {4, 5}} là một tập các tập, thì set_apply
s.A
set_diff {3}
(A) = {{1, 2}, {2, 4}, {4, 5}}. Phép toán set_apply và chiếu bộ (hoặc
trích xuất giá trị thuộc tính) thường được sử dụng như phép chiếu trên một tập
các bộ. Ví dụ, xét truy vấn “Cho biết tên và tuổi của các sinh viên” ta có:

)(_
))((.
),(
SinhVienapplySet
svs
tuoihoten


2.2.4. Phép toán trên kiểu “túi” (bag)
Các phép toán trên kiểu dữ liệu “túi” gồm có: thiết lập “túi”, hợp, hiệu,
chọn, làm phẳng, áp dụng hàm trên “túi”: bag, bag_union, bag_diff, 
b
s.f,
bag_flat, bag_apply và chuyển đổi một “túi” về tập: bagtoest (chuyển đổi một
“ túi”, về tập hợp bằng cách loại bỏ các trùng lặp trong “túi”).


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


18
2.2.5. Phép toán trên danh sách (list)
Thiết lập danh sách, lấy phần tử đầu tiên, lấy phần tử cuối cùng, ghép
danh sách chọn làm phẳng, áp dụng hàm là: list, first, last, list_cat, 
l
s.f,
list_flat, list_apply
s.e
.
2.2.6. Phép toán trên mảng (array)
Thiết lập mảng, ghép mảng, áp dụng: array, array_cat, array_apply
s.e
.
Trích xuất phẩn tử (
i
): phép toán này trả về phần tử thứ i trong mảng
đã cho
Chiếu mảng (
i,j
), j>i: phép toán trả về một mảng con chứa các phần tử
có chỉ số từ i đến j của mảng đã cho.
2.3. Kết luận
Ngôn ngữ truy vấn đối tượng OQL trên mô hình ODMG, sử dụng các
phép toán đại số đối tượng trong OQL để viết lại các truy vấn đối tượng dưới
dạng các biểu thức đại số.
Ngôn ngữ truy vấn đối tượng OQL và đại số đối tượng tương ứng được

chọn làm cơ sở cho những nghiên cứu, mở rộng các thuật toán tối ưu hoá truy
vấn đối tượng và là công cụ minh hoạ cho các thuật toán tối ưu hoá truy vấn
được đề xuất trong chương 3, như chuyển đổi truy vấn đối tượng OQL sang
truy vấn hệ SQL, biểu diễn tương đương giữa truy vấn OQL và biểu thức đại
số đối tượng, sắp xếp thứ tự ưu tiên thực hiện của các phép toán đại số đối
tượng, từ đó mở rộng thuật toán tối ưu hoá truy vấn đối tượng bằng phương
pháp biến đổi biểu thức đại số đối tượng…vv
Formatted: cap1, Left, Indent: First line: 0",
Line spacing: single
Formatted: Indent: First line: 0", Tab stops:
0.5", Left
Formatted: cap0, Left, Indent: First line: 0",
Line spacing: single

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


19
Chƣơng 3: TỐI ƢU HOÁ TRUY VẤN TRONG CƠ SỞ DỮ
LIỆU HƢỚNG ĐỐI TƢỢNG
Xuất phát từ ý tưởng sử dụng ký pháp siêu đồ thị của J.D.Ullman [10]
và Han[15] đề xuất trong tối ưu hoá truy vấn quan hệ, chúng ta mở rộng trên
CSDL hướng đối tượng với định nghĩa của siêu đồ thị kết nối đối tượng (sau
đây gọi tắt là siêu đồ thị). Mặt khác, trên cơ sở của thuật toán tối ưu truy vấn
của wong-youssefi, chúng ta bổ sung việc xử lý các yếu tố kết nhập trong truy
vấn - Mở rộng thuật toán tối ưu hoá truy vấn bằng việc xây dựng thuật toán
hình thức rút gọn siêu đồ thị nhằm ước lượng chi phi xử lý truy vấn cho truy
vân đối tượng.
3.1. Giới thiệu
Một trong những lĩnh vực quan trọng được đề cập trong CSDL hướng

đối tượng là tối ưu hoá truy vấn hướng đối tượng. Khi thực thi một truy vấn,
có thể có nhiều phương án mà hệ thống CSDL cho phép xử lý và sản sinh các
câu trả lời tương đương, nhưng khác nhau trong chi phí thực hiện, tức là tổng
thời gian cần để thực hiện một truy vấn. Vấn đề đặt ra là việc lựa chọn
phương án nào để có tổng thời gian thực hiện là nhỏ hơn? Trong những năm
gần đây, vấn đề tối ưu hoá truy vấn hướng đối tượng được nhiều nhà nghiên
cứu quan tâm. Các kỹ thuật tối ưu hoá truy vấn được phát triển có tính kế thừa
từ mô hình CSDL quan hệ, như tối ưu hoá trên các biểu thức đại số [9] và các
giải thuật QUEL/SQL bằng siêu đồ thị của J.D Ullman [10] và Han [15]. Siêu
đồ thị là sự tổng quát hoá của một đồ thị, trong đó các cạnh tạo nên khi kết
nối các đỉnh bất kỳ. Một cách hình thức, một siêu đồ thị H là một cặp H = (X,
E), trong đó X là tập hữu hạn các phần tử, được gọi là các nút hay các đỉnh và
E là một tập của các tập con không rổng thuộc X được gọi là các siêu cạnh
hay các liên kết đỉnh. Vì vậy, E là một tập con thuộc P(X)\{Ø}, trong đó P(X)
là tập lực lượng của X. Cụ thể ta có siêu đồ thị được thể hiện như sau:

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


20

Hình 3.1 Siêu đồ thị H
Siêu đồ thị H gồm:
X= {v
1
, v
2
, v
3
, v

4
, v
5
, v
6
,

v
7
}
E = {e
1
, e
2
, e
3
, e
4
} = {{v
1
, v
2
, v
3
}, {v
2
, v
3
}, {v
3

, v
5
, v
6
}, {v
4
}}.
Trên cơ sở đó, chúng ta đưa ra khái niệm siêu đồ thị kết nối đối tượng
để mở rộng phương pháp biểu diễn này trong ngôn ngữ truy vấn đối tượng
trong OQL. Từ đó, đề xuất các thuật toán ước lượng các siêu cạnh và thuật
toán rút gọn siêu đồ thị kết nối đối tượng.
3.1.1. Siêu đồ thị kết nối đối tƣợng
Chúng ta định nghĩa một cách hình thức siêu đồ thị kết nối đối tượng
như sau:
Định nghĩa 3.1: [7] Siêu đồ thị kết nối đối tượng là một bộ sáu H = (C
H
, V
H
,
E
H
, L
H
,

s
H
,

lb

H
) trong đó:
(ii)(i) C
H
là tập hữu hạn các lớp tham gia trong truy vấn.
(iii)(ii) V
H
là tập hữu hạn các nút.
v
1
e
1
V
2
e
2
V
3
e
3
V
5
V
6
e
4
V
4
V
7


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


21
(iv)(iii) L
H
là tập hữu hạn các nhãn.
(v)(iv) E
H
= E
C
 E
Q
- tập hữu hạn các siêu cạnh, trong đó E
C
E
Q
lần
lượt là tập các siêu cạnh biểu diễn các lớp đối tượng và các thành
phần của truy vấn.
(vi)(v) s
H
: V
H
-> E
H
là ánh xạ khởi tạo các siêu cạnh từ tập các nút.
(vii)(vi) Lb
H

: E
H
-> L
H
là hàm gán nhãn cho siêu cạnhsao cho 
e

E
H
thì lh
H
(e)  L
H

Các truy vấn được viết bằng ngôn ngữ truy vấn OQL (ODMG-93) [3],
[8] rất phong phú và đa dạng, chúng ta giới thiệu một tập con của các truy vấn
viết bằng ngôn ngữ OQL là các truy vấn lồng.
3.1.2. Ví dụ
Ví dụ 3.1: Xét siêu đồ thị kết nối đối tượng biểu diễn truy vấn sau:
Define c
2
as d
Select A
From c
1
as e
1
, c
2
as e

2
, c
3
as e
3

Where e
1
.A = e
2
.F And (e
1
.A + e
1
.B > e
3
.D) And (e
3
.E IN (d)) And
(e
1
.C=c)







c

1
„=c‟


C

A
B
C
head

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


22



c
3
IN
c
2


Hình 3.2 Siêu đồ thị kết nối đối tƣợng của ví dụ 3.1
Trong đó ta có:
Đối với điều kiện “c
1
.A = c

2
.F” chúng ta thực hiện “trộn” hai nút đặt
nhãn chúng là “A”.
C
H
= {c
1
, c
2
, c
3
}, c
1
= (A, B, C), c
2
= (G, H) và c
3
= (D, E, F) là các lớp
đối tượng.
V
H
= {A, B, C, D, E, F, G, H} là tập các nút L
H
= {e
1
, e
2
, e
3
, f

1
, f
2
,
“head”}
E
H
= E
C
 E
Q
, với E
C
gồm tập các siêu cạnh được gán nhãn {c
1
, c
2
, c
3
}
biểu diễn các lớp c
1
, c
2
và c
3
. Và E
Q
có các siêu cạnh biểu diễn lần lượt là các
kết quả của truy vấn, biểu thức điều kiện truy vấn tương ứng có nhãn là {f

1
, f
2
,
“head”}.
3.2. Tối ƣu hoá truy vấn hƣớng đối tƣợng bằng siêu đồ thị kết nối
3.2.1. Siêu đồ thị kết nối [7], [6], [15]
Môt siêu đồ thị H = (V, E) chứa một tập các đỉnh V và tập các siêu cạnh
E. Trong đó, tập đỉnh V tương ứng với tập các mục dữ liệu (thuộc tính) và
mỗi siêu cạnh e

E tương ứng với một tập các mục dữ liệu có liên quan với
nhau (lớpđiều kiện). Siêu đồ thị là sự mở rộng của một đồ thị mà mỗi siêu
cạnh của nó được kết nối từ tập các nút trong V. Trước hết, chúng ta xét biểu

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


23
thức điều kiện trong mệnh đề Where, các biểu thừc điều kiện gồm các dạng
sau:
A = a (3.1)
A = B (3.2)
A  B,   {<, , , >, } (3.3)
A  B,   {, , , , } (3.4)
A  B,   {is, in, union, diff, forall, exits,…} (3.5)
Trong đó, A, B là thuộc tính của các lớp và a là hằng.
Truy vấn OQL đơn chỉ có một khối select…from…where (SFW); Truy vấn
OQL lồng có nhiều hơn 1 khối SFW. Mỗi khối SFW được biểu diễn bằng siêu
đồ thị kết nối như sau:

 Mỗi nút là một thuộc tính thuộc một lớp C
i
xác định trong tập hữu hạn
các lớp có trong CSDL đề ra. Đồ thị có các cạnh là các tập với số lượng
nút hữu hạn, ta gọi một cạnh như vậy là siêu cạnh. Tập hợp các siêu
cạnh này tạo nên một siêu đồ thị và siêu đồ thị như vậy được gọi là siêu
đồ thị kết nối. Nếu hai lớp C
i
và C
j
đều có cùng một số các thuộc tính
kế thừa từ một siêu lớp nào đó, hoặc chúng cùng kế thừa tất cả các
thuộc tính từ một siêu lớp, chúng ta vẫn tạo riêng cho các thuộc tính
này các nút khác nhau.
 Các siêu cạnh của siêu đồ thị kết nối được tạo thành từ các biểu thức
điều kiện và các lớp C
i
như sau:
Đối với mỗi lớp C
i,
có một siêu cạnh chứa tất cả các nút là các thuộc
tính của C
i,
ta gọi là siêu cạnh đối tượng và được vẽ bằng một đường liền nét
khép kín bao quanh tất cả các nút của siêu cạnh.
Đối với mỗi biểu thức điều kiện dạng (3.3) hay (3.4), chúng ta sẽ tạo ra
một siêu cạnh chứa tất cả các thuộc tính có mặt trong biểu thức. Những siêu

×