1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

60 322 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 60
Dung lượng 761,09 KB

Nội dung

Đư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.. Cú pháp của

Trang 1

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn



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

Trang 2

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

ĐẠ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

Trang 3

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

Trang 4

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

Trang 5

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à

Trang 6

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á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 v1, v2, …, vn là các giá trị và a1, a2, …, an là các tên thuộc tính, thì [a1: v1, a2 : v2, …, an : vn] là một giá trị được gọi là giá trị bộ

 Nếu v1, v2,…, vn là các giá trị phân biệt thì {v1, v2, …, vn} 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ố

 Nếu T1, T2,…, Tn là các kiểu và a1, a2, , an là các tên thuộc tính phân biệt của C thì [a1: T1, a2: T2, , an: Tn ] cũng là một kiểu còn gọi là kiểu

bộ

Trang 7

 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ị

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"

Trang 8

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>

Trang 9

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 C2 nếu tập các thuộc tính và

thời tập các đối tượng thuộc C2 là tập con của tập các đối tượng thuộc C1

Đ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

Trang 10

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

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:

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"

Trang 11

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

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

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 C1 là lớp con của lớp C2 thì sẽ có một cung đi từ nút C1 đến nút C2 (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 C1 có thuộc tính mối quan hệ A với kiểu dữ liệu là lớp C2, thì sẽ

Trang 12

có một cung xuất phát từ thuộc tính A và trỏ vào tên lớp C2 (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

đó

Trang 13

Chương 2: NGÔN NGỮ TRUY VẤN OQL VÀ ĐẠI SỐ ĐỐI

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

Trang 14

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/ B ag List/array

S tring i nt/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

Trang 15

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 exis ts - 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"

Trang 16

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

Trang 17

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

Trang 18

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

Trang 19

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

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

_ . ( ( ))( )

) ,

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”)

Trang 20

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

Trang 21

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

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:

Trang 22

Hình 3.1 Siêu đồ thị H

Siêu đồ thị H gồm:

X= {v1, v2 , v3, v4 , v5, v6, v7}

E = {e1, e2, e3, e4} = {{v1, v2, v3}, {v2, v3}, {v3, v5, v6}, {v4}}

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 = (CH, VH,

Trang 23

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

(iv)(iii) LH là tập hữu hạn các nhãn

(v)(iv) EH = EC  EQ - tập hữu hạn các siêu cạnh, trong đó ECEQ 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) sH: VH -> EH là ánh xạ khởi tạo các siêu cạnh từ tập các nút (vii)(vi) LbH: EH -> LH là hàm gán nhãn cho siêu cạnhsao cho e

EH thì lhH(e)  LH

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

Trang 24

VH = {A, B, C, D, E, F, G, H} là tập các nút LH = {e1, e2 , e3, f1, f2,

“head”}

EH = EC EQ, với EC gồm tập các siêu cạnh được gán nhãn {c1, c2, c3} biểu diễn các lớp c1, c2 và c3 Và EQ 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à {f1, f2,

“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à

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

Trang 25

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

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 Ci 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 Ci và Cj đề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 Ci như sau:

Đối với mỗi lớp Ci, 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 Ci, 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

Trang 26

cạnh này được gọi là siêu cạnh điều kiện và chúng được biểu thị bằng đường nét chấm khép kín

Điều kiện có dạng (3.1) trong siêu đồ thị được gán nhãn nút là “A=a” Biểu thức điều kiện có dạng “A=B” (dạng 3.2) với A, B là các thuộc tính được kế thừa từ một siêu lớp nào đó) thì chúng ta “trộn” các nút A và B lại với nhau đặt nhãn chung là tên của một trong hai thuộc tính

Một lớp trong CSDL hướng đối tượng hoặc lớp kết quả thu được từ

mệnh đề Select được biểu diễn bằng một siêu cạnh đối tượng hay gọi là siêu

cạnh đỉnh tương ứng Siêu cạnh đỉnh này được bao trong một đường liền nét

khép kín và gán nhãn là “head”

Nếu có hai điều kiện trên cùng một tập thuộc tính hoặc một điều kiện trên một tập thuộc tính của một lớp, chúng ta phải đặt tên cho mỗi siêu cạnh

để có thể phân biệt được chúng

Siêu cạnh kết hợp là một biểu thức gồm các thuộc tính và các lượng từ

{IS, IN, UNION, FORALL, EXISTS,…} tham gia Siêu cạnh kết hợp được

vẽ bằng đường nét rời khép kín bao quanh các thuộc tính có liên quan Các siêu cạnh kết hợp được gán nhãn là IS, IN, UNION, FORALL, EXISTS,

…vv

3.2.1.1 Thuật toán khởi tạo siêu đồ thị

