1
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ
PHẠM THỊ CHANH
TỐI ƢU HÓA TRUY VẤN CƠ SỞ DỮ
LIỆU HƢỚNG ĐỐI TƢỢNG
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
HÀ NỘI – 2014.
2
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ
PHẠM THỊ CHANH
TỐI ƢU HÓA TRUY VẤN CƠ SỞ DỮ
LIỆU HƢỚNG ĐỐI TƢỢNG
Ngành: CÔNG NGHỆ THÔNG TIN
Chuyên ngành : HỆ THỐNG THÔNG TIN
Mã số: 60480104
bạn bè đã ƣu ái, giúp đỡ, động viên, khích lệ để em hoàn thành luận văn này.
Hà nội, ngày ….., tháng ….., năm 2014
5
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
CÁC KÝ HIỆU
Ký hiệu
STT
Diễn giải
1
Att (Attribute)
Thuộc tính
2
R
Tập thuộc tính trong mệnh đề Select
3
E
Siêu đồ thị
9
Mid (Method Identify)
Định danh phƣơng thức
10
Odb (Object database)
Cơ sở dữ liệu đối tƣợng
11
Dom (Domain)
Miền trị
12
Obj (Object)
Đối tƣợng
13
Val (Value)
CSDL
Cơ sở dữ liệu
2
OID (Object Identifier)
Định danh đối tƣợng
3
UML (Unified Modeling Language)
Ngôn ngữ mô hình hợp nhất
4
ODMG
(Object Database Management Group)
Nhóm quản trị CSDL đối tƣợng
5
ODL(Object Definition Language)
Ngôn ngữ định nghĩa đối tƣợng
6
6
DANH MỤC CÁC THUẬT NGỮ
Biến thể hiện dựa trên giá trị
Biến thể hiện lớp
Đối tƣợng phức hợp
Value based instance variable
Class instance varSSiable
Composite object
Kiểu đặc trƣng
Kiểu dữ liệu “túi”, đa tập là kiểu sƣu tập
Specific types
Bag
Kiểu tổng quát
General types
Lƣợc đồ đối tƣợng
Mối quan hệ kế thừa
Mối quan hệ kết nhập
Object schemas
Inheritance relationship
Aggregation relationship
Phân cấp lớp
Thuộc tính đơn trị
Thuộc tính đa trị
Thuộc tính phức hợp
Tính đa hình
Tính đóng gói thông tin
Tính kế thừa bội
Single attribute
Single-valued attribute
Multivalued attribute
Composite attribute
Polymorphism
Encapsulation
Multiple inheritance
7
DANH MỤC CÁC HÌNH VẼ
Hình 1.1. Sự phát triển của các mô hình dữ liệu ........................................................ 4
Hình 1.2. Mô hình dữ liệu hƣớng đối tƣợng nguyên mẫu .......................................... 6
Hình 1.3. Kế thừa đơn................................................................................................. 14
Hình 1.4. Kế thừa bội từ hai lớp khác nhau và có lớp cơ sở chung ........................... 14
Hình 1.5. Kế thừa bội không có lớp cơ sở chung ....................................................... 15
Hình 1.6. Sự phân cấp các kiểu trong OQL ................................................................ 20
Hình 1.7. Lƣợc đồ CSDL Quản lý Nhân viên ............................................................ 21
Hình 2.1. Siêu đồ thị H ............................................................................................... 28
Hình 2.2. Siêu đồ thị kết nối đối tƣợng của ví dụ 2.1 ................................................. 30
Hình 2.3. Siêu đồ thị kết nối của ví dụ 2.2 ................................................................. 34
Hình 2.4. Siêu đồ thị kết nối của ví dụ 2.3 ................................................................. 35
nghệ thông tin. Từ khi ra đời cho đến nay, những nghiên cứu về Cơ sở dữ liệu
(CSDL) đã không ngừng phát triển và ngày càng trở nên cần thiết trong các ứng dụng
về CNTT.
CSDL đã trở thành một bộ phận chủ yếu không thể thiếu trong hầu hết các hệ
thống thông tin. Hiện nay, các hệ thống thông tin hay các CSDL đều chủ yếu sử dụng
một kiểu CSDL truyền thống đó là CSDL quan hệ, một trong những CSDL đã đƣợc
phát triển và ứng dụng rộng rãi. Tuy nhiên với sự phát triển nhanh chóng của CNTT,
CSDL quan hệ đã dần bộc lộ những yếu điểm và nhiều hạn chế, đặc biệt là trong việc
xây dựng các ứng dụng cơ dữ liệu phức tạp, dữ liệu đa chiều, dữ liệu có nhiều mối
quan hệ, hay các dữ liệu đa phƣơng tiện nhƣ: hình ảnh, âm thanh, video,…
Ngày nay, phƣơng pháp hƣớng đối tƣợng đƣợc sử dụng rất phổ biến trong lĩnh
vực phát triển phần mềm, vì cho phép lập trình viên tạo ra các đối tƣợng trong code
trừu tƣợng hóa các đối tƣợng thực tế trong cuộc sống. Trong thế giới thực, đối tƣợng
là thực thể tồn tại nhƣ con ngƣời, xe, máy tính,…Trong ngôn ngữ lập trình, đối tƣợng
có thể là màn hình, điều khiển,…Kỹ thuật hƣớng đối tƣợng là kỹ thuật nhằm vào sự
tƣơng tác giữa các đối tƣợng. Mỗi đối tƣợng có những thuộc tính (thông tin lƣu trữ),
những phƣơng thức xác định các chức năng của đối tƣợng và các đối tƣợng chỉ đƣợc
tạo ra và tồn tại trên bộ nhớ chính, còn việc lƣu trữ và tƣơng tác dữ liệu dƣới dạng
các đối tƣợng trên bộ nhớ thứ cấp vẫn chủ yếu kế thừa từ mô hình quan hệ truyền
thống. Hiện đã có rất nhiều kết quả nghiên cứu, cho phép chuyển đổi qua lại giữa các
bảng trong mô hình quan hệ sang tập các đối tƣợng tƣơng ứng. Mặc dù kế thừa đƣợc
tính năng mạnh của hƣớng đối tƣợng, nhƣng việc chuyển đổi qua lại này càng làm
cho mã lệnh của chƣơng trình phức tạp thêm, đồng thời hiệu suất chƣơng trình cũng
giảm đi rõ rệt.
CSDL hƣớng đối tƣợng là giải pháp cho những hạn chế của CSDL quan hệ.
Trong CSDL hƣớng đối tƣợng, dữ liệu đƣợc lƣu trữ dƣới dạng các đối tƣợng của
ngôn ngữ lập trình nên cho phép lƣu trữ đƣợc các dạng dữ liệu phức tạp, lƣợng thông
tin lớn, đa chiều, đa quan hệ, hay có thể mở rộng lƣu trữ các dữ liệu đa phƣơng tiện
nhƣ hình ảnh, âm thanh, video. Trên thế giới, một số hệ quản trị cơ sở dữ liệu hƣớng
đối tƣợng đƣợc phát triển bởi các nhà phân phối sản phẩm thƣơng mại, tại các phòng
thức đại số lồng thì việc định giá sẽ cho chi phí chƣa đạt hiệu quả nhƣ mong muốn.
Vì vậy, luận văn tập trung nghiên cứu việc làm phẳng các truy vấn con trong truy vấn
lồng nhờ phương pháp dùng ký pháp siêu đồ thị để biểu diễn và tối ưu hoá các truy
vấn trong CSDL hướng đối tượng. Từ đó, xây dựng thuật toán ƣớc lƣợng chi phí xử
lý truy vấn đối tƣợng trên cơ sở ƣớc lƣợng các siêu cạnh trong siêu đồ thị để đạt đƣợc
mức chi phí nhỏ hơn cho mỗi truy vấn. Chính vì lý do trên mà tôi chọn đề tài “TỐI
ƢU HOÁ TRUY VẤN CƠ SỞ DỮ LIỆU HƢỚNG ĐỐI TƢỢNG” làm luận văn
tốt nghiệp.
Mục tiêu của luận văn là nghiên cứu các mô hình CSDL hƣớng đối tƣợng để
giải bài toán tối ưu hóa truy vấn đối tượng. Đây là vấn đề luôn đƣợc các nhà khoa
11
học quan tâm nghiên cứu. Trong khuôn khổ của luận văn, tôi tập trung nghiên cứu
vào phƣơng pháp tối ƣu hóa truy vấn mà hay đƣợc sử dụng nhất đặc biệt là đối với
các truy vấn lồng đó là sử dụng phƣơng pháp siêu đồ thị. Nghiên cứu các đặc trƣng
trong mô hình dữ liệu hƣớng đối tƣợng; Tìm hiểu các kỹ thuật xử lý truy vấn, sự biểu
diễn câu truy vấn bằng ngôn ngữ truy vấn đối tƣợng OQL; Giới thiệu ký pháp siêu đồ
thị [10] trong biểu diễn truy vấn. Từ đó, sử dụng phƣơng pháp này để tối ƣu hóa truy
vấn cho lớp các truy vấn lồng trong CSDL hƣớng đối tƣợng [3].
Với mục tiêu của luận văn nhƣ vậy, bố cục của luận văn gồm: phần mở đầu, ba
chƣơng nội dung và phần kết luận.
Chƣơng 1: Giới thiệu các khái niệm, định nghĩa cơ bản nhƣ: lớp, đối tƣợng,
định danh đối tƣợng trong mô hình CSDL hƣớng đối tƣợng; kế đến, trình bày sự mở
rộng ngữ nghĩa của mô hình nhƣ hệ thống phân cấp và quan hệ kế thừa. Tìm hiểu kỹ
thuật xử lý truy vấn và các thay đổi so với kỹ thuật xử lý truy vấn quan hệ. Để thực
hiện đƣợc các câu truy vấn đối tƣợng một cách hiệu quả và tiếp tục nghiên cứu các
vấn đề về tối ƣu hoá truy vấn trong các CSDL hƣớng đối tƣợng, ngôn ngữ truy vấn
OQL là ngôn ngữ truy vấn đƣợc chọn giới thiệu trong chƣơng này.
Chƣơng 2: Trình bày khái niệm siêu đồ thị kết nối đối tƣợng. Sau đó sử dụng ký
chóng, hiệu quả. Nhiều mô hình CSDL nhƣ mô hình phân cấp (Hierarchical model),
mô hình mạng (Network model), mô hình quan hệ (Relational model), mô hình
hƣớng đối tƣợng (Object-Oriented model) nhƣ Hình 1.1 đã xuất hiện và đóng vai trò
quan trọng trong việc nghiên cứu phát triển các hệ thống quản trị CSDL (DataBase
Management System).
File Systems
Hierarchical
Network
Relational
Object-Oriented
System
Semantic Data
Model (ERD)
Complex Object
Model
Object-Oriented Databases
Hình 1.1. Sự phát triển của các mô hình dữ liệu [1]
1.1.2. Những hạn chế của cơ sở dữ liệu quan hệ
Mô hình CSDL quan hệ truyền thống đƣợc sử dụng nhiều nhƣng chƣa đáp ứng
đƣợc hết các yêu cầu của thực tế. Mô hình quan hệ chỉ phù hợp cho những bài toán có
bộ dữ liệu nhỏ và không đáp ứng đƣợc cho những bài toán ở lĩnh vực ứng dụng mới,
nhiều kiểu dữ liệu phức tạp. Ví dụ, khi cần lƣu trữ và xử lý một số lƣợng lớn dữ liệu,
dữ liệu hình ảnh, âm thanh hay video, … thì việc sử dụng mô hình quan hệ sẽ không
đạt hiệu quả. Nhƣng đa phần những ứng dụng mới hiện nay đòi hỏi hệ thống cơ sở dữ
mới.
Khó thực hiện truy vấn đệ qui: Các câu truy vấn đệ qui cực kỳ khó đặc tả và cài
đặt trong mô hình quan hệ. Đây cũng chính là điểm yếu làm cho SQL không thực
hiện đƣợc đầy đủ trong tính toán.
Những trở ngại trong đối sánh: Mô hình quan hệ sử dụng những mô thức lập
trình hỗn hợp khác nhau, trong đó cho phép các dữ liệu với kiểu khác nhau và nhiều
vị trí khác nhau có thể đƣợc xử lý trong cùng một thời điểm.
1.1.3. Mô hình dữ liệu hƣớng đối tƣợng
Trong số các mô hình dữ liệu hiện nay, mô hình dữ liệu đối tƣợng là mô hình
đảm bảo tính mềm dẻo, tính linh hoạt, và tính “mở” của hệ thống. Mô hình dữ liệu
14
hƣớng đối tƣợng đang đƣợc phát triển một cách phổ dụng trong lĩnh vực phát triển
CSDL. Đƣợc xây dựng theo cách tiếp cận hƣớng đối tƣợng nhằm khắc phục những
hạn chế của những mô hình dữ liệu truyền thống. Mô hình dữ liệu hƣớng đối tƣợng
có các đặc trƣng cơ bản sau [6, 13]:
- Thông tin đƣợc biểu diễn thành các đối tƣợng giống nhƣ các đối tƣợng trong lập
trình hƣớng đối tƣợng. Lớp bao gồm các thông tin:
+ Dữ liệu thuộc tính mô tả các đặc trƣng của các thực thể (đối tƣợng)
+ Các phƣơng thức mô tả hành vi ứng xử của đối tƣợng
-
+ Mối quan hệ giữa các lớp với nhau.
Mỗi đối tƣợng (thực thể) có một định danh ID để xác định duy nhất trong hệ
-
CSDL.
Các CSDL hƣớng đối tƣợng đƣợc thiết kế để làm việc tốt đối với những ngôn
- Tính đa hình thái
- Tính mở
Các chức năng đặc
biệt
- Phiên bản
- Sự tiến hoá lƣợc đồ
MÔ HÌNH DỮ LIỆU
HƢỚNG ĐỐI TƢỢNG
Hình 1.2. Mô hình dữ liệu hướng đối tượng nguyên mẫu [13]
Trên cơ sở kế thừa và phát triển các điểm mạnh của CSDL quan hệ thì CSDL
đối tƣợng đã bổ sung các tính chất mà CSDL quan hệ vẫn còn thiếu sót. Cũng nhƣ hệ
thống CSDL truyền thống, hệ thống CSDL hƣớng đối tƣợng có tính bền vững, tính
chia sẻ dữ liệu, tính bảo mật, tính toàn vẹn và truy vấn dữ liệu. Ngoài ra, CSDL
hƣớng đối tƣợng còn có những ƣu điểm khác nhƣ [13]:
15
Hỗ trợ những kiểu dữ liệu được định nghĩa bởi người sử dụng: CSDL hƣớng
đối tƣợng có khả năng lƣu trữ các kiểu phức hợp, kiểu đƣợc định nghĩa bởi ngƣời sử
dụng, cho phép thao tác trong kiểu dữ liệu một cách dễ dàng.
Cải tiến đáng kể về chất lượng dữ liệu: Ta có thể đƣa ra nhiều ràng buộc vào
cấu trúc dữ liệu. Mô hình còn cho phép thể hiện đƣợc cả những ràng buộc không có
cấu trúc mà chƣơng trình phải thoả mãn khi nó thực hiện trong hệ CSDL. Một CSDL
quan hệ đƣợc chuẩn hóa có thể xem nhƣ một trƣờng hợp đặc biệt của CSDL hƣớng
đối tƣợng.
Tốc độ phát triển phần mềm nhanh hơn: Cấu trúc CSDL nhất quán và rõ ràng
giúp cho lập trình ứng dụng trở nên đơn giản và nhanh hơn. Những ngƣời phát triển
Đối tƣợng là một 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à thực thể của hệ thống, của CSDL chỉ một ngƣời, một địa điểm
hay một vật nào đó tồn tại trong thế giới thực. Một thực thể bất kỳ trong thế giới thực
là một đối tƣợng. Đối tƣợng trong thế giới thực đƣợc xác định duy nhất, chứa một
tập nhất định các thông tin về đối tƣợng và các hành vi dựa trên các thông tin đó.
Một đối tƣợng cũng có thể có các mối quan hệ hay có khả năng trao đổi thông tin với
các đối tƣợng khác.
Ví dụ: Một đối tƣợng Nhân viên là một ngƣời đang làm việc cho một công ty
hay doanh nghiệp nào đó, đƣợc xác định duy nhất trong thế giới thực, chứa một tập
nhất định các thông tin về Nhân viên đó nhƣ: mã nhân viên, họ tên, ngày sinh, nơi
sinh, lƣơng, dự án mà nhân viên đang tham gia,…Một đối tƣợng Nhân viên có thể có
các quan hệ với các đối tƣợng khác, nhƣ quan hệ với đối tƣợng Phòng ban hay đối
tƣợng Dự án mà nhân viên đó đang tham gia làm việc.
Trong CSDL hƣớng đối tƣợng, các đối tƣợng trong thế giới thực đƣợc mô hình
hóa, biểu diễn vào CSDL theo các đặc trƣng của đối tƣợng và luôn duy trì sự tƣơng
ứng trực tiếp giữa các đối tƣợng trong CSDL với các đối tƣợng trong thế giới thực.
Định danh đối tƣợng (OID: Object Identity)
Một đối tƣợng đƣợc xác định duy nhất trong thế giới thực, và do đó cũng phải
đƣợc biểu diễn duy nhất trong CSDL. Việc xác định duy nhất đối tƣợng trong CSDL
đƣợc thực hiện bằng cách sử dụng các Định danh đối tƣợng (Object Identity) hay
OID. Hệ thống CSDL hƣớng đối tƣợng cung cấp một định danh duy nhất cho mỗi
đối tƣợng và đƣợc lƣu trữ trong CSDL. Định danh duy nhất này do hệ thống tự động
tạo ra và đƣợc gọi là định danh đối tƣợng. Giá trị OID ngƣời dùng không nhìn thấy
đƣợc, nó đƣợc sử dụng bên trong hệ thống để xác định duy nhất một đối tƣợng và
dùng để tạo ra các tham chiếu bên trong đối tƣợng. OID của mỗi đối tƣợng phải thỏa
mãn hai tính chất sau:
1. Giá trị OID của một đối tƣợng không đƣợc thay đổi trong CSDL hƣớng đối
tƣợng. Điều này đảm bảo 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à đảm bảo tính bất biến.
2. Mỗi giá trị OID chỉ đƣợc sử dụng duy nhất một lần; nghĩa là khi một đối
double luong;
Public:
// khai báo các hành vi của đối tượng
Void Thongtin_nhanvien();
Float Tinhluong();
}
1.2.2. Thuộc tính và phƣơng thức
Thuộc tính (Attribute)
Thuộc tính để miêu tả những đặc điểm của đối tƣợng. Việc khai báo các thuộc
tính thể hiện cấu trúc của lớp đƣợc khai báo. Mỗi thuộc tính có một tên duy nhất trong
đối tƣợng và giá trị đƣợc biểu diễn trong miền giá trị của một kiểu dữ liệu nào đó. Các
kiểu dữ liệu này có thể là các kiểu dữ liệu cơ bản nhƣ: kiểu số nguyên, số thực, kiểu
xâu ký tự…, hoặc các kiểu phức tạp do ngƣời dùng định nghĩa, các kiểu đối tƣợng
hoặc cũng có thể là các con trỏ hay vector đến các kiểu dữ liệu đó.
Thuộc tính có thể là thuộc tính đơn trị hoặc thuộc tính đa trị, thuộc tính đa trị
đƣợc khai báo bởi từ khóa set. Ngoài ra một thuộc tính có thể là thuộc tính phức hợp,
đƣợc xác định từ tập các thuộc tính khác (sử dụng từ khóa tuple để khai báo).
Ví dụ 1.1. Khai báo về các thuộc tính có trong lớp QuanLy
18
Class NhanSu
Type tuple ( maso: string[20];
hoten: string[20];
gioitinh: string[10];
diachi: string[20];
ngaysinh: tuple (ngay: integer;
thang: integer;
nam: integer;)
sonamcongtac: integer;
19
Att – tập tất cả thuộc tính của các đối tƣợng trong hệ thống
O – tập tất cả đối tƣợng và các đại lƣợng trong một CSDL.
Class – tập các tên lớp
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. 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.
Tập Obj = {o1, o2, …} là tập vô hạn các định danh đối tượng (OID) và tập Oid là
tập con các định danh đối tƣợng, Oid Obj. Họ 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) 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
rời nhau {Ai | Ai, Aj Att, (i j Ai Aj), (i, j = 1, ..., n)} thì bộ [Ai : v1, ..., An : vn]
Val(Oid).
Một đối tƣợng trong hệ thống thƣờng đƣợc mô tả là một cặp (o, v), trong đó o là
định danh đối tƣợng và v là trạng thái hay bộ giá trị hiện thời của đối tƣợng. Các đối
tƣợng 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) - kiểu của các đối tƣợng trong lớp. Thuật ngữ
Class đƣợc sử dụng để mô tả định nghĩa kiểu của lớp các đối tƣợng.
Ví dụ 1.2: Cho lƣợc đồ CSDL hƣớng đối tƣợng sau:
Class NhanVien
Type tuple (hoten: string;
gioitinh: boolean,;
luongCB: double;
phongban: PhongBan)
Class PhongBan
Type tuple (tenphong : string;
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 không nguyên thuỷ thì chúng phải có cùng số
các tính chất và với mọi tính chất pi của S1 đều tồn tại tính chất pj của S2 bằng
nhau về giá trị.
Các kiểu dữ liệu
Các kiểu cơ sở bao gồm các kiểu chuẩn trong SQL nhƣ: integer, string, float,
char, double, ….và các kiểu do ngƣời dùng định nghĩa nhƣ lớp hoặc cấu trúc
Các kiểu tập hợp đây là các kiểu đặc trƣng chỉ có ở truy vấn hƣớng đối tƣợng
nhƣ: set, bag, list, array chỉ đến một tập hợp các đối tƣợng.
-
-
Set: Với T là một kiểu bất kỳ, set(T) đƣợc định nghĩa là một kiểu tập hợp gồm
các phần tử phân biệt nhau có kiểu là T. Ví dụ {1, 2, 5, 8, 9} là một thể hiện của
set(integer)
Array: Với T là một kiểu bất kỳ và i có kiểu integer, array<T, i> là một dãy
gồm i phần tử có kiểu T. Mỗi phần tử đƣợc gắn liền với một chỉ số
Bag: Với T là một kiểu bất kỳ, bag(T) đƣợc định nghĩa nhƣ một kiểu tập hợp
gồm các phần tử thuộc kiểu T. Khác với set, một phần tử trong bag có thể xuất
hiện nhiều hơn một lần và không phân biệt thứ tự giữa chúng. Ví dụ {1, 2, 2, 5}
là một thể hiện của bag(integer).
21
-
List: Với T là một kiểu bất kỳ, list(T) đƣợc định nghĩa nhƣ một kiểu danh sách
) 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 { } { '}
22
Với mọi , any (any là lớp gốc của cây phân cấp)
1.2.4.1. Kế thừa đơn
Trong một số hệ thống chỉ cho phép một lớp đƣợc kế thừa từ một lớp cơ sở gọi
là kế thừa đơn [11]
NhanSu
QuanLy
NhanVien
Hình 1.4. Kế thừa bội từ hai lớp khác nhau và có lớp cơ sở chung[1]
23
Kế thừa bội không có lớp cơ sở chung: Kế thừa bội nhƣ Hình 1.4 là kế thừa có
lớp cơ sở chung là lớp Person. 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 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. Ví dụ trong Hình 1.5, 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.
SearchTree
MoveSubtree
PossibleMove
Move
ActualMove
Hình 1.5. Kế thừa bội không có lớp cơ sở chung [1]
Truy vấn hƣớng đối tƣợng
Yếu tố mới nhất của công nghệ CSDL hƣớng đối tƣợng so với các công nghệ
CSDL mở rộng trƣớc đây là truy vấn hƣớng đối tƣợng và hỗ trợ sự tự động hoá các
1.3.
lớp bắt đầu duyệt theo biểu thức đƣờng dẫn, IO_Eval là số trang truy xuất để “đi qua”
biểu thức đƣờng dẫn theo phân cấp lớp hợp thành và IO_Build là số trang truy xuất
để tạo ra kết quả. Để duyệt lớp bắt đầu theo biểu thức đƣờng dẫn, trƣớc hết ngƣời ta
sẽ nạp các đối tƣợng trong lớp gốc. Có hai phƣơng án duyệt các đối tƣợng: (a) duyệt
tuần tự; (b) duyệt theo chỉ mục. Hai phƣơng án này có sự khác biệt về công thức chi
phí đối với thành phần IO_Load. Nhƣng các phƣơng án duyệt để nạp các đối tƣợng
thuộc lớp gốc không làm ảnh hƣởng đến các chi phí duyệt đƣờng dẫn trong các lớp
khác. Vì vậy, chi phí IO_Eval và IO_Build cũng không ảnh hƣởng gì khi chọn một trong
hai phƣơng án trên.
Chuẩn cơ sở dữ liệu hƣớng đối tƣợng
Một trong các yêu cầu quan trọng của các mô hình hay các hệ quản trị CSDL là
việc xây dựng một chuẩn chung cho tất cả các hệ thống. Nhƣ việc thành công của hệ
quản trị CSDL quan hệ là đã xây dựng đƣợc một chuẩn SQL cho phép quản trị
CSDL. Bởi vậy, việc xây dựng một chuẩn cho CSDL hƣớng đối tƣợng là rất cần thiết,
quan trọng và mang lại nhiều lợi ích.
Việc xây dựng chuẩn CSDL hƣớng đối tƣợng có tác dụng là định ra một cấu
trúc chung cho tất cả các hệ thống, do đó ngƣời sử dụng sẽ dễ dàng hơn trong việc
thao tác hệ thống cũng nhƣ bảo trì, chuyển đổi và nâng cấp hệ thống. Mặt khác,
1.4.
chuẩn CSDL cho phép sự tƣơng thích giữa nhiều hệ thống khác nhau, tức là các
chƣơng trình ứng dụng có thể truy cập đƣợc các dữ liệu đƣợc lƣu trữ trong các hệ
thống hay các CSDL trong các hệ thống khác nhau.
ODMG (Object Database Management Group) là một trong những chuẩn CSDL
hƣớng đối tƣợng, đang đƣợc phát triển và đƣợc ứng dụng trong nhiều hệ thống, hệ
quản trị CSDL hƣớng đối tƣợng hiện nay. ODMG đề xuất một số chuẩn cho mô hình
CSDL đối tƣợng và đƣợc chỉnh sửa thành phiên bản 1.1 vào năm 1994, phiên bản 2.0
vào năm 1997, là một mô hình hƣớng đối tƣợng dựa trên mô hình đối tƣợng hạt nhân
chuẩn.
dụ, lớp NhanVien sẽ tạo ra đối tƣợng NhanVien có định danh đƣợc hệ thống tạo ra,
còn những dữ liệu nguyên thuỷ nhƣ giá trị 20 kiểu int (nguyên thuỷ) là literal sẽ
không có định danh.
Các đối tượng và các hằng ký tự có thể đƣợc phân loại theo các kiểu khác nhau.
Nghĩa là mỗi đối tƣợng hay mỗi hằng ký tự sẽ thuộc về một kiểu. Một đối tƣợng là
một thể hiện kiểu của nó, mọi thể hiện (instance) của cùng một kiểu sẽ có cùng tập
các thuộc tính và các hành vi (beharvior).
Trạng thái của đối tượng đƣợc xác định bởi tập các giá trị đặc tính của nó. Các
đặc tính có thể là các thuộc tính hoặc các mỗi quan hệ của bản thân đối tƣợng với một