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

Tối ưu hóa truy vấn cơ sở dữ liệu hướng tới đối tượng : Luận văn ThS. Công nghệ thông tin: 60 48 01 04

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 (1.28 MB, 80 trang )

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


LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

NGƢỜI HƢỚNG DẪN KHOA HỌC : PGS. TS. ĐOÀN VĂN BAN

HÀ NỘI – 2014


3

LỜI CAM ĐOAN
Tôi xin cam đoan, kết quả của luận văn hoàn toàn là kết quả của tự bản thân tôi
tìm hiểu, nghiên cứu. Các tài liệu tham khảo đƣợc trích dẫn và chú thích đầy
đủ.

Tác giả

Phạm Thị Chanh


4

LỜI CẢM ƠN
Lời đầu tiên của luận văn em xin gửi lời cảm ơn chân thành nhất đến PGS.TS
Đoàn Văn Ban, ngƣời đã trực tiếp hƣớng dẫn, giúp đỡ và tạo mọi điều kiện thuận lợi
cho em từ lúc tìm hiểu, định hƣớng cũng nhƣ tìm kiếm tài liệu trong lĩnh vực cơ sở
dữ liệu hƣớng đối tƣợng cho đến lúc hoàn thành luận văn.
Em xin gửi lời cám ơn sâu sắc đến tất cả các thầy cô giáo đã dạy dỗ và truyền
đạt những kinh nghiệm quý báu cho chúng em trong suốt hai năm cao học ở trƣờng
Đại học Công nghệ - Đại học Quốc gia Hà nội.
Cuối cùng, em xin biểu thị sự biết ơn tới những ngƣời thân trong gia đình và

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 cạnh

4

Oid

OID của đối tƣợng

5

O (Object)

Tập các đối tƣợng

6

V (Value)

Giá trị

7

D

Tập các đối tƣợng

8

H (HyperGraph)


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)


Giá trị

14

Sup (Super)

Siêu lớp/ lớp cha

15

Meth (Method)

Phƣơng thức

16

Attrs (Attributes)

Tập thuộc tính

CÁC CHỮ VIẾT TẮT
Ký hiệu

STT

Diễn giải

1


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


OQL (Object Query Language)

Ngôn ngữ truy vấn đối tƣợng

7

OODB(Object-Oriented Database)

CSDL Hƣớng đối tƣợng

8

OODBMS (Object-Oriented Database Hệ quản trị CSDL Hƣớng đối tƣợng
Management System)

9

ADTs (Abtract Data Types)

Tập kiểu dữ liệu trừu tƣợng

10

SFW (Select...From...Where)

Khối lệnh trọng tâm của ngôn ngữ
truy vấn OQL



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


Class hierarchy

Phân cấp lớp hợp thành
Phƣơng thức nạp chồng

Class composition hierarchy
Overloading method

Phƣơng thức thuộc tính - suy dẫn
Siêu lớp
Lớp con
Truy vấn lồng
Mô hình dữ liệu hƣớng đối tƣợng
Thực thể

Derived-attribute method
Metaclass/Superclass
Subclass
Nested query
Object-Oriented Model
Entity

Viết đè
Liên kết muộn

Overriding
Late binding

Thuộc tính đơn

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

Hình 2.5. Siêu đồ thị kết nối của ví dụ 2.4. ................................................................ 36
Hình 3.1. Lƣợc đồ CSDL Quản lý Nhân sự ............................................................... 52
Hình 3.2. Form luận văn ............................................................................................. 61
Hình 3.3. Kết quả truy vấn 1 ....................................................................................... 62
Hình 3.4. Kết quả truy vấn 2 ....................................................................................... 63
Hình 3.5. Kết quả truy vấn 3 ....................................................................................... 65


8

DANH MỤC CÁC BẢNG, BIỂU ĐỒ
Bảng 2.1. Kết quả ƣớc lƣợng siêu cạnh của ví dụ 2.3 ................................................ 44
Bảng 2.2. Kết quả ƣớc lƣợng khi áp dụng thuật toán 2.5 Tinh chỉnh siêu đồ thị của ví
dụ 2.3 .......................................................................................................................... 46
Bảng 2.3. Kết quả ƣớc lƣợng siêu cạnh của ví dụ 2.4 ................................................ 46
Bảng 2.4. Kết quả ƣớc lƣợng khi áp dụng thuật toán 2.5 Tinh chỉnh siêu đồ thị của ví
dụ 2.4 .......................................................................................................................... 47
Biều đồ 3.1. So sánh thời gian thực hiện truy vấn 1 ................................................... 62
Biều đồ 3.2. So sánh thời gian thực hiện truy vấn 2 ................................................... 64
Biều đồ 3.3. So sánh thời gian thực hiện truy vấn 3 ................................................... 65


9

LỜI MỞ ĐẦU
Chúng ta đang sống trong một thời đại mới, thời đại của Công nghệ thông tin
(CNTT). Công nghệ thông tin ngày một phát triển và trở thành một nhu cầu không
thể thiếu trong mọi lĩnh vực của đời sống xã hội. CNTT là ngành quản lý công nghệ
và mở ra nhiều lĩnh vực khác nhau nhƣ phần mềm máy tính, phần cứng máy tính,
ngôn ngữ lập trình, ….Và cơ sở dữ liệu cũng là một lĩnh vực quan trọng của Công

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



10
nghiên cứu công nghệ và các Viện Đại học nhƣ: Gemstone, ObjectStores, IRIS,
Orion, Extra, Oracle, Db4o,… Một mô hình dữ liệu đối tƣợng chuẩn ODMG đã đƣợc
phát triển và dựa vào đó để thiết lập một số khái niệm cơ sở đƣợc gọi là mô hình hạt
nhân cho mô hình CSDL hƣớng đối tƣợng. Mô hình hạt nhân đủ mạnh để thỏa mãn
nhiều đòi hỏi của các ứng dụng mới, hơn nữa còn đƣợc dùng làm cơ sở để xác định
những khác biệt chính giữa mô hình dữ liệu hƣớng đối tƣợng và các mô hình dữ liệu
truyền thống khác. Hệ thống hƣớng đối tƣợng là tập các lớp đối tƣợng có mối quan hệ
với nhau, trao đổi thông tin với nhau để thực hiện những nhiệm vụ đặt ra của bài toán
ứng dụng trong thực tế.
Một trong những hƣớng nghiên cứu quan trọng đƣợc đề cập trong các 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 câu 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ả
cuối cùng tƣơng đƣơng nhau, việc tối ƣu hóa câu 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ả hơn, tức là chọn phƣơng
án có chi phí ƣớc lƣợng nhỏ nhất. Hiện nay, các nhà nghiên cứu đã đề xuất rất nhiều
kỹ thuật tối ƣu hoá truy vấn hƣớng đối tƣợng khả thi và đáp ứng đƣợc các yêu cầu
này nhƣ: Scott Lee Vanderberg (1993), J. Fong (1997), C. Ramanathan and J. Hodges
(1997), Clement Yu, Yi Zhang, Weiyi Meng, Wom Kim, Gaoming Wang, Tracy
Pham and Son Daop (1997): Giới thiệu giải thuật chuyển đổi các truy vấn hướng đối
tượng sang truy vấn quan hệ để tận dụng các kỹ thuật tối ưu hoá truy vấn đã có trên
mô hình quan hệ; Jia Liang Han (1998): “Optimizing Relational Queries in
Connection Hypergraph: Nested Queries, Views, and Binding Propagations”; Ullman
and Jeffrey D. (1999), Lê Mạnh Thạnh và Hoàng Bảo Hùng (2009): Phương pháp tối
ưu hóa truy vấn đối tượng bằng các phép biến đổi biểu thức đại số đối tượng OQL;
Lê Mạnh Thạnh, Đoàn Văn Ban và Hoàng Bảo Hùng (2005): 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. Tuy nhiên đối với các truy vấn lồng, khi phân tích ƣớc lƣợng chi phí của biểu

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ý

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. Cuối chƣơng, là mở
rộng thuật toán tối ƣu hóa truy vấn trên cơ sở xây dựng danh sách các bƣớc thực thi
câu truy vấn theo quy tắc có thứ tự loại bỏ siêu cạnh.
Chƣơng 3: Giới thiệu về hệ quản trị CSDL đối tƣợng DB4O. Phát biểu bài toán
quản lý nhân sự trong công ty, đó là bài toán đƣợc áp dụng trong các ví dụ cho thuật
toán tối ƣu hóa truy vấn. Đƣa ra kết quả thực nghiệm cho bài toán tối ƣu hóa truy vấn
CSDL hƣớng đối tƣợng dựa trên siêu đồ thị. Cuối cùng là kết luận và hƣớng phát
triển của đề tài.
Nội dung cơ bản của luận văn đã đƣợc trình bày, thảo luận tại xêmina khoa học
ở Bộ môn Hệ thống thông tin, khoa Công nghệ Thông tin, trƣờng Đại học Công nghệ
- Đại học Quốc gia Hà nội.


12

Chƣơng 1
MÔ HÌNH CƠ SỞ DỮ LIỆU HƢỚNG ĐỐI TƢỢNG
1.1. Tổng quan về hệ thống dữ liệu hƣớng đối tƣợng
1.1.1. Mô hình dữ liệu
Các hệ thống quản trị cơ sở dữ liệu (CSDL) đầu tiên xuất hiện trƣớc những năm
1970. Những hệ thống này đƣợc phát triển từ hệ thống các tệp tin (File Systems) để
hỗ trợ cho việc lƣu trữ và xử lý số lƣợng lớn các dữ liệu. Tuy nhiên, các nhà nghiên
cứu trong lĩnh vực CSDL nhận thấy giá trị của dữ liệu cần đƣợc lƣu trữ để xử lý, và
các mô hình dựa trên dữ liệu cần đƣợc nghiên cứu để cải thiện độ tin cậy, đảm bảo an
ninh, an toàn dữ liệu và nâng cao hiệu quả của việc truy cập vào hệ thống.
Mô hình dữ liệu cung cấp cách thức tổ chức các dữ liệu đƣợc lƣu trữ theo cấu
trúc đặc biệt hoặc theo các mối quan hệ sao cho việc truy cập và quản lý nhanh

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ữ



13
liệu phải xử lý đƣợc các tính năng nhƣ: các kiểu dữ liệu phức tạp, đóng gói dữ liệu
(Data Encapsulation) và cấu trúc dữ liệu trừu tƣợng, cùng với những phƣơng pháp
mới để lập chỉ mục và truy vấn thông tin. Phần lớn các hệ quản trị CSDL phổ biến
hiện nay trên thị trƣờng là các hệ quản trị dữ liệu theo mô hình quan hệ. Tuy nhiên,
các hệ quản trị CSDL quan hệ có những hạn chế nhƣ sau [13,19]:
Hạn chế trong vấn đề biểu diễn thế giới thực (Real world): Các quan hệ
(relations) không đủ mạnh để thể hiện các thực thể (entities) trong thế giới thực. Rất
khó để mà biểu diễn đƣợc mối quan hệ kế thừa, mối quan hệ thành viên (IS-A
relationships). Ví dụ nhân viên là một ngƣời, trong ví dụ này, hệ quản trị CSDL quan
hệ phải định nghĩa 2 bảng là bảng Nguoi và bảng NhanVien, trong đó bảng NhanVien
nhận đƣợc những thông tin từ lớp cha (superclass) Nguoi để kết nối lại.
Hạn chế về nạp chồng ngữ nghĩa (Semantic overloading): Thành phần chuẩn
trong mô hình quan hệ là quan hệ (relation) không đủ mạnh để biểu diễn cho dữ liệu
và các mối quan hệ phức tạp của dữ liệu. Nó thƣờng phải chia một đối tƣợng thành
một số các quan hệ (bảng) và truy vấn tin thì phải thực hiện các phép: chiếu, chọn và
kết nối để tái cấu trúc các đối tƣợng đó.
Chỉ biểu diễn những dữ liệu thuần nhất: Những hạn chế về kiểu dữ liệu trong
mô hình quan hệ làm nó không thể biểu diễn đƣợc các đối tƣợng trong thế giới thực.
Một mục (item) bất kỳ trong một bộ dữ liệu (tuple) thực chất là phần giao nhau của
hàng với cột, nó phải là dữ liệu của một kiểu dữ liệu nguyên tố, bởi vì theo giả thuyết,
cả chiều ngang và chiều dọc đều phải có kiểu thuần nhất.
Hệ thống khép kín: Những lĩnh vực ứng dụng còn tồn tại không thể bổ sung
đƣợc vào hệ thống sau khi phát triển hệ quản trị CSDL, nhƣ không thể bổ sung các
kiểu dữ liệu mới vào hệ thống. Nhƣng thực tế đòi hỏi các hệ quản trị CSDL phải hỗ
trợ để xử lý những kiểu dữ liệu mới nhƣ kiểu hình ảnh (images), video, audio, …
Giới hạn các phép toán: Mô hình quan hệ có một tập cố định các phép toán
trong SQL. Ngoài ra, không cho phép mở rộng hay bổ sung thêm những phép toán

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

ngữ lập trình hƣớng đối tƣợng nhƣ: Java, C++, C#, Smalltalk,….
Mục đích của CSDL hƣớng đối tƣợng là để quản trị hiệu quả những kiểu dữ liệu

phức hợp, dữ liệu đa phƣơng tiện nhƣ âm thanh, hình ảnh, ... , nhằm khắc phục những
hạn chế của CSDL quan hệ. Hình vẽ sau đây giới thiệu về mô hình dữ liệu hƣớng đối
tƣợng nguyên mẫu.
Hệ thống CSDL
truyền thống
- Sự bền vững
- Tính chia sẻ
- Các giao dịch
- Kiểm soát trùng lặp
- Kiểm soát phục hồi
- Tính bảo mật
- Tính toàn vẹn
- Truy vấn

Ngữ nghĩa mô
hình dữ liệu
- Sự tổng quát hoá
- Sự kết nhập

Lập trình hướng đối
tượng
- Nhận dạng đối tƣợng
- Sự đóng gói
- Sự kế thừa
- Kiểu và các lớp
- Phƣơng thức
- Đối tƣợng phức

- 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

ứng dụng có kinh nghiệm thƣờng sử dụng những câu lệnh rất mạnh của các hệ quản
trị CSDL thay cho những đoạn chƣơng trình của ngƣời sử dụng.
Tích hợp dữ liệu dễ dàng và tiện lợi: Việc tích hợp nhiều hệ thống độc lập có
thể làm giảm bớt sự sao chép dữ liệu của con ngƣời và mở rộng những câu truy vấn
có thể trả lời đƣợc. Mô hình hƣớng đối tƣợng cung cấp cách biểu diễn thống nhất làm
thuận tiện hơn cho việc tìm hiểu và tích hợp thông tin.
Không cần các khóa chính (Primary Keys): ngƣời sử dụng hệ quản trị CSDL
quan hệ thƣờng phải lo lắng về tính duy nhất để phân biệt các bộ dữ liệu và đảm bảo
rằng không có hai bộ dữ liệu có cùng giá trị của khóa chính để tránh xảy ra xung đột.
Nhƣng trong một hệ quản trị CSDL hƣớng đối tƣợng, việc xác định duy nhất của các
đối tƣợng đƣợc thực hiện bởi định danh đối tƣợng (OID) và ngƣời sử dụng không cần
phải quan tâm về chúng.
Một mô hình dữ liệu thống nhất: Một mô hình dữ liệu thông thƣờng phải mô
hình hóa các thực thể, các mối quan hệ, các ràng buộc và các hoạt động thay đổi trạng
thái của dữ liệu trong hệ thống. Với hệ quản trị CSDL quan hệ ta không thể mô hình
đƣợc các hoạt động và không đƣa ra đƣợc những quy tắc để làm thay đổi trạng thái
của dữ liệu trong hệ thống, bởi vì điều này vƣợt quá phạm vi của cơ sở dữ liệu. Vì
vậy, các ứng dụng sử dụng hệ thống CSDL quan hệ thƣờng sử dụng một sơ đồ quan
hệ - thực thể để mô hình các bộ phận tĩnh của hệ thống và một mô hình riêng biệt cho
các hoạt động và hành vi của các thực thể trong ứng dụng. Với hệ quản trị CSDL
hƣớng đối tƣợng, không có sự tách biệt giữa các mô hình dữ liệu và mô hình ứng
dụng để mô tả đầy đủ các đặc trƣng, tính chất tĩnh cũng nhƣ hành vi ứng xử động của
các đối tƣợng. Toàn bộ ứng dụng nhƣ vậy có thể đƣợc mô hình đầy đủ trong các biểu
đồ UML.
1.2. Các khái niệm cơ sở
1.2.1. Đối tƣợng, Định danh đối tƣợng và Lớp đối tƣợng
Đối tƣợng (Object)


16

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

tƣợng bị xóa đi từ CSDL thì OID của nó cũng không đƣợc gán cho đối tƣợng bất kỳ
nào khác.
Định danh đối tƣợng OID khác với khóa chính của đối tƣợng. Khóa chính của
đối tƣợng là một thuộc tính của đối tƣợng, đƣợc ngƣời dùng gán giá trị và có thể
nhìn thấy, thay đổi đƣợc và có thể đƣợc cấp lại, còn OID thì không.
Ví dụ: Một Nhân viên đƣợc biểu diễn trong CSDL có một OID duy nhất, xác
định sự tƣơng ứng Nhân viên đó trong thế giới thực. Một Nhân viên khác trong thế


17
giới thực nếu đƣợc biểu diễn trong CSDL thì phải có một OID khác với OID của
Nhân viên trên, thậm trí cả khi Nhân viên trên bị xóa khỏi hệ thống. Điều này đảm
bảo sự tƣơng ứng của CSDL với thế giới thực, tránh sự nhầm lẫn về các đối tƣợng
đƣợc biểu diễn trong CSDL.
Lớp đối tƣợng (Class)
Đối tƣợng là thể hiện, là đại diện của một lớp. Lớp là một mô tả về một nhóm
các đối tƣợng có những tính chất (thuộc tính) giống nhau, có chung các hành vi ứng
xử, có cùng mối liên quan với các đối tƣợng của các lớp khác và có chung ngữ nghĩa
trong hệ thống. Trong các mô hình và các ngôn ngữ lập trình hƣớng đối tƣợng, lớp
thƣờng đƣợc mô tả bằng từ khóa Class. Ví dụ trong lƣợc đồ quản lý nhân viên ta có
các lớp: NhanVien, PhongBan, DuAn …Trong đó, lớp Nhân viên mô tả cấu trúc
chung của các đối tƣợng Nhân viên, đƣợc khai báo nhƣ sau:
Class NhanVien
{
Private:
// khai báo các thuộc tính của đối tượng
int manso;
string hoten;
datetime ngaysinh;
string diachi;

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;

luongcoban: double)
Class QuanLy inherits NhanSu
Type tuple ( chucvu: string;
phong: PhongBan;
duan: set( DuAn))
Trong ví dụ trên các thuộc tính hoten, giới tính, diachi… là các thuộc tính đơn
trị, thuộc tính ngaysinh là thuộc tính phức hợp. Còn thuộc tính duan là thuộc tính đa
trị, với ngữ nghĩa rằng mỗi đối tƣợng thuộc lớp QuanLy có thể tham gia vào nhiều
dự án khác nhau; nghĩa là mỗi đối tƣợng thuộc lớp QuanLy cho tƣơng ứng một tập
các giá trị OID của các đối tƣợng thuộc lớp DuAn.
Phƣơng thức (Method)
Phƣơng thức của một lớp thƣờng đƣợc dùng để mô tả các hành vi của đối tƣợng
(hoặc của lớp). Ví dụ nhƣ đối tƣợng thuộc lớp điện thoại có các hành vi sau: Đổ
chuông, chuyển tín hiệu từ sóng sang dạng nghe đƣợc, chuyển tín hiệu giọng nói
sang dạng chuẩn, chuyển tín hiệu lên tổng đài.v.v. Khi thiết kế, ngƣời ta có thể dùng
các phƣơng thức để mô tả và thực hiện các hành vi của đối tƣợng. Mỗi phƣơng thức
thƣờng đƣợc định nghĩa là một hàm, các thao tác để thực hiện hành vi đó đƣợc viết
tại nội dung của hàm. Khi thực hiện hành vi này, đối tƣợng có thể phải thực hiện các
hành vi khác. Ví dụ nhƣ điện thoại phải chuyển tín hiệu giọng nói sang dạng chuẩn
trƣớc khi chuyển lên tổng đài. Cho nên một phƣơng thức trong một lớp có thể sử
dụng phƣơng thức khác trong quá trình thực hiện hành vi của mình.
1.2.3. Các kiểu dữ liệu
Các khái niệm sau đây đƣợc sử dụng trong hầu hết các hệ CSDL hƣớng đối
tƣợng, chẳng hạn nhƣ Gemstone, Orion, Ontos, O2, ObjectStore, ODMG. Để thuận
tiện trong trình bày, chúng ta sử dụng một số ký hiệu sau [4, 6, 21]:
T – tập hữu hạn các kiểu
L – tập các kiểu nguyên thuỷ nhƣ: byte, int, long, float, double, char, string và
boolean.



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;

truongphong: NhanVien;
SoNV: set (NhanVien ))
Ta tiến hành biểu diễn một số đối tƣợng từ lƣợc đồ CSDL đối tƣợng trên, trong
đó mỗi đối tƣợng là một cặp (o, v). Xét các đối tƣợng
Ob1 = (o1, [hoten: “Nam Phong”, gioitinh: false, luong: 6000000, phong: o5])
Ob2 = (o2, [hoten: “Nguyên Minh”, gioitinh: true, luong: 4000000, phong: o5])
Ob3 =(o3, [hoten: “Trần Hùng”, gioitinh: false, luong: 5000000, phong: o5])


20
Ob4 =(o4, [hoten: “Minh Châu”, gioitinh: true, luong: 3500000, phong: o5])
Ob5 =(o5, [tenphong: “Kinh Doanh”, truongphong: o1, SoNV: {o1, o2, o3, o4}])
Đối tƣợng Ob1 theo định nghĩa trong lƣợc đồ trên sẽ gồm định danh o1 và một
bộ (tuple) các giá trị: [hoten : “Nam Phong”, gioitinh : false, luong : 6000000, phong :
o5]. Đối tƣợng Ob5 có định danh là o5 và một giá trị bộ: [tenphong : “Kinh Doanh”,
truongphong : o1, SoNV : {o1, o2, o3, o4}], trong đó, thuộc tính tenphong có giá trị
nguyên thủy, thuộc tính truongphong tham chiếu đến đối tƣợng có định danh đối
tƣợng là o1, thuộc tính SoNV (số lƣợng nhân viên) có giá trị tập (set) tham chiếu đến
các đối tƣợng với các định danh đối tƣợng o1, o2, o3, o4.
Trong mô hình dữ liệu quan hệ, so sánh bằng của các bộ trong quan hệ luôn dựa
trên các giá trị của bộ, hai bộ bằng nhau nếu tất cả các thuộc tính khoá của hai bộ có
cùng giá trị. Tuy nhiên, trong mô hình CSDL hƣớng đối tƣợng cần phân biệt hai khái
niệm “đồng nhất” và “bằng nhau” của các đối tƣợng nhƣ trong thực tế. Hai quan hệ
này đƣợc định nghĩa nhƣ sau:
Định nghĩa 1.1: Cho hai đối tƣợng S1(o1, v1) và S2(o2, v2).
i. Đối tượng đồng nhất: Hai đối tƣợng S1 và S2 đƣợc gọi là đối tƣợng đồng nhất,
ký hiệu S1 = oidS2 nếu chúng có cùng định danh đối tƣợng, tức là S1.o1 = S2.o2
ii. Đối tượng bằng nhau: Hai đối tƣợng S1 và S2 đƣợc gọi là bằng nhau về giá trị,
ký hiệu S1 = vS2
-


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

có 0 hoặc nhiều hơn một phần tử thuộc kiểu T. Kiểu string là một kiểu đặc biệt

của list (danh sách các ký tự)
Mỗi phần tử trong set đƣợc gắn liền với một sự kiện duy nhất, ngƣợc lại trong
bag các phần tử có thể lặp. Với list giống nhƣ bag nhƣng các sự kiện phải đƣợc sắp
xếp đúng thứ tự. Chẳng hạn {3, 5, 3} và {5, 3, 3} là khác nhau với list nhƣng giống
nhau với bag.
Trong CSDL hƣớng đối tƣợng lớp đƣợc xem nhƣ một kiểu dữ liệu đã đƣợc cài
đặt, các thể hiện của nó là các đối tƣợng cụ thể. Chẳng hạn kiểu integer có thể xem
nhƣ một lớp integer và các thể hiện nhƣ 1, 3, 5, …là các thể hiện của lớp integer đó.
1.2.4. Hệ thống phân cấp và quan hệ kế thừa
Trong hệ thống CSDL hƣớng đối tƣợng, cho phép một lớp đƣợc kế thừa các
thuộc tính và phƣơng thức từ một lớp cơ sở, tức là những lớp mới có thể mở rộng, kế
thừa những lớp khác có sẵn (super-class). Ngoài những thuộc tính, phƣơng thức
đƣợc kế thừa, ta có thể bổ sung thêm những thuộc tính và phƣơng thức mới để mô tả
đúng những lớp các đối tƣợng của bài toán ứng dụng.
Quan hệ kế thừa là quan hệ kiểu “thành viên” (“IS-A”), nghĩa là mội đối tƣợng
của lớp con cũng là đối tƣợng của lớp cha và ngƣợc lại đối tƣợng của lớp cha đại
diện cho mội đối tƣợng của lớp con. Các lớp trong mô hình hƣớng đối tƣợng có thể
đƣợc tổ chức theo một cấu trúc phân cấp ISA giữa các lớp đối tƣợng. Cấu trúc phân
cấp lớp bao gồm ba thành phần: (1) tập các lớp; (2) các kiểu liên quan đến các lớp;
(3) đặc điểm của các quan hệ ISA giữa các lớp [11].
Một cách hình thức, cấu trúc phân cấp lớp ISA là một bộ ba (C,,  ), trong đó,
C là tập hữu hạn tên các lớp,  là ánh xạ từ C vào Types(C),  là một quan hệ thứ tự
bộ phận trên tập các lớp C. Thông thƣờng thì quan hệ thứ tự bộ phận có tính phản xạ.
Ta nói, lớp C2 là lớp con của lớp C1 hay nói cách khác lớp C2 kế thừa lớp C1 nếu kiểu
của lớp C2 là tổng quát hơn kiểu của lớp C1, ký hiệu là C2  C1. Chúng ta sử dụng
quan hệ kiểu con () để biểu diễn một kiểu là tổng quát hơn kiểu khác [1, 2].
Định nghĩa 1.2. Cho (C, ,


 ) là một cấu trúc phân cấp lớp, quan hệ kiểu con trên

