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.. Chương 1 trình bày kiến thức nền tảng của mô hình dữ
Trang 1Số 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
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Thái Nguyên - 2010
Trang 2Số 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 3Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
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
Trang 4tượ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 5Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
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à
Trang 6nhữ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ố
Các lớp trong C cũng là các kiểu
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 7Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
5
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 8Thao 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 9Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
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 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 10lớ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 11data error !!! can't not
read
Trang 12data error !!! can't not
read
Trang 13data error !!! can't not
read
Trang 14data error !!! can't not
read
Trang 15data error !!! can't not
read
Trang 17data error !!! can't not
read
Trang 18data error !!! can't not
read
Trang 19data error !!! can't not
read
Trang 20data error !!! can't not
read
Trang 21data error !!! can't not
read
Trang 22data error !!! can't not
read
data error !!! can't not
Trang 23data error !!! can't not
read
data error !!! can't not
read
Trang 24data error !!! can't not
read
data error !!! can't not
Trang 26read
Trang 27data error !!! can't not
read