Chúng ta biểu diễn hình thức của một siêu đồ thị đối tượng là H = (E1,

E2 , …, En) với Ei (i = 1, …, n) là siêu cạnh thuộc siêu đồ thị H Lược đồ đối tượng là S = (s1, …, sm), sj là các lớp trong S và truy vấn đối tượng QE = (s1,

s2, …sr, R, p1,…, pk) với sj (j = 1, …, r) là các lớp tham gia truy vấnR là lớp/kiểu kết quả của truy vấn và pt (t = 1, …, k) là các biểu thức điều kiện trong mệnh đề where Và thuật toán khởi tạo siêu đồ thị không chứa truy vấn lồng được xây dựng như sau:

Trang 27

Thuật toán 3.1: Khởi tạo siêu đồ thị chứa truy vấn lồng

Vào: Lược đồ đối tượng S = (s1, …, sm)

Truy vấn đối tượng QE = (s1, s2, …sr , R, p1, p2,…, pk)

Ra: Siêu đồ thị H

Phương pháp:

(1) SC:=  // tậpchứa các siêu cạnh đối tượng của siêu đồ thị H

(2) While sj (s1, …, sr) do

(3) if (sj là siêu lớp gốc) then //không kế thừa từ các siêu lớp khác

(4) Khởi tạo siêu cạnh đối tượng e = sH ({sj}) và nhãn IbH(e)

(5) else if (sj là lớp kế thừa đơn hay kế thừa bội) then

(6) Xử lý trường hợp xung đột về tên với các thuộc tính kế thừa

(7) Khởi tạo lớp sj chứa các thuộc tính của lớp sj và các thuộc tính kế thừa (8) Khởi tạo siêu cạnh đối tượng e = sH({sj} và nhãn IbH(e)

Thuật toán 3.2: Khởi tạo siêu đồ thị của truy vấn đối tượng lồng

Trang 28

Vào: Lược đồ đối tượng S = (s1,…,sm)

Truy vấn đối tượng QE = (s1,…sr, R, p1,…, pk) tập TT  {is, in, union, diff, forall, exists, …}

Ra: Siêu đồ thị H

Phương pháp:

(1) H:= ;

(2) While (mỗi truy vấn con QEi trong truy vấn QE) do

(3) Khởi tạo siêu đồ thị Hi với mỗi QEi (thuật toán 3.1)

(4) H:= H  Hi

(5) While (với mỗi toán tử ti TT) do

(6) Khởi tạo siêu cạnh kết nhập g có nhãn là ti, có vế trái là thuộc tính

tham chiếu và vế phải là một truy vấn hay một vùng dữ liệu thuộc lớp

(7) H:= H  g

Truy vấn lồng OQL được kết nối từ các siêu đồ thị của các khối SFW bởi các siêu cạnh kết hợp

3.2.1.2 Biểu diễn kết nối trong OQL

Phép kết nối trong ngôn ngữ truy vấn CSDL hướng đối tượng OQL được biểu diễn bằng 3 dạng thức kết nối là kết nối hàm (kết nối ẩn dùng ký hiệu “.”); kết nối đồng nhất tường minh (các thực thể được so sánh với nhau một cách trực tiếp) và kết nối quan hệ truyền thống là kết nối dựa vào giá trị

Trang 29

class SINH_VIEN inherits NHAN_SU

type tuple ( gvhd: GIANG_VIEN;

class GIANG_VIEN inherits NHAN_SU

type tuple ( bomon: string[20];

Ví dụ 3.3: (kết nối hàm) cho biết tên khoa và tên những sinh viên tham gia

khoá học “CS565”

Select (e.hoten, e.tenkhoa.tenkhoa)

Trang 30

where e.khoahoc = “cs565” and e.tenkhoa IS (d)

Trong đó, giá trị của thuộc tính tham chiếu e.tenkhoa được so sánh trực tiếp bằng toán tử IS với biến vùng d Toán tử IS được dùng để so sánh các tham chiếu, nó trả về giá trị là true nếu hai tham chiếu trỏ đến cùng một đối tượng Toán tử ISNOT được sử dụng để kiểm tra hai tham chiếu không quy

về cùng một đối tượng

Thuộc tính tenkhoa là thuộc tính có kiểu KHOA, phép kết nối hàm được biểu diễn bằng một siêu cạnh kết hợp (IS) Truy vấn trên được biểu diễn bằng siêu đồ thị kết nối như sau:

head “=”CS565””

head

IS

IS

Hình 3.3 Siêu đồ thị kết nối của ví dụ 3.3

Ví dụ 3.4: (Kết nối dựa vào giá trị) Cho biết họ tên sinh viên và họ tên giáo

viên hướng dẫn đang học tập và làm việc tại “ĐHKH”?

select s.hoten, s.gvhd

KHOA

Hoten tenkhoa

tenkhoa SINH_VIEN

Ngày đăng: 03/10/2014, 20:31

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w