Types(C) là thứ tự bộ phận nhỏ nhất trên Types(C), ký hiệu , thỏa mãn các điều
kiện sau:
(i)

Nếu c  c‟ thì c  c‟

(ii)

Nếu  i   i ' (1 i  n, n  m ) thì bộ

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

Nếu

   ' thì tập { }  { '}


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


NV_HopDong

NV_BienChe

Hình 1.3. Kế thừa đơn
1.2.4.2. Kế thừa bội
Có nhiều hệ thống cho phép một lớp có thể có nhiều lớp cơ sở gọi là kế thừa
bội. Trong quan hệ kế thừa bội có thể dẫn đến sự pha trộn thông tin từ nhiều nguồn
dữ liệu khác nhau, từ các lớp đƣợc kế thừa. Kế thừa bội tổ chức các lớp thành đồ thị
định hƣớng phi chu trình, là cơ chế mạnh trong mô hình hệ thống, nhƣng đồng thời
cũng sẽ tạo ra nhiều sự phức tạp về tính nhập nhằng, không nhất quán dữ liệu
Kế thừa bội từ những lớp phân biệt: Một lớp có thể kế thừa từ nhiều lớp cơ sở
khác nhau. Ví dụ. Lớp Person là cơ sở để tạo ra hai lớp con: Employee (Nhân viên)
và Manager (Nhà quản lý). Trong Công ty lại có những ngƣời vừa là nhân viên, vừa
là ngƣời phát triển. Những ngƣời đó chính là các đối tƣợng của lớp PartTimeWorker
kế thừa từ hai lớp con Employee và Manager nhƣ Hình 1.4.
Person
+salary: int
+readInfo()

Employee
+job: String
+readInfo()

Manager
+project: String
+readInfo()

PartTimeWorker


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.


kỹ thuật xử lý truy vấn cho quá trình phát triển truy vấn. Quá trình phát triển này cơ
bản bắt nguồn từ hai giai đoạn. Giai đoạn đầu tiên là tối ƣu hoá truy vấn. Giai đoạn
thứ hai là xử lý truy vấn. Giai đoạn tối ƣu hoá truy vấn sẽ tự động sinh ra một tập các
lƣợc đồ hợp lý. Và trong giai đoạn xử lý truy vấn, hệ thống sẽ chọn lƣợc đồ tối ƣu
nhất trên cơ sở chi phí phù hợp để thực hiện truy vấn.
Mục đích của xử lý truy vấn là tìm một phƣơng án thực thi trong số tất cả các
phƣơng án tƣơng đƣơng (cho cùng một kết quả) nhƣng giảm thiểu thời gian xử lý,
giảm vùng nhớ trung gian, sử dụng ít tài nguyên hay là với chi phí nhỏ nhất. Trong
hệ thống CSDL, chi phí của tiến trình xử lý truy vấn đƣợc tính với công thức:
Total_cost = IO_cost + CPU_cost
Trong đó, IO_cost là chi phí vào/ra do việc truyền dữ liệu giữa bộ nhớ chính và
bộ nhớ thứ cấp (thƣờng là đĩa từ) và CPU_cost là chi phí tính toán trong tiến trình xử
lý truy vấn. Ngƣời ta tập trung nghiên cứu trên chi phí IO_cost và bỏ qua chi phí
CPU_cost. Điều này sở dĩ nhƣ vậy là vì mỗi ứng dụng CSDL lớn với số lƣợng khổng
lồ các truy xuất dữ liệu thì sự tham gia của chi phí CPU_cost vào tổng chi phí
Total_cost sẽ không có ý nghĩa.
Chi phí xử lý truy vấn trên các lớp


24
Việc phân tích tổng chi phí IO_Cost đƣợc thực hiện theo ba thành phần là chi
phí nạp của lớp sƣu tập (IO_Load), chi phí ƣớc lƣợng tân từ (IO_Eval) và chi phí kết
xuất kết quả(IO_Build) đƣợc xem xét trong hai trƣờng hợp: giả thiết bộ nhớ xử lý đủ
lớn và bộ nhớ nhỏ.
Việc phân tích tổng chi phí IO_Cost đƣợc thực hiện theo ba thành phần: chi phí
nạp của lớp sƣu tập (IO_Load), chi phí ƣớc lƣợng tân từ (IO_Eval) và chi phí kết xuất
kết quả (IO_Build).
Tổng chi phí vào/ra của việc xử lý truy vấn chứa ba thành phần:
Total_IO = IO_Load + IO_Eval + IO_Build
Với IO_Load là số các trang truy xuất để nạp các đối tƣợng thuộc lớp gốc, là

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.



25
Chuẩn mới nhất là ODMG 3.0 (1999) định nghĩa một cách linh hoạt các đặc tả
cho việc lƣu trữ những đối tƣợng bền vững. ODMG 3.0 đƣợc thiết kế để các ứng
dụng dễ chuyển đổi, cho phép phát triển ứng dụng dựa vào CSDL, đối tƣợng và
chuẩn ngôn ngữ lập trình (OMG, SQL-92, …) hiện thời, đảm bảo việc lƣu trữ đối
tƣợng là đơn giản và chƣơng trình dễ chuyển đổi [13].
Ý tƣởng cơ sở của việc xây dựng các chuẩn ODMG là khá đơn giản. Một mặt,
việc thiết kế hệ thống dữ liệu không dựa vào mô hình hiện có nhƣ mô hình quan hệ,
mà nó phải đƣợc xây dựng theo luận thuyết hƣớng đối tƣợng. Mặt khác, tự bản thân
ngôn ngữ truy vấn không đƣợc hỗ trợ và thiết kế hệ thống cũng phụ thuộc nhiều vào
ngôn ngữ lập trình nhƣ C++, Smalltalk, Java. ODMG 3.0 gồm 4 thành phần đặc tả
chính đó là [14].
Mô hình đối tượng (Object Model): Mô hình dữ liệu chung đƣợc hỗ trợ cho cài
đặt các chuẩn ODMG đƣợc xây dựng dựa vào mô hình đối tƣợng của OMG.
Ngôn ngữ định nghĩa đối tượng - ODL (Object Definition Language): Là ngôn
ngữ đặc tả đƣợc sử dụng để định nghĩa các kiểu đối tƣợng phù hợp với mô hình đối
tƣợng của ODMG.
Ngôn ngữ truy vấn đối tượng - OQL (Object Query Language). Đây là ngôn ngữ
khai báo phi thủ tục đƣợc sử dụng để truy vấn và cập nhật đối tƣợng. SQL-92 đƣợc
sử dụng nhƣ là cơ sở cho OQL.
Ràng buộc ngôn ngữ (Language Binding) nhƣ: C++, Smalltalk, Java. Những
ngôn ngữ này đƣợc gọi là ngôn ngữ thao tác đối tƣợng OML (Object Manipulation
Language)
1.4.1. Mô hình đối tƣợng của ODMG
Trong CSDL hƣớng đối tƣợng, đối tƣợng (Object) và hằng ký tự (literal) là các
thành phần cơ bản nhất của mô hình đối tƣợng. Trong đó, mỗi đối tƣợng có định danh
nhận biết đối tƣợng và giá trị, trong khi hằng ký tự chỉ có giá trị mà không có định
danh. Giá trị của đối tƣợng có thể có cấu trúc phức tạp và có thể thay đổi. Tuy nhiên
giá trị của hằng ký tự là cố định và không thay đổi, có thể có kiểu cấu trúc [14]. Ví

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


×