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

Mô hình cơ sở dữ liệu quan hệ và mô hình cơ sở dữ liệu hướng đối tượng (báo cáo tổng hợp

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 (9.38 MB, 124 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI

TÊN ĐỀ TÀI
M Ô H ÌN H C ơ SỞ D Ữ L IỆ U Q U A N H Ệ
V À M Ô H ÌN H C O SỞ D Ữ L IỆ U H Ư Ớ N G Đ Ó I T Ư Ợ N G
( Báo cáo tổng hợp Đề tài nghiên cứu khoa học đo Khoa quản lý cấp DI 1QG Hà nội)

Mã số:QC.04.06
Chủ nhiệm đề tài:
TS. NGUYỄN TUỆ

ĐAI H O C

-C J.lv

, ỳ i A H Á M(

T R U N G T Ẩ M T H Õ N G Tlfv1 T h ư

Pl ' 5

Hà nội - 2005

/;t


I. Phần mở đầu
Muc luc
STT
1
2


3
4
5
6

Tên mục
Phần mở đầu
Những nội dung chính
Phu luc 1
Phu luc 2
Phu luc 3
Phiêu đăng ký kêt quả nghiên cứu

Trang
2
4

Giải thích các chữ viết tắt:
CSDL : Cơ sở dữ liêu
HQTCSDL: hệ quản trị cơ sở dữ liệu
OODB : Cơ sở dữ liệu hướng đối tượng
OOPL : Ngôn ngữ lập trình hướng đối tượng
CSDLPT: Cơ sở dữ liệu phân tán
Danh sách những người tham gia thực hiện đề tài:
STT
1
2
3
4
5


Ho và tên
Nguyên Tuệ
Đoàn văn Ban
Lê Minh
Lý Anh Tuân
D ư Phương Hạnh

Học hàm, họcvị
TS
PGD.TS
ThS
Thực tập sinh
Thực tập sinh

Cơ quan côn 2 tác
Khoa CNTT, Đai học CN
Viện CNTT Quỏc ẹ,ia
Khoa CNTT, Đại học CN
Khoa CNTT, Đại hoc CN
Khoa CNTT, Đại học CN

Danh mục các bảng số liệu: không
Tóm tắt các kết quả chính của đề tài:
1. Tên đề tài:Mô hình cơ sở dữ liệu quan hệ và mô hình cơ sở dữ liệu hưóng đối
tượng.
M ã số: QC.04.06
2. Chủ trì đề tài: TS. Nguyễn Tuệ
3. Những kết quả chính:
a) Kết quả khoa học( những dóng góp của đê tài, các công trình khoa học cỏna bố):

Có ba báo cáo tại các hội nghị lchoa họa và hội thảo quôc gia
Tài liệu tham khảo về cơ sỏ' dữ liệu hướng đối tượng
Tài liệu tham khảo về cơ sờ dữ liệu phân tán
b) Kết quả phục vụ thực tể ( các sản phấm công nghệ, khả năng áp dụng thực tế):
Những tài liệu tham khảo của đề tài có thế đưọ’c sử dụng làm chuyên đề giảne
dạy
c) Kết quả đào tạo ( số lượng sinh viên, học viên cao học, nghiên cứu sinh làm việc
trong đề tài):


*

Có ba luận văn cao học đã bảo vệ
15 khóa luận tốt nghiệp của sinh viên
d) Kêt quả nâng cao tiềm lực khoa học (nâng cao trình độ cán bộ và tăng cưòng
trang thiêt bị cho đơn vị): Các cán bộ nghiên cứu của đề tài có các hiếu biết thêm
vê cơ sở dữ liệu hướng đối tượng và cơ sở dữ liệu phân tán.
e) Tỉnh hình sử dụng kinh phí: Đề tài được cấp kinh phí 30 triệu đồng. Đã đưọc sử
đụng đế xây trả tiền viết tài liệu, các báo cáo khoa học, mua văn phòng phẩm,
đánh máy, photocopy.

Chủ nhiệm đề tài
TS. Nguyễn Tuệ

Xác nhận của đơn vị

....

Xác nhận của cơ quan chủ quản


T Ó M T Ắ T B Ằ N G T IÉ N G A N H

P ro je c t N am e: R elatio n al D atab ase M odel and O b ject O riented D atabase M odel
Number: QC.04.06.
Project O w ner : Dr. Nguyễn Tuệ
Department o f Information Systems
Faculty o f Information Technology
Main results:
1- Document o f Object Database Model. This includes two section:
a) Concepts for Object-Oriented Database
b) Object Database Standards, Languages and Desien
2- Docum ent o f Distributed Database, including three section:
a) Distributed Databases: An Overview
b) Levels o f Distribution Transparency
c) Distributed Database Design
d) Transforming global queries into fracment queries
3- Three M aster thesis:
a) Hoàng thị Hương Thơm: Object Oriented Database and Softvvears for
developpement Object Oriented Database. 2005
b) Cao M inh Tâm: Database Security , 2005
c) Đào Thị Thu Vân: Query Proccessing and Transaction Management,
2005.
_
4- Finance : 30.000.000 VND
3


II PHẦN NỘI DUNG CHÍNH
1. Đặt vấn đề
Cơ sở dữ liệu là m ột môn học cơ sở của ngành Công nghệ thông tin. Đây là một môn

học có ý nghĩa rất lớn trong việc ứng dụng công nghệ thông tin vào thực tiễn. Cơ sỏ
dữ liệu hướng đối tượng và cơ sở dữ liệu phân tán là những mô hỉnh còn ít được
nghiên cứu ở nước ta. Mục tiêu của đề tài là nghiên cứu về lý thuyết cơ bản của co so
dữ liệu hướng đối tượng và cơ sở dữ liệu phân tán, đồng thòi tìm kiếm các phần mềm
cài đặt để thể hiện.
2. Tổng quan các vấn đề nghiên cứu
a) Cơ sở dữ liệu hướng đối tượng: ì,à .ột cách tiếp cận xây dựng CO' sỏ' dữ liệu dựa
trên khái niệm hướng đối tượng. Tru .g 3 tài này chúng tôi tìm hiếu các khái niệm co
bản của cơ sở dữ liệu hướng đối tưọ '1 P . à tìm hiểu một chuẩn của hệ quản trị cơ sỏ' dữ
liệu hướng đối tượng (chuẩn ODMGj. Trên cơ sỏ' đó, chúng tôi tiến hành xây c!ựn2,
thử nghiệm cơ sở dữ liệu hướng đối tượng, dựa trên một phàn mềm lấy xuốnL' từ
Internet ( phần mềm Object Store )
b) Cơ sở dữ liệu phân tán : Có thể nói, cơ sở dữ liệu phân tán là một ứng dụng của CO’
sở dữ liệu quan hệ kết hợp với mạng máy tính. Để thiết kế một CO’ sơ dữ liệu phân tán,
trước hết phải thiết kế một cơ sỏ' dữ liệu quan hệ tập trung, sail dỏ thiết kế phân đoạn
và định vị của dữ liệu. Trong đề tài này chúng tôi tập trung nghiên cửu về các khái
niệm cơ bản của cơ sở dữ liệu phân tán, thiết kế phân đoạn và thiết kế định vị một CO'
sở dữ liệu phân tán. Ngoài ra đề tài còn đề cập đến cách viết các truy vấn tronc cơ sớ
dữ liệu phân tán, cách thực hiện các truy vấn và tối ưu các truy vấn. Do chua tìm được
một pần mềm hệ quản trị cơ sở dữ liệu phân tán ( phàn mềm này khá đẩt, khả năng
kinh phí của đề tài không đủ), việc cài đặt thử nghiệm chưa tiến hành dược.
3. Địa điểm thời gian và phương pháp nghiên cứu:
Đề tài được thực hiện tại bộ môn Các hệ thống thông tin, Khoa Công nghệ thông till.
Phương pháp nghiên cứu: Đọc và tìm hiếu các tài liệu, Xeminar trĩnh bày các vấn đề
nghiên cứu, thảo luận và viết các tài liệu tham khảo, các báo cáo khoa học
4. Nội dung nghiên cứu :
Phần 1: Cơ sở dữ liệu hướng đối tượng
a) Các khái niệm cơ bản
b) Chuẩn ỌDMG
c) Phần mềm Object Store

d) Cài đặt thử nghiệm
Phần 2: Cơ sở dữ liệu phân tán
a) Các khái niệm cơ bản của mô hình CSDL phân tán
b) Thiết kế phân đoạn cơ sỏ' dữ liệu phân tán
c) Thiết kế định vị cơ sở dữ liệu phân tán
đ) Chuyển đổi các truy vấn toàn cục thành truy vàn đoạn và tối ƯU truv vấn
5. Thảo luận
Cơ sở dữ liệu hướng đối tượng và CO’ sở dữ liệu phân lán là hai mô hình CO’ sơ dữ
liệu cỏ ý nghĩa lý luận và thực tiễn cao. Việc nghiên cứu, triêỉi khai ứng dụng của hai
4


mô hình này đòi hỏi một sự tập trung nhân lực, thời gian và kinh phí khá lớn. Những
vân đê vê cơ sở đã được đê cập đên trong đê tài , tuy nhiên việc cài đặt thứ nghiệm
cũng như việc xây đựng hệ thống phần mềm thương mại chưa có khả năna đè làm
được
6 . Kết luận và kiến nghị
Đê nghị cho phép được tiếp tục nghiên cứu những vân đê đặt ra tron 2 đê tài.
II. TÀI LIỆU THAM KHẢO
[1] R. Elmasri and s. Navathe, ‘Fundamentals o f Database System s’, 3rd eđ., pp.
359-363
[2] K. Pentayya, ‘Object Oriented Database (OODB)’, Oct, 2002
[3] Bloor Research, ‘ObjectStore from Progress Softw are’, 2005
[4] S. Clarke, ‘Object Design: Object Store’, May, 2001
[5]
[6 ]
[7] Hector Garcia-Molina, Jeffrey D.Ullman, Jennifer Widom
Database System: The complete Book. Prentice-Hall.Inc, 2002.
[ 8 ] James A.Anderson
Discrete Mathematics with combinatorics.Prcntice-Hall.Inc, 2001

[9] Stefano Ceri, Giuseppe Pelagatti
Distributed Databases. Principles and Systems. McGraw-Hill Book Co. 1985
[10] M .Tamer Ozsu, Patrick Valduriez:
Principles o f Distributed Database Systems. Prentice Hall,Inc 1991
III. PH Ụ L Ự C
Phan này bao gồm:
Phụ lục 1: Tài liệu về cơ sở dữ liệu hướng đối tượng
Phụ lục 2: Tài liệu về cơ sở dữ liệu phân tán
Phụ lục 3: Photocopy báo cáo khoa học
Phụ lục 4: Photocopy một số trang bìa luận văn thạc sỹ đã bảo vệ

5


Phụ lục 1:

c ơ s ở D Ữ LIỆU HƯỚNG ĐỐI TƯỢNG
(T ài liệu tham khảo)

1-Mở đầu
Các cơ sở dữ liệu truyền thống như CSDL quan hệ, CSDL phân cấp và CSDL
mạng đã rất thành công trong việc phát triển kỹ thuật CSDL đối với các ứng dụns
CSDL thương mại truyền thống. Tuy nhiên, chúng có một số khiêm khuyêt khi phải
thiêt kế những ứng dụng cơ sở dữ liệu phức tạp (ví dụ, CSDL cho thiết ké công
nghiệp, cốc thí nghiệm khoa học, truyền thông, hệ thông tin địa lý ,...) .Các ứng dụng
mới này có các đòi hỏi và các đặc trưng khác với các ứng dụng truyền thống, chẳng
hạn như cấu trúc các đoi tượng phức tạp hơn, các gicio tác kéo dài hơn, các kiêu dữ
liệu m ới đê lim g iữ hình ảnh hoặc các văn bản lớn và sụ cân thiêt định nghĩa những
phép toán ứng dụng riêng không chưẩn1 Các cơ sở dữ liệu hướng đối tượne được đề
nghị đê đáp ứng các yêu cầu của các ứng dụng phức tạp hơn này. Cách tiếp cận huóna

đôi tượng cung cấp sự mềm dẻo để đáp ứng các đòi hỏi này mà không bị hạn chế bơi
các kiêu dữ liệu và các ngôn ngữ truy vấn có trong các hệ CO' sở dữ liệu truyền thống.
M ột đặc trưng chủ chốt của các cơ sở dữ liệu hirớng đoi tượng là sức mạnh nó cho
các nhà thiêt kế đê chỉ ra cả cấu trúc của các đoi tượng phức tạp và các phép toán có
thể áp dụng được cho các đoi tượng đó.
M ột lý do khác để tạo ra các cơ sở dữ liệu hướng đối tượng là việc gia tăng sử
d ụ n g các n g ô n n g ữ lập trình h ư ớ ng đ ô i tư ợ n g tro n g việc p h á t triên các ứng
d ụ n g p h â n m ềm . Hiện nay, các cơ sỏ' dữ liệu trở thành các thành phần CO' bản trong
nhiều hệ thong phần mềm, và các cơ sở dữ liệu truyền thống khó sử dụng khi dược
nhúng trong các ứng dụng phần mềm hướng đối tượng đuợc phát triển tronạ một
ngôn ngữ lập trình hướng đối tượng như là C++, SMALTALK hoặc JAVA. Các cơ sỏdữ liệu hướng đối tượng đã được thiết kế vì vậy chúng có thể đuợc tích hợp một cách
trực tiếp hoặc hoàn toàn phù họp với phẩn mềm đuợc phát triển bằng cách sử dụng
ngôn ngữ lập trình hướng đối tượng. Sự cần thiết phải có thêm các tính chất mô hình
dữ liệu đã được các nhà bán các hệ quản trị cơ sở dữ liệu quan hệ thừa nhận, và các
phiên bản mới của các hệ thống quan hệ đầng kết hợp nhiều đặc trưng được đề nshị
cho cơ sở dữ liệu hướng đối tượng. Điều đó đã dẫn đến các hệ thống được dặc trưng
như là các hệ quản trị CSDL quan hệ mở rộng hoặc quan hệ đối tượne. Chuấn tiếp
theo của SQL chuẩn đối với các hệ quản trị CO’ sở dữ liệu , SQL3, sẽ có thêm các đặc
trưng này.
Trong vài năm gần đây, nhiều bản mẫu thí nghiệm và các hệ cơ sở dữ liệu hướng đổi
tượng đã đưọ'c tạo ra. Các bản mẫu thí nghiệm gôm: hệ thông ORION dược phát triển
tai MMC (M icroelectronics and Computer Technologie Corporation, Austin, Texas).
OPENOODB ở Texas Instrument, hệ thông IRIS ở các phòng thí nghiêm của
Hewlett-Packard, hệ thống AT&T Bell Labs ( nay là Lucent Technologic) và dự án
EN CORE/O bServer ở Brown University.
Các hệ thống thương mại cỏ sẵn bao gồm GEM STONE/OPAL của GemStone
Systems, ONTO của Onto, Objectivity của Objectivity Inc, Versant của Versant
ó



Object Technologie, ObjectStore của Object Design, ARDENT của ARDENT
Software, POET của POET Software.
Trên đây chỉ là một phần trong danh sách các bản mẫu và các hệ cơ sở dữ liệu hướng
đôi tượng thương mại đang có sẵn.
Vì các hệ quản trị cơ sở dừ liệu hướng đoi tirợng trở thành săn cỏ, sự cân thiêt có
m ột mồ hình chuẩn và một ngôn ngữ chuẩn được thừa nhận. Vỉ các thủ tục hình thức
đe thừa nhận một chuẩn phải mất nhiều năm, một nhóm các nhà bán hệ quản trị cơ sỏ'
dữ liêu hướng đối tượng và các người dùng gọi là ODMG ( Object Database
M anagement Group) đã đưa ra một chuẩn gọi là ODMG-93.
Các cơ sở đữ liệu hướng đối tượng đã chấp nhận nhiều khái niệm được pháttriển
cho các ngôn ngữ lập trình hướng đổi tượng.

2. Các khái niệm hưóng đối tượng
Chúng ta sẽ gọi tát các cơ sở dữ liệu hướng đối tượng là OODB (object oriented
database), các ngôn ngữ lập trình hướng đối tượng là OOPL (object oriented
programming language).
Một đối tượng thường có hai thành phần: trạng thái (giá trị) và hành trạng (các phép
toán). Như vậy một đối tượng gần như là một biến chương trình ỉronq một ngôn ngữ
lập trình ngoại trừ việc nó cỏ một cấu trúc dữ liệu phức tạp cũng như các phép toán
riêng được người ỉập trình định nghĩa. Các đôi tượng tron? OOPL chí tôn tại trong
quá trình thực hiên chương trình và vì vậy chúng đưọ'c gọi là các dối tượna nhất thời.
Một cơ sở dữ liệu hướng đối tượng cố thể kéo dài sự tồn tại của các dổi tượng sao cho
chúng được lưu trữ một cách thường trực, và như vậy các đối tuợng vẫn tồn tại lâu
hơn việc kết thúc chương trình và có thể dược lấy ra sau này và đuợc các chươne trinh
khác chia sẻ. Nói cách khác, các OODB lưu trữ các đoi tượng tồn tại lâu theo cách
thường trực trên bộ nhớ ph ụ và cho phép chia sẻ các đoi tượng này cho các chương
trình và các ứng dụng. Điều đó yêu cầu việc sát nhập các đặc trưng quen biết của các
hệ quản trị cơ sở dữ liệu như cơ cấu chỉ số hóa, kiếm tra cạnh tranh, phuc hồi. Một hệ
cơ sở dữ liệu hướng đối tượng giao diện vói một hoặc nhiều ngôn nẹữ lập trinh huớne
đối tượng để cung cấp các khả năng chia sẻ và lưu trữ đối tượng.

M ôt mục tiêu của OODB là duy trì một môi liên hệ trực tiêp giữa thế giới thực và
các đối tirợng của cơ sở dữ liệu sao cho các đôi tượng không mât tính toàn vẹn và đặc
tính và được nhận dạng và thực hiện các phép toán trên chủngjnột cách dê cỉàng. Vì
vậy cơ sở dữ liệu 0 0 cung cấp một định danh đối tượna, (OID) duy nhất do hệ thống;
tạo ra cho mỗi đối tượng. Chúng ta có thể so sánh cái đó vói 111Ô hình cơ sỏ' dữ liệu
quan hệ, trong đó mỗi quan hệ phải có một thuộc tính khóa chính mà giá trị của nỏ xác
định mồi bộ một cách duy nhâí. Trong mô hình quan hệ, nếu giá trị của khóa chính bị
thay đổi, bộ giá trị sẽ có một định danh mới mặc dù nó có thê vẫn còn biểu thị cùng
một đối tượng của thế giới thực. Ngược lại, một đôi tượng thê giới thực có thể có các
tên khác nhau cho các thuộc tính khóa trong các quan hệ khác nhau làm cho khó xác
định rằng các khóa biểu diễn cùng một đối tượng (Ví dụ, định danh đối tượng có thể
được biểu diễn như EM P_ID trong một quan hệ và như là SNN trong quan hệ khác.

7


'4ôt đặc trưng nữa của 0 0 '
lờ ĩc đối tượng cỏ thể có một cẩu trúc đổi tượng cỏ
độ /n ứ c tạp tủy ỷ để chÚL ii r
tc thông tin cần thiết mô tả đoi tượng. Neược lại.
tron^ l ác hệ thống cơ sở (
X. truyền thống thông tin về một đối tượng phức tạp
được -Vi trên nhiều quan '.lự và bản ghi, dẫn đến làm mất sự liên hệ trực tiếp giữa một
đôi tưựnạ thế f'ù;' ilạ rc 1 à ' . ;u diễn cơ sở dữ liệu của nó.
Câu true bẽii ,: Lyjig của một đối tượng trong OOPL bao gồm đặc tả của các hiên thê
hiện, chún:'
' ,ia trị xác định trạng thái bên trong của đối tưạns. Vì thế. một
biên thê hỉệ). I
tỵ như khái niệm thuộc tính ngoại trừ rcmg các biến thê hiện có
thê được bao ỢL

ĩ trong đối tượng và như vậy chúng không cần phai nhìII thấy
được đôi với cúc 1
' ỉùny bên ngoài. Các biến thể hiện cũng có thế là các kiêu dữ
liệu phức tạp tùy ý.
■ hệ iiống hưó'ng đối tưọng cho phép các định nahĩa của các
p h é p toán h o ặc các hi m V ì I' i Lrạng) có thể dư ợc áp d ụ n g cho các dối tirợnu cua m ột

kiểu cụ thể. Thực tế !. .t.ộf 'I JTIÔ hình 0 0 (object oriented) đòi hỏi rằnạ tất cả các
phép toán mà m ột nguưi di 'Iị_ ó thể áp dụng cho một đối tượng phải được định nghĩa
trước. Điều đó bắt buộc mội s
ao gói đầy dủ của các đối tượng. Cách tiếp cận cứns
nhắc này đã được nới lỏng troi hầu hết các mô hình 0 0 do nhiều nguyên nhân. Thứ
nhất, người sử dụng CO' sở dữ 1 ;u thường cần biết các tên thuộc tính dế họ có the chì
ra các điều kiện lựa chọn ti./i c ic thuộc tính để rút ra các đối tượng cụ thể. Thứ hai,
việc bao gói đày đủ kéo the
1 %bất kỳ một phép rút ra đon giản đòi hởi một phép
toán định nghĩa trước, như vạ_) ụ ' tạo các truy vấn tức thời ( ad hoc) khó chi ra .
Đe hỗ trợ sự bao gói, một phv 0 oán đưọ'c định nghĩa trên hai phần: Phần dầu tiên
gọi là giao diện hoặc chữ ký của pỉ ' I lán, chỉ ra tên phép toán và các dôi sỏ ( hoặc
các thông số). Phần thứ hai được gt
I phương thức (hoặc them, chi ra thê hiện của
phép toán. Các phép toán có thể đưc gọi đến bàng cách chuyến một thông điệp đến
một đối tượng, thông diệp chứa tên I. : phép toán và các tham số. Sau dó dối tượng
thực hiện phương thức cho phép toán u y . Sự bao gói này cho phép sự thay đối cấu
trúc bên trong của m ột đối tượng cũng íiư việc thể hiện các phép toán của nó không
làm xáo trộn các chương trình bên ngc 1 gọi các phép toán này. Như vậy. sự bao gói
cung cắp một dạng của độc lập dữ liệu
phép toán.
Một khái niệm chủ chốt lchác trong hệ liiống 0 0 là các phân cap ỉớp và kiêu và tính
thừa kế. Điều đó cho phép đặc tả của cá lviểu mới hoặc các lớp mới thừa kế nhiều cấu

trúc và phép toán từ các lớp và các kiểu được định nghĩa trước đó. Như vậy, đặc tả của
các kiểu đối tượng có thể được tiến hàiiỉi một cách có hệ thông. Điều dó làm cho dễ
phát triển các kiểu dữ liệu của hệ thông một cách tăng dân và sử dung lại các định
nghĩa kiểu đã tồn tại khi tạo ra các kiểu mới của các đối tượng.
Một vấn đề trong các hệ thống 0 0 trước kia bị mắc míu là việc biêu diễn các mối
liên hệ giữa các đối tưọng. Việc nhấn mạnh trên sự bao gói hoàn toàn trong các mô
hình dữ liệu 0 0 trước kia dẫn đến việc các mối quan hệ không được biếu diễn một
cách tường minh nhưng thay vào đó, nó được mô tả băng cách định nghĩa các phương
thức thích hợp nàm ở các đối tượng có liên quan. Tuy nhiên, cách tiếp cạn này làm
việc không tốt lắm đối với các cơ sở dừ liệu phức tạp với nhiêu môi liên hệ, vì vậy
việc xác định các mối liên hệ này và làm chúng nhìn thây được đổi vói các nsirài dùng
là một việc có lợi. Chuẩn ODMG 2.0 đã nhận ra sự cần thiết này vả nó biểu diễn
tường minh các m ỗi liên hệ hai ngôi thông qua m ột cặp tham chiêu ngược, nghĩa là
8


băng cách đặt OID của các đối tượng liên kết ở bên trong chính các đối tượna và duy
trì toàn vẹn tham chiếu như sẽ được mô tả ở chương sau.
Một số hệ thống 0 0 cung cấp khả năng để làm việc với nhiều phiên bàn của cùng
một đối tượng - một đặc trung chủ yếu trong thiết kế và ứng dụng công nghệ. Ví dụ,
một phiên bản cũ của một đối tượng biểu diễn một thiết kế đă được kiêm tra và xác
nhận phải được giữ lại cho đến khi phiên bản mới được kiểm tra và đuợc xác nhận.
Một phiên bản mới của của một đối tượng phức tạp có thể chỉ chứa một vài phiên bán
mới của các đổi tượng thành phần của chủng, trong khi đó các thành phần khác khôns,
thay đổi. Thêm vào việc cho phép tạo phiên bản, các cơ sở dữ liệu 0 0 cũng cho phép
phát triển lược đồ, nó xảy ra khi các khai báo kiểu thay đối hoặc khi các kiểu mói hoặc
môi quan hệ mới được tạo ra. Hai tính chất này không phải đặc trưng cho các OODB
và được chứa trong mọi kiểu hệ quản trị cơ sở dữ liệu.
Một khái niệm 0 0 khác là đa hình toán tử ( operator polym orphism ), nó liên quan
đến một khả năng phép toán có thể được áp dụng cho nhiều kiểu đối tượng khác nhau;

trong tinh huống như vậy, một tên phép toán có liên quan tói nhiều thế hiện khác
nhau, phụ thuộc vào kiểu đối tượng mà nó áp dụng vào. Tính chất này cũng còn được
gọi là nạp chồng toán tử (operator overloading). Ví dụ một phép toán tính diện tích
của một đối tượng hình học có thể khác nhau trong phương ihức ( implementation)
của chúng phụ thuộc vào việc đối tượng thuộc lciếu tam giác, hình tròn hay hình chữ
nhật. Điều đó có thể đòi hỏi việc sử dụng liên kết chậm ( late binding) của tên phép
toán với phương thức thích hợp tại thời điếm chạy khi đó kiểu đối tượng mà phép toán
được áp dụng trở nên biết được.
Phần này đã cung cấp một tổng quan về các khái niệm chính của một cơ sớ dữ liệu
00 .
2.1 Đ ịn h d an h đối tư ọ n g , c ấ u trúc đối tưọmg, K iến tạo kiểu
Trong phần này, trước tiên chúng ta thảo luận khái niệm định danh đối tượne, và sau
đó chúng ta giới thiệu các phép toán kiến trúc quen thuộc để định nghTa cấu trúc của
trạng thái của một đối tượng. Các phép toán cấu trúc này thưòng được gọi là các kiến
tạo kiểu ( type constructor). Chúng xác định các phép toán kiến trúc dữ liệu cơ bản có
thể được tổ hợp để tạo ra các cấu trúc đối tượng phức tạp.
2.1.1 Định danh đối tượng
M ột hệ thống cơ sở dữ liệu hướng đổi tượng cung câp một định danh duy nhất cho
mỗi đối tượng độc lập được lưu trữ trong cơ sở dữ liệu. Định danh duy nhất này được
cài đặt thông qua một object identifier do hệ thống tạo ra duy nhât, gọi là OID. Giá trị
cùa một OỈD là không nhìn thấy được đổi với các người dùng bền ngoài nhưng nó
đươc hê thống sử dụng bên trong để xác định mỗi đổi tượng một cách duy nhất và để
tạo ra và quản lý các tham chiêu giữa các đôi tượng.
Tính chất chủ yếu được đòi hỏi ở một OID là nó phải không thay đối ( immutable);
điều đó có nghĩa là giá trị OID của một đôi tượng cụ thê không được thay đôi. Điều đó
bảo quản tên gọi của đổi tượng thê giới thực được biêu diên. Như vậy, một hệ cơ sở dữ
9


liệu o o p h ả i có một cơ cẩu nào đó để tạo ra các OID và bảo quản tính chất không

thay đoi. Nó cũng mong muốn rằng mỗi OID chỉ được sử dụng một lần, nghĩa là, nếu
một đôi tượng bi loại bỏ khỏi cơ sở dữ liệu, OID của nó sẽ không được gán cho đôi
tượng khác. Hai tính chất này kéo theo rằng OID không phụ thuôc vào giá trị thuộc
tính nào của đối tượng, bởi vì giá trị của một thuộc tính có thể thay đôi hoặc được sửa
chữa. Việc căn cứ OID vào địa chỉ vật lý của đối tượng cũng không hợp lý, bởi vì địa
chì vật lý cũng có thể thay đổi sau khi tổ chức lại vật lý của cơ sở dũ' liệu. Tuy nhiên,
một số hệ thống sử dụng địa chi vật lý như là OID để làm tăng hiệu quả của việc rút ra
đối tượng. N ếu địa chỉ vật lý của một đối tượng thay đổi, một con trỏ gián tiếp có thế
được đặt ở địa chỉ cũ, nó cho định vị vật lý mới của đối tượng. Tiện lợi nhất là sử dụns
các số nguyên dài làm các OID và sau đó sử dụng một vài dạng của bảng băm để ánh
xạ giá trị OID vào địa chỉ vật lý của đối tượng.
Một số mô hình dữ liệu 0 0 trước kia đòi hỏi rằng mọi thứ - từ một giá trị đơn giản
đên một đối tượng phức tạp - phải được biểu diễn như là một đối tượng; như vậy, mỗi
một giá trị cơ sở như là một số nguyên, một chuỗi lcý tự, một giá trị logic đều có một
OID. Điều đó cho phép hai giá trị cơ sở có các OID khác nhau, nó có lợi trong một số
trường hơp. Ví dụ, số nguyên giá trị 50 có thể được sử dụng đế chỉ một trọng lưọng
theo kilô gam và khi khác đùng để chỉ tuổi của một người. Sau đó, hai đôi tượng với
các OID khác nhau có thể được tạo ra , nhưng cả hai đối tượng sẽ biếu diễn một số
nguyên có giá trị 50. Mặc dù tiện lợi về mặt lý thuyết nhưng điều đó không thực tiễn,
bởi vì điều đó có thể dẫn đến việc tạo ra quá nhiều OID. Vì vậy, đa số các hệ cơ sỏ' dữ
liệu hướng đối tượng cho phép biểu diễn cả hai: các đối tượng và các gi a trị. Mỗi một
đối tượng phải có một OID không thay đổi, trong khi một giá trị không có OID và như
vậy là thay thế cho chính nó. Như vậy, một giá trị thường đưọ'c lưu trù bên trong một
đối tượng và không được các đổi tượng khác tham chiếu đến. Trong một số hệ thống,
các giá trị có cấu trúc phức tạp cũng cỏ thể được tạo ra mà không có một OID tương
ứng nếu cần.
2.1.2 Cấu trúc đối tượng ( Object Structure)
Trong cơ sở dữ liệu hướng đối tượng, trạng thái ( giá trị hiện tại) của một đối tượng
phức tạp có thể được xây dựng từ các đối tưọng khác ( hoặc các giá trị khác) bàng
cách sử dụng một số kiến tạo kiểu. Một cách hình thức để biểu diễn các đối tượne như

vậy là xem mỗi đối tượng như là một bộ ba (i,c,v) tronơ đó i là một định danh đổi
tượng duy nhất (OID), c là kiến tạo kiểu ( nghĩa là một chỉ dẫn về xây dựng trạng thái
đối tượng như thế nào ), và V là ứạng thái đôi tượng ( hoặc giá trị hiện tại) . Một mô
hình dữ liệu sẽ chứa nhiều kiến tạo kiểu. Ba kiến tạo kiểu cơ bản nhất là atom, tuple,
và set. Các kiến tạo kiểu thường dùng khác là list, bag và array. Các tạo kiểu atom
được sử dụng để biểu diễn mọi giá trị nguyên tử cơ bản, chẳng hạn như số nsuyên, sổ
thưc, các chuỗi ký tự, các giá trị logic và mọi lciểu dữ liệu cơ bản mà hệ thống hỗ trợ
một cách trực tiêp.
Trạng thái đối tượng V cùa một đôi tượng (i,c,v) được diên giải dựa trên tạo kiêu c.
Nấu c = atom, trạng thái (giá trị) V là một giá trị nguyên tử từ miền giá trị cửa các giá
trị cơ bản được hệ thống hỗ trợ.

10


Nếu c = set, trạng thái V là một tập họp các định danh đối tượng { i|,i 2 ,...,in} đó là
ác OID cho một tập các đối tượng thường cùng một kiểu.
Nêu c = tuple, trạng thái V là một bộ có dạng < ai:ii, a 2 :i2,
an:in >, trong đó môi aj
à m ột tên thuộc tính ( hoặc là tên biến thể hiện) và mỗi ij là một OID .
Nêu c = list, giá trị V là một danh sách có thứ tự
[ i|,i2,-. -,in] các OID của các đối
ượng cùng một kiểu. M ột list tương tự như một set ngoại trừ rằng các OID trong list
à có thứ tự, và như vậy chúng ta có thể tham chiếu đến đối tượng thứ nhất, thứ 2 hoặc
hứ i trong một danh sách.
Với c - aưay, trạng thái của đối tượng là một mảng một chiều các định danh đối
ượng.
Sự khác nhau chính giữa danh sách (list) và mảng (array) là ở chỗ một danh sách có
:hế có một số tùy ý các phần tử trong khi đó một mảng thường có một kích thước tối
ỉa.

Sự khác nhau giữa tập hợp(set) và tủi (bag) là ở chỗ mọi phần tử trong một tập họp
phải khác nhau trong khi đó một túi có thể có các phần tử trùng nhau.
Mô hình đối tưọĩig này cho phép lồng nhau tùy ý của tập hợp, danh sách, bộ và các
kiến tạo kiểu khác. Trạng thái của một đối tượng không là kiếu atom sẽ tham chiếu
đến các đối tượng khác bàng các OID của chúng. Như vậy, trường họp duy nhất mà ỏ'
đó một giá trị hiện tại xuất hiện trong trạng thái của một đối tượng kiểu atom.
Các kiến tạo kiểu set, list, aưay, và bag đưọ’c gọi là các kiêu tập hợp đè phàn biệt
chúng với các kiểu cơ bản hoặc kiểu bộ (tuple). Các đặc trung chính của của một kiêu
tập hợp là ở chỗ trạng thái của đối tượng sẽ là một tập họp đối tượng có thể là không
có thứ tự ( chẳng hạn là set hoặc bag) hoặc có thứ tự ( chăng hạn như list hoặc array).
Kiến tạo kiếu bộe thường được gọi là kiêu có cẩu trúc, bởi vì nó tương ửn° vói cấu
trúc struc trong các ngôn ngữ lập trình c và C++.
Ví dụ 1: Một đối tượng phức tạp
Xét cơ sở dữ liệu bao gồm các bảng:
EM PLOYEES
DEPARTM ENT
PROJECT
W ORKON
DEPENDENT
Bây giờ chúng ta biểu diễn một vài đối tượng từ sử dụng mô hình 0 ' trên, trong đó
một dổi tượng được định nghĩa bằng một bộ ba (OID, Tạo kiếu, trạng thái), và các tạo
kiểu sẵn có là atom, set, và tuple. Chúng ta sử dụng i[, i2, i_ì, ...dể thay cho các định
danh đổi tưọng duy nhất do hệ thong tạo ra. Xét các dối tưọng sau đây:
0 | - ( i 1, atom, ‘H ouston’)
0 2 = ( Ỉ2 , atom, ‘Bellaire’)
0 3 = ( 13, atom, ‘Sugarland’)
0 4 = ( Ì4 ,atom, 5)
0 5 = ( 15 , atom, ‘Research’)
oó = ( i0 7 = (i7, set, {ii,Ì2,i3})

Og =(ig, tuple, < Dname: i5, Dnumber:i4, Mgr:ig, Location:i7,


09

=(i

;NiiJĩ OYEESiiio, PROJECT:i| |>)
nl< , < M an ag er:^ Manaị r c rt_Date: Ì6>)

°!0 = (i,0
°1! = ( ill,
0 ,2

= ( ìn , ti

■> ( í 12, i | 3 > i u } )
f í Ĩ l 5 »il 6 »il 7 } )

< Fname:iig, L.n'.r e:i19, SSN:i 2 i,..... , DEPT:iS>)

Sáu đổi tượng đầu lé n được liệt ]:ê va ở đây biểu diễn các giá trị nguyên tử. Sẽ có
nhiều đối tượng tương I
nỗi đổi v.tợng cho một giá trị hằng nguyên tử khác nhau
trong cơ sở dữ liệu. Đối . mg 0 íà một đối tượng giá trị tập họp, biểu diễn tập họp
địa điếm của đơn vị 5: T í 'lợp ; 1 ,12,13} tham chiếu đến các đối tượng nguyên tứ với
các giá trị { ‘Houston
lai
, Sugarland’}, Đối tượng os là một đối tượng giá trị
bộ biếu diễn chính đơn Y. ■ 'à ó các thuộc tính Dname, Dnumber, Mgr, Location, V

V. Hai thuộc tính đầu Dnaihc V' [ number có các đối tượng nguyên tử như là các giá
trị của chúng. Thuộc tính ỈY!'T c Iiột đối tượng bộ Oọ như là giá tộ của nó, đổi tượng
đó lại có hai thuộc tính. GI ' ị t 1 ihuộc tính M anager là một đối lượng có OID là i 12 ,
nó biểu thị nhân viên ‘ Joì lì ! lith’, người này quản lý đơn vị, tron 9, khi dó giá trị
của M anager_Start_Date la .. ộ. lối tượng nguyên tử khác mà giá trị của nó là mội
ngày. Giá trị của thuộc tính Eí ’ .OYEES của os là một dối tượng tập hợp với OID i 10 , giá trị của nó là một tập họ : các định danh đối tượng đối vói các nhân viên làm
việc cho đơn vị ( Các đổi tượng 1 !2 , i 13, i 15, không dưọc chỉ ra ở đây ). Một cách
tương tự, giá trị của thuộc tính PỈLC ! !CTS của Og là một đối tượng tập hợpvới OID =
in , và giá trị của nó là tập hợp các c ii danh đổi tượng đối với các dự án được đơn vị
5 kiểm soát ( các đối tượng ii 5,ii 6 ,i 17 nông được chỉ ra ở đây. Đối tượng có OID là i 12
biểu diễn nhân viên ‘John B Smiử với tất cả các thuộc tính nguyên tử của nó (
Fname, Minit, Lname, SSN, ...,5 alary,
biếu diễn các đối tượnc nguyên tư
i!s,iJ9 ,... .i26 tương ứng ( không chí a ở đây )) cộna với Supervisor tham chiếu dối
tượng nhân viên với OID = i27 ( bit 1 diên ‘James E Borg' người 2,1 ám sát ‘John B.
Sm ith’ nhưng không chỉ ra ) và DEPV tham chiếu đến đổi tượng don vị với OID = ig (
biểu diễn đơn vị 5 nơi mà John B Smith làm việc ).
Trong mô hình này, một đối tượng ró thể được biểu diễn như một cấu trúc đồ thị có
thể được xây dựng bằng cách áp dụng các kiến tạo kiếu một cách quy nạp. Đồ thị biểu
diễn đối tượng Oj có thể được xây dựng bằng cách đầu tiên tạo ra một đính đối với
chính đối tượng Oj. Đỉnh cho Oi được gán nhãn bang OID và kiến tạo kiêu c. Chúnẹ ta
cũng tạo ra một đỉnh trong đồ thị đối với mỗi giá trị nguyên tử cơ bản. Neu đối tượng
0 ,có một giá trị nguyên tử, ta vẽ một cạnh có hướng từ đỉnh biếu diễn O; đến đỉnh biểu
diễn giá trị cơ sở của nó. Neu giá trị đối tượng là có cấu trúc, ta vẽ một cạnh có hướng
từ đỉnh đối tượng đến đỉnh biểu diễn giá trị có cấu trúc. Hình vẽ 2.1 (tran? sau) biếu
diễn đồ thị cho ví dụ đối tượng đơn vị Og cho từ trước.
Mô hình ở trên cho phép hai kiểu định nghĩa trong việc so sánh bãna về Irạne ihái
của hai đối tưọng. Hai đối tượng đưọ-c nói là có trạng thủi ỔỎHÍỊ nhất ( bang nhau sâu)
nếu các đồ thị biểu diễn các trạng thái của chúng là đồno nhất trone môi phưoìia diện,
bao gồm OID tại mỗi mức. Một định nghĩa khác về bằng nhau yếu hon khi hai dối

tượng có các trạng thái bỗng nhau ( băng nhau nông). Trong trường hợp này , các cấu
trúc đồ thị phải gióng nhau và tât cả các giá trị nguyên tử tưcrng ứng trong các đồ thị
12


ũng phải như nhau. Tuy nhiên, một vài đỉnh trong trong hai đồ thị có thề có các đối
ượng với các OID khác nhau.
Ví dụ 2 : Các đối tượng đồng nhất và bằng nhau
Xét các đối tượng 0 ],0 2 ,0 3 ,0 4 ,0 5 và 0 6 sau đây:
01 = ( i I, tuple, < a i: Ì 4 , a2:i6> )
0 2 = 0 2 , tuple < a ,:i5, a2 :i6>)
0 3 = (i3f tuple, <a,:i4, a2 :Ì6>)
0 4 = (i4, atom, 1 0 )
05 = ( i 5, a t o m , 1 0 )
0 6 = ( iỏ, atom, 2 0 )
Các đối tượng Oi và o 2 có các trạng thái bằng nhau, bởi vì các trạng thái của nỏ ỏ
mức nguyên tử là như nhau nhưng các giá trị đi đến từ các đối tượng 04 và 05 là khác
nhau. Trong khi đó các trạng thái của các đối tượng 0 ] và 0 3 là đồng nhất mặc dù bàn
thân các đối tượng thì không đồng nhất bởi vì chúng có các OID khác nhau. Tươne, tự
như vậy, mặc dù các trạng thái của 0 4 và 0 5 là đồng nhất, các dối tượng 0 4 và 05 là
bằng nhau nhưng lthông đồng nhất bởi vì chúng có các OID khác nhau.

2.1.3 Các kiến tạo ldểu
Một ngôn ngữ định nghĩa đối tượng (ODL) kết họp các kiến tạo kiểu ỏ' trên có thế
dược sử dụng để dịnh nghĩa các kiểu đối tượng cho một ứng dụng cơ sở dữ liệu cụ thế.
Trong chương sau chúng ta sẽ mô tả ODL chuẩn của ODMG. Các kiến tạo kiêu có
thể được sử dụng để định nghĩa các cấu trúc dữ liệu cho môt lược dồ cơ sỏ đừ liệu
hướng đổi tượng. Hình 2.2 sau đây minh họa việc khai báo của các kiểu Employee và
Department tương ứng với các thể hiện đôi tượng chỉ ra ở hình 2.1. Chúng ta sử dụng
các từ khóa tuple, set và list đối với các kiến tạo kiểu, và các kiểu dữ liệu chuẩn có sẵn

( integer, string, float, ...) đối với các kiểu nguyên tử. Các thuộc tính tham chiểu dến
các đối tượng khác , chẳng hạn như dept của Employee hoặc project của D epartm en t
- là các tham chiếu cơ bản đến các đối tượng khác và vỉ vậy dùng đế biếu diễn mối
liên kết giữa các kiểu đối tượng. Ví dụ, thuộc tính dept của Employee là thuộc kiêu
Departement, và vì vậy được dử dụng đế tham chiếu đến một đổi tượng Departement
cụ thể ( ở đó nhàn viên làm việc). Giá trị của thuộc tính như vậy sẽ là một 0 1 D dối với
một đối tượng Departement cụ thể. Một mối quan hệ hai ngôi có thê được biểu diễn
trong một chiều, hoặc nó có thể có một tham chiếu ngược. Cách biếu diễn san làm dễ
viêc đi qua mối liên két theo cả hai chiều. Ví dụ, thuộc tính employees của
Department có giá trị là một tập hợp các tham chiêu ( nghĩa là một tập các OID) đến
các đối tượng của kiêu Employee; đó là các nhân viên làm việc cho đơn vị. Tham
chiếu ngược là thuộc tính tham chiếu dept của Employee (hình 2).

13


LEGEND:

o

object

Hình 2.1. Biêu diên một đôi tượne phức tạp
14


define type Employee:
tuple ( fname : string;
minit: char;
lname: string;

ssn:
string;
birthday: Date;
address: string;
sex : char;
salary : float;
supervisor: Employee;
d e p t: Department; ) ;
define type Date:
tuple ( year : integer;
month : integer;
day: integer ; ) ;
define type Departement:
tuple ( dname : string;
dnumber: integer;
mgr : tuple ( manager : Employee;
startdate: Date ; ) ;
locations : set (string);
employees: set(Em ployee);
projects : set( Project); );
Hình 2.2: Đặc tả các kiểu đối tượng Employee, Date, Departement
bằng cách sử dụng các kiến tạo lciếu.
2.2 B ao gói các p hép toán , các p hư ơng thứ c, và tính bền.
Khái niệm bao gói ( encapsulation) là một đặc trưng chính của các ngôn ngữ và các
hệ thống hirớng đối tượng . Nó cũng liên quan đến khái niệm các kiêu dữ liệu trừu
tương và che dấu thông tin trong ngôn ngữ lập trình. Trong các mô hình và các hệ
thống cơ sở dữ liệu truyền thống, khái niệm này không được áp duns bới vì nó
thường làm cho các người dùng và các chương trình bên ngoài nhìn thấy được câu trúc
của các đối tượng cơ sở dữ liệu. Trong các mô hình truyền thống này, một số các phép
toán cơ sở dữ liệu chuẩn áp dụng được cho các đối tượng của tất cả các kiểu. Ví du.

trong mô hình quan hệ, các phép toán chọn, chèn, xóa, và sửa đối các bộ được tạo ra
và và có thể được áp dụng cho mọi quan hệ trong cơ sở dữ liệu. Quan hệ và các thuộc
tính của nó là nhìn thấy được đối với ngưòi dùng và đối với các chương trình bên
ngoài truy cập đển quan hệ bàng việc sử dụng các phép toán này.

15


2.3.Í Đụ" iả ứng xử CO

lig thông qua các phép toán ló p

Các k 1 rii 'm về ho đấu thông tin và bao gói có thể áp dụng được đối vói các dối
tượng cơ : T V. iệu. ri t ư ở n g chính là định nghĩa hành trạng của một kiểu đối tượng
dựa trên các
toá có thể áp dụng một cách bên ngoài đối với các đối tượng của
kiêu đó. Cấu trúc K trong của đối tượng được che dấu, và đối tượng chỉ được truy
cập thông qua mội r ' c íc phó 1 toán được định nghĩa trước. Một số các phép toán có
thể được sử dụng ell. L. : 'ã 1 ,IC loại bỏ các đối tượng . Các phép toán khác có thể cập
nhật trạng thái đối tưọíiơ ■ áy ra các phần của trạng thái đối tượng hoặc áp dụnơ một
sô tính toán; thực hiện .r.jt tổ hợp các phép rát ra, tính toán hoặc cập nhật... Nói
chung, thể hiện của một h. p toán có thể được chỉ rõ trong một ngôn ngữ lập trình vạn
năng cung câp sự mềm ck \ ' sức mạnh trong việc định nghĩa các phép toán.
Các người dùng bên 1H', I của đối tượng chỉ cần nhận biết giao diện của kiếu đối
tượng, nó dịnh nghĩa ten WI ác đối số ( các thông sổ) của mỗi phép toán. Thế hiện
được che dấu đối với uhửir người dùng bên ngoài; nó bao gôm định nghĩa của câu
trúc dữ liệu bên trong cu.
V tượng và thể hiện của các phép toán truy cập đến các
cẩu trúc này. Trong thu :1 í'
hưóng đối tượng, phần giao diện của mỗi phép toán

được gọi là chữ ký và thế h iệ l ^'í-p toán dược gọi là một phương thức. Môt cách
thông thưòng, một method đưọv .
bằng cách gửi một thông điệp đến đối tượne, đê
thực hiện phương thức tương ứn; Chú ý rằng, như là một phần của việc thục hiện
m ột ph ư ơ n g thứ c, m ột th ôn g điệp ti p theo có thể ỚU'Ọ'C gửi đến m ột đối tương khác và

cơ cấu này có thể đưọ'c sử dụng đỗ rả lại các giá trị từ các dối tưọno dán môi irưỜTH’
bên ngoài hoặc đến các đối tượng 1 h 1C.
Với các ứng dụng cơ sở dữ liệu, Ị- đòi hỏi răng tất cả các dôi tượng phải được bao
gói một cách đầy đủ là quá nghiêm !:hắc. Một cách làm giảm nhẹ đòi hôi này là chia
câu trúc của một đôi tượng thành cá : thuộc tính nhìn thây được và các thuộc tình
được che giấu ( các biến thế hiện), t 'ác thuộc tính nhìn thây được cỏ thê được các
phép toán bên ngoài hoặc các ngôn nụữ truy vấn mức cao truy cập một cách trực tiếp
để đọc. Các thuộc tính che giâu của một đôi tưạng được hao gói hoàn toàn và chí cỏ
thể truy cập được thông qua các phép toán được định nghĩa trước. Đa số các hệ quản
trị cơ sở dữ liệu sử dụng các ngôn ngữ truy vân bậc cao đê truy cập các thuộc tính
nhìn thấy được. ( Trong chương sau chúng ta sẽ 1T1Ô tả ngôn ngữ OQL được đề nqhị
như là ngôn ngữ truy vấn chuân cho các OODB).
Trong đa số các trưò'ng họp, các phép toán cập nhật trạng thái của một đối tuợna là
đươc bao gói. Đó là một cách định nghĩa các ngừ nghĩa cập nhật của các đối tuợne.
Trong nhiều mô hình dữ liệu hưÓTLg đôi tượng , điều đó được cho bàng một sổ các
ràng buộc toàn vẹn được định nghĩa trước trong trong lược đồ. Mỗi kiểu đối tưọns có
các ràng buộc toàn vẹn của nó được lập trình thành các phương thức như create,
delete và update các đối tượng bằng cách viết chương trình để kiếm tra cho các vi
pham ràng buộc và điều khiển các ngoại lệ. Trong các trường hợp như vậy, tất ca các
phép toán cập nhật được thể hiện bằng các phép toán bao gói. Mới đây nhất, neon ngữ
đinh nghĩa dữ liệu (DDL) cho chuẩn ODMG 2,0 cho phép các đặc tả của một số ràng
buộc như các khóa và các mối liên kết ngược ( toàn vẹn tham chiếu) để cho hệ thống
có thể áp đặt một cách tự động các ràng buộc này.
16



define class Emlpoyee;
string;
fname :
char;
minit:
string;
lname:
string;
ssn:
Date;
birth d ay:
string;
address:
c h ar;
sex :
flo a t;
sala ry :
supervisor : Employee;
Department;
dept:
operations
age:
integer;
ereatee m p :
employee;
d e s tr o y e m p :
boolean;
end Employee ;


);

define class Department
type tuple ( dname:
strin g ;
d number:
integer;
mgr:
tuple(manager: Employee; startdate : Date ; );
location:
set(string);
employees :
set(Employee);
set(Project); );
projects :
operations n o o f e m p s :
integer;
create_dept:
Department;
d estro y d ep t:
boolean;
assign_emp(e:Employee):
Boolean;
(* adds an employee to the department *)
remove_emp( e: Employee):
boolean;
(* removes an employee from the department *)
end Department;
Hình 2.3: Thêm các phép toán vào các định nghĩa của Employee và Department

Thuật ngữ class thường được sử dụng để tham chiếu đến một định nehĩa kiểu đối
tượng cùng với các định nghĩa của các phép toán cho đôi tượng đó. Hình 3 chi ra các
định nghĩa kiểu của hình 2 có thể được mở rộng với các phép toán đê định nghĩa các
lóp như thế nào. Một số các phép toán dưọ'c môt tả cho mỗi lóp và chữ ký (signature
hoặc interface) cho mỗi phép toán được đưa vào trong định nghĩa lớp. Phương thức (
thể hiện) cho mỗi phép toán phải được định nghĩa ở chỗ khác khi sú dụn° một ngôn
ngữ lập trình. Các phép toán thông thường bao gồm phép toán kiến lạo đối tượng dược
sử dụng để tạo đôi tượng mới và phép toán hủy dược sử dụng đê húy một dôi tưọne.
Một sổ các phép toán sửa đối đối tượng cũng được mô tủ dẻ sửa dối các thuộc tính
ĐAI h'OC QUỐC Gi A MM
.
TRƯNG T.ÃV' THÕNG ti(v tmi.í '/if;,--. Ị

W /5 5 T

17


lác nhau của một đối tượng. Các phép toán phụ thêm có thể rút ra thông tin về đối
ợng.
Một phép toán thường được áp dụng đối với một đối tưọng bằng cách sử dụng ký
iệu chấm ( dot notation). Ví dụ, nếu d tham chiếu đến một đối tượng department,
núng ta có thể gọi một phép toán như là no_of_dept bằng cách viết d. no of dept.
lôt cách tương tự, bằng cách viết d.destroy dept, đối tượng được d tham chiêu dên bị
>ại bỏ. Ngoại lệ duy nhất là phép toán kiến tạo, nó trả lại một tham chiêu đến một đối
íợng Department mới. Vì vậy, thường có một tên ngâm định cho phép toán kiên tạo
ó là tên của chính class,mặc dù nó không được sử dụng trong hình 3. Ký hiệu châm
ùng được sử dụng để tham chiếu đến các thuộc tính của một đối tượng - ví dụ, bằng
ách viết d.dnumber hoặc d.mgr.startdate.
2.3.2 Sự chỉ ró tính bền của đối tượng thông qua đặt tên và sự đi đến tluọc

reachability)
M ột hệ quàn trị cơ sở dữ liệu hướng đối tượng thường gan liền chặt chẽ với một
Igôn ngữ lập trình hướng đối tượng. Ngôn ngũ lập trình hướng đối tượng được sử
dụng để chỉ rõ các thể hiện phương thức cũng như các chương trình ứng dụng khác.
Một đổi tượng thường được tạo ra bàng việc thực hiện chương trình ứng dụng nào
dấy, bàng cách gọi một phép toán kiến tạo đối tượng. Không phải tát cả các đối tưọng
là được lưu giữ một cách vĩnh cữu trong cơ sở dữ liệu. Các đối tưọng tạm thời (
transient object) tồn tại trong sự thực hiện chương trình và biến mất ngay khi chương
trình kết thúc. Các đối tượng vĩnh cữu ( persistent object) được lưu trữ trong cơ sỏ' dữ
liệu và còn tồn tại sau khi kết thúc chương trình. Các cơ câu thông thường đế tạo một
đối tượng vĩnh cữu là đặt tên và tính đi đến được.
Cơ cấu dặt tên gây ra việc cho một đôi tượng một tên vĩnh cửu duy nhát mà thông
qua đó nó có thể được rút ra bằng các chương trình này khác. Tên đối tirong vĩnh cữu
này có thể được cho thông qua một câu lệnh đặc biệt hoặc một phép toán trong
chương trình như được minh họa ờ hình 4
define class DepartmentSet;
type
set(Department);
operation add_dept(d:department): boolean;
(* adds a department to the DepartmentSet Object*)
remove_dept(d:Departm ent):b oolean;
(* removes a department from the DepartmentSet object*)
create dept s e t : DepartmentSet;
destroy_dept_set: bollean;
end DepartmentSet
persistent name AllDepartments: DepartmentSet;
(* AllDepartments là một đối tượng được đắt tên vĩnh cửu của kiểu đối tượng
DepartmentSet *)
d:= creat_dept;
(* Tạo ra m ột đối tượng Department mới trong bién d *)

18


b:= AllDepartments.adddept(d);
(* Làm cho d vĩnh cửu bằng cách thêm nó vào
AlIDepartments *)

tập hợp vĩnh cửu

Hình 2. 4 : Tạo các đối tượng lưu trữ lâu bằng cách đặt tên và di đến được
rất cả các tên được gán cho các đối tượng như vậy phải là duy nhất bên trong một co
ỉở dữ liệu cụ thể. Vì vậy, các đối tượng vĩnh cữu được đặt tên được sử dụng như các
ỉiểm vào cơ sở dữ liệu mà thông qua nó các user và các chương trình ứng dụng có thè
3 ắt đầu việc truy cập cơ sờ dữ liệu của họ. Hiển nhiên, việc đặt tên cho tất cả các đối
tượng trong một cơ sở dữ liệu lớn bao gồm hàng ngàn đối tượng là không thực tế, vì
vậy đa số các đói tượng được làm thành vĩnh cửu bằng việc sử dụng một cơ câu thứ
hai, gọi là đi đến được. Cơ cấu đi đến được làm việc bằng cách là cho đối tượng đi dến
được từ một đổi tượng vĩnh cửu khác. Một đối tượng B được gọi là đi đến được tù' mội
đổi tượng A nếu một đãy các tham chiếu trong đồ thị đối tượng dẫn từ đôi tưọng A
đến đối tượng B. Ví dụ, tất cả các đối tượng trong hỉnh 1 là đi đến được từ đối Urợne,
0 8 ; như vây, nếu Og được làm thành vĩnh cửu thi tất cả các đối tượng khác trong hình 1
cũng trở thành vĩnh cửu.
Nếu đầu tiên chúng ta tạo ra một đối tượng được đặt tên vĩnh cửu N mà trạ n í thái
của nó là m ột tập hoặc là đanh sách của các đối tượngcủa một lớp c nào đó, chúng ta
có thể làm cho các đổi tưọTig của c vĩnh cửu bằng cách thêm nó vào tập họp hoặc
danh sách và như vậy là làm cho chúng đi đến được từ N. Bởi vi N định ntihĩa một tập
vĩnh cửu các đối tượng của lớp c . Ví dụ, chúng ta có thể định nghĩa một lóp
DepartmentSet (xem hình 2,4) mà các đối tượng của 11Ó là thuộc kiểu set(Department).
Giả sử rằng một đối tượng của kiếu DepartmentSet được tạo ra và giá su rana nó
được đặt tên là AllDepartments và như vậy nó được làm thành vĩnh cửu nil 11’ được

minh họa trong hình 4. Bất kỳ đối tượng Department nào được thêm vào tập họp
AllDepartments bằng cách sử dụng phép toán add_dept sẽ trở thành vĩnh cửu vi nó trớ
thành đi đến được từ AllDepartments. Đổi tượng AllDepartm ents thườn 2, được gọi là
mở rộng ( hoặc phạm vi -extent) của lớp Department, như là nó chứa tất cá các đối
tượng vĩnh cửu kiểu Department. Như chúng ía sẽ thấy trong chương sau, chuẩn nQÔn
ngữ định nghĩa dữ liệu của hệ quản trị cơ sở đừ liệu hướng đối tượng sẽ cho nạưòi
thiết kế lược đồ tùy chọn đặt tên một extent như là một phần của định nghĩa lóp.
Hãy chú ý đến sự khác nhau giũa các mô hình cơ sỏ' dữ liêu truyền thống và các cơ
sở dữ liệu hướng đối tượng trong phương diện này. Trong các mô hình cơ sò dữ liệu
truyền thống, chẳng hạn như mô hình quan hệ hoặc 1TLÔ hình EER, tất cả các đối tượng
được giả thiết là vĩnh cửu. Vì vậy, khi một kiểu thực thể hoặc một lóp như là
EM PLOYEE được định nghĩa trong mô hình EER, nó biểu diễn cả mô tà kiêu cúa
EM PLOYEE và một tập vĩnh cửu của tất cả các đối tượng EMPLOYEE. Trone cách
tiếp cận hướng đối tượng, một mô tả lóp của EM PLOYEE chỉ chỉ ra kiêu và các phép
toán đối với một lớp đối tượng. Người sử dụng phải định nghĩa một cách riêng rỗ một
đối tượng vĩnh cửu kiểu set(EMPLOYEE) hoặc List( EM PLOYEE) mả giá trị cùa nó
là tập hợp các tham chiếu đến tất cả các đối tượng EM PLOYEE vĩnh cửu nếu muốn,

19


giống nh QJ( . lĩiinh họa trong hình 4. Trên thực tế là có thể định nshĩa nhiều tập
vĩnh cửu cho CÙT.» một dinh nghĩa lóp nếu muốn. Điều đó cho phép các đối tượng tạm
thời và vĩ' ;
t. ieo cùng một kiểu và các mô tả lóp của ODL và OOPL.
2.4 C ác p i,... t. D kiểu và thừ a kế kiểu
Một tính chất chủ 'u 'chác của các hệ cơ sở dữ liệu hướng đối tượng là chúng cho
phép các phân cấp kiv~ V' sư thừa kế. Các phân cấp kiểu trong cơ sờ dữ liệu thường
kéo theo một ràng buộc iré 1 C' extents tương ứng với các kiểu trone phân cấp. Trước
tiên chúng ta thảo luận về V phân cấp kiểu và sau đó là các ràng buộc trên extents

Chúng ta sử dụng một mô . \ I hướng đối tượng khác trong phần nảy - một mô hỉnh
mà trong đó các thuộc tính V I
J phép toán được xử lý một cách giống nhau - bởi vỉ
cả các thuộc tính và các phép K in có thể được thừa kế.
2.4.1 C ác phân cấp kiểu và tí li th ừ a kể.
Trong đa sổ các ứng dụng co c )' dữ liệu, có rất nhiều các đổi tượng cùng một kiểu
hoặc cùng một lớp. Vì vậy, cái- < )■sở dữ liệu hưó'ng đối tượng phải cune cấp một khả
năng đế phân loại các đối lu /V Mựa trên kiểu của chúng giống như các hệ thống cơ sở

dữ liệu khác làm. Nhưng LK, J, các cơ sở dữ liệu hướng đối tượng, một đòi hoi thêm
nữa là hệ thống cho phép việc ÍĨỊ \h nghĩa các kiểu mới dựa trên các kiêu khác được

định nghĩa trirác dẫn đến việc pỉì :i cấp kiểu ( hoặc lớp).
Thông thường, một kiểu được uị 1.' 1 nghĩa băng cách gán cho nó một tên kiêu và sau
đó xác định một số các thuộc tính ( :ác biến thể hiện) và các phép toán ( các phương
thức) cho kiểu. Trong một số trườn;. ỉiựp, các thuộc tính và các phép toán cùne được
gọi là các hàm, bởi vì các thuộc tính j lỏng với các hàm không có đối số. Một tên hàm
có thể được sử dụng đê tham chiểu đế 1 giá trị của của một thuộc tính hoặc tham chiếu
đển giá trị kết quả của một phép toán ( phirang thức). Trong phần này, chúnơ ta sử
dụng thuật ngữ hàm để tham chiếu đển cả các thuộc tính và các phép toán cua một
kiểu đối tượng, bỏ'i vì chúng được xem xét một cách tương tự trong một nhập môn cơ
bản của tính thừa kế.
Một kiểu trong dạng đơn giản nhất của nó có thế được định nghĩa bằng cách cho nó
một tên kiểu và sau đó liệt kê các tên của các hàm nhìn thấy được ( public) của nó.
Khi chì ra một kiểu trong phần này, chúng ta sử dụne định dạnẹ sau đây không chỉ ra
các đối số của các hàm để làm đon giản thảo luận:
TYPE-NAME: hàm, hàm ,...,hàm .
Ví dụ, một kiểu môt tả các đặc trưng của một người (person) có thể dược định nehĩa
như sau:
PERSON: Tên, Địachỉ, Ngaysinh, Tuổi, M ãsốBHXH

Trong kiểu PERSON, các hàm Tên, Địachỉ, Ngaysinh, M ãsốBHXH có thề thể hiện
như các thuộc tính được lưu trữ, trong khi đó hàm Tuổi dược thể hiện như là một
phương thức tính tuổi từ giá trị của thuộc tính Ngaysinh và ngày hiện tại.
Khái niệm kiểu con (subtype) có lợi khi ngưòi thiết kế hoặc người sử dụng phải tạo
ra một kiểu mới tương tự nhưng không đồng nhất với một kiểu đã được định nẹhĩa.
20


cCiểu con khi đó thừa kế tất cả các hàm của kiểu được định nghĩa trước mà chúng ta sẽ
gọi là kiểu cha. Ví dụ, giả sử chúng ta muốn định nghĩa hai kiểu mới EMPLOYEE và
STUDENT như sau:
EMPLOYEE: Tên, Địachỉ, Ngaysinh, Tuổi, MãsốBHXH, Lương, Ngàybátđầu,
Thâmniên
STUDENT: Tên, Địachỉ, Ngaysinh, Tuổi, MãsốBHXH,Chuyênngành,
Điểmtrungbình
Bởi vì cả STUDENT và EMPLOYEE chứa tât cả các hàm được định nghĩa cho
PERSON cộng thêm các hàm cho riêng chúng, chứng ta có thể khai báo chúng là kiểu
con của PERSON. Mỗi kiểu con sẽ thừa kế các hàm được định nghĩa tnrớc của
PERSON, bao gồm Tên, Địachỉ, Ngaysinh, Tuổi, MãsốBHXH. Đối với STUDENT,
chỉ cần định nghĩa các hàm mới (local) là Chuyênngành và Điểmtrungbình, chúng
không được thừa kế. Có thể đoán được, Chuyênngành
có thể được định nghĩa như là một thuộc tính đưọc lưu trữ, còn Điêmtrungbình có thế
được thể hiện như là một phương thức tính điểm trung bình của sinh viên băng cách
truy cập các giá trị điểm được lưu trữ bên trong ( hidden) mỗi đối tượng sinh viên như
là các thuộc tính riêng. Với EMPLOYEE, các hàm Lương và Ngàybắtđầu có thể là các
thuộc tính được lưu trữ, trong khi đó Thâmniên có thể là một phương thức tính thâm
niên từ giá trị của Ngàybắtđầu.
Tư tưởng của định nghĩa một kiểu kéo theo việc định nghĩa tất cả các hàm của 11Ó và
thể hiện chúng hoặc như các thuộc tính, hoặc như các phương thức. Khi một kiểu con
được định nghĩa, thi nó có thể Ihừa kế tất cả các hàm này và các thế hiện của chúng.

Chỉ có các hàm được chỉ ra hoặc cục bộ đối với kiếu con và như vậy là không được
thể hiện trong kiểu cha là cần được định nghĩa và thể hiện. Bỏi vậy chúng ta có thể
khai bao EM PLOYEE và STUDENT như sau:
EM PLOYEE subtype-of PERSON: Lương, Ngàybắtđầu, Thâmniên
STUDENT subtype-of PERSON: Chuyênngành, Điểmtrungbình
Nói chung, một kiểu con bao hàm tất cả các hàm được định nghĩa cho kiểu cha cộng
với các hàm phụ thêm được chỉ ra chỉ đối với kiểu con. Vì vậy có thể tạo ra một phân
cấp lớp để chỉ liên kết kiểu cha/lđểucon giữa tất cả các lớp được mô tả trong hệ thống.
Một ví dụ khác, xét một kiểu môt tả các dổi tượng trong hình học phẳng, nó có thể
được định nghĩa như sau:
GEOM ETRY OBJECT : Shape, Area, ReferencePoint
Với kiểu G E O M E TR Y O B JEC T, Shape được thể hiện như một thuộc tính
( miền
giá trị của nó có thể được ỉiệt kê với các giá trị ‘ tam giác’, ' chử nhạt’, ‘hình tròn’ V..V
), và Area là một phương thức đưọ'c áp dụng để tính diện tich. Bây giờ giá sử rằng
chúng ta muốn địng nghĩa một số kiểu con của kiểu GEOM ETRY OBJECT nhu sau:
RECTANGLE subtype-of GEOM ETRY_OBJECT: W idth, Heigt
TRIANGLE subtype-of GEOMETRY OBJECT: S idel, Side2, Angle
CIRCLE subtype-of GEOMETRY_OBJECT: Radius
Chú ý ràng phép toán Area có thể được thể hiện bàng một phương thức khác nhau
cho mỗi kiểu con, bởi v ì thủ tục đối với việc tính diện tích là khác nhau đối vó i hình
chữ nhật, tam giác, và hình tròn. Tương tự, thuộc tính ReferencePointco thể có ý nghĩa
khác nhau đối với mỗi kiểu. Nó có thể là điểm trung tâm đối với hình tròn và hình chử
21


hật, và là điểm đỉnh giữa hai cạnh bên cho trước đối với đôi tượng tam giác. Một sô
ệ cơ sở dữ liệu hướng đối tượng cho phép đặt lại tên các hám thừa kê trong các kiêu
on để phản ánh ý nghĩa sát hơn,
Một lựa chọn của mô tả ba kiểu con này là chỉ ra giá trị của thuộc tính Shap như là

lột điều kiện mà các đổi tượng của mỗi kiểu phải thỏa mãn :
RECTANGLE subtype-of GEOMETRY OBJECT ( Shap = rectangle):
Width, Height
TRIANGLE subtype-of GEOMETRY_OBJECT ( Shap - triangle): Sidel,
Side2, Angle
CIRCLE subtype-of GEOMETRY_OBJECT ( Shap = circle): Radius
Ở đây, chỉ có các đối tượng G EO M E TR Y O B JEC T có ( Shap = rectangle) là các
.đểu con Chử nhật, và tương tự như vậy cho các kiểu con khác. Trona trường hợp này,
tất cả các hàm của kiểu cha GEOMETRY OBJECT được mỗi kiểu trong ba kiểu con
thừa kế nhưng giá trị của thuộc tính Shap được hạn chế đến giá trị cụ thể cho mồi
kiểu.
Chú ý rằng các định nghĩa kiểu mô tả các đối tượng nhưng không sinh ra các đối
tượng. Chúng chỉ là các khai báo của các kiểu nào đấy; và như là một phẩn của khai
báo đó, việc thể hiện việc thể hiện của các hàm của mỗi kiểu đưọ'c chỉ rõ. Trong một
ứng dụng cơ sở dữ liệu, có nhiều đối tượng của một kiểu. Khi một đối tượng dược tạo
ra, nó thường thuộc về một hoặc nhiều kiểu đã được khai báo. Ví dụ, một đối tượna;
hình tròn là của kiểu CIRCLE và kiểu GEOMETRY_OBJẼCT ( do thừa kế) . Mỗi dối
tượng cũng trở thành một thành phần của một hoặc nhiều tập hợp dược lưu trữ làu dài
của các đối tượng ( hoặc extents), nó được sử dụng để nhóm các tập hợp của các đối
tượng có ý nghĩa đối với ứng dụng cơ sở dữ liệu với nhau.
2.4.2 Các ràng buộc trên các Extents tương ứng vói một phân loại kiểu
Vì đa số các các cơ sở dữ liệu hướng đối tượng hỗ trợ các kiểu, chúng ta giả thiết
rằng extents là các tập hợp các đối tượng cùng một kiểu.
Thông thường trong các ứng dụng cơ sở dữ liệu mỗi một kiểu hoặc kiểu con sè có
một extent liên kết với nó, nó chứa tập hợp của tất cả các đối tượng được lưu giữ của
kiểu hoặc kiểu con đó. Trong trường hợp này, ràng buộclà mỗi dối tượng trong một
extent tương ứng với một kiểu con phải là một phần tử của extent tươns ứng với lóp
cha của nó. Một số hệ thống OODB có một kiểu hệ thống đưọc định nghĩa trước ( gọi
là ROOT class hoặc Object class) mà extent của nó chứa tât cả các đối tượng trong hệ
thống. Sau đó sự phân loại được tiến hành bằng việc gán các đối tượng vào các lóp

con bổ sung có ý nghĩa đối với ứng dụng, tạo ra một phân cấp kiểu hoặc một phân cấp
lóp cho hệ thống. Tất cả các extents đối với hệ thống - và các lóp do người dùng định
nghĩa trực tiếp hoặc gián tiếp dều là các tập con cuae extent tương ứng với OBJECT
Class. Trong mô hình ODMG, người sử dụng cỏ thê hoặc không chie ra một extent
cho mỗi lớp ( kiểu), phụ thuộc vào ứng dụng.
Trong đa số các hệ thống 0 0 , có một sự khác nhau giữa các đối tượng nhất thời và
các đối tượng được lưu giữ. Một tập hợp được lưu giữ ( persistent collection) chứa
một tập hợp các đối tượng được lưu giữ một cách thưÒTig trực tron? cơ sở dữ liệu và vì
22


vậy có thể được nhiều chương trình truy cập và chia sẻ. M ột tập họp tạm thòi
(transient collection) tồn tại một cách tạm thời trong quá trình thực hiện cùa một
chương trình nhưng không được lưu giữ khi chương trình kết thúc. Ví dụ, một tập hợp
tạm thời có thể được tạo ra trong một chương trinh để chứa kết quả của một truy vấn
mà truy vân đó lựa chọn một sô đôi tượng từ một tập họp được lưu giữ và sao chép
các đối tượng đó vào một tập tạm thời. Sau đó chương trình có thể thao tác các đối
tượng trong tập hợp tạm thời và m ôi khi chương trình kêt thúc, tập tạm thòi ngừng tôn
tại. Nói chung, nhiều tập hợp - tạm thời và được lưu giữ- có thế chứa các dối tưọno
cùng một kiểu.
Chú ý răng các kiến tạo kiểu thảo luận trong phần trước cho phép trạng thái cùa một
đôi tượng là một tập hợp các đối tượng. Như vậy, tập họp các đối tượng mà các kiêu
của nó dựa trên một set constructor có thể định nghĩa một số tập họp - mỗi tập hợp
tương ứng với mỗi kiểu. Bản thân các dổi tượng giá trị tập hợp là thành phần của các
tập hợp khác. Điêu đó cho phép đổi với các lược đồ nhiều mức, trong đó một đối
tượng trong một tập hợp có trạng thái của nó là môt tập hợp các đối tượng của một lóp
khác.
Chúng ta sẽ thấy trong chương sau, mô hỉnh ODMG 2.0 phân biệt giữa thừa kế kiểu gọi là thừa kế giao diện và ký hiệu bàng dấu
- và ràng buộc thừa kế extent - ký
hiệu bàng từ khóa EXTENT.


2.5 C ác đối tư ọ n g phức tạp
Một động cơ chính dẫn đến việc phát triển các hệ thốne; 0 0 íà mong muốn biếu diễn
các đối tượng phúc tạp. Có hai kiểu đối tượng phức tạp chính: có cấu trúc và không có
cấu trúc. M ột đối tượng phức tạp có câu trúc dược tạo nên từ các thành phần và được
định nghĩa bằng cách áp đụng các kiến trúc kiểu sẵn có một cách đệ quy ỏ' nhiều mức.
Một đối tượng phức tạp không có cấu trúc'thường là một kiểu dữ liệu đòi hỏi sự lưu
trữ lớn như là kiểu dữ liệu biểu diễn một hình ảnh hoặc một đối tượng văn bản lớn.
2.5.1 Các đối tưọìig phức tạp không có cấu trúc và kiểu có thể mỏ’ rộng
Một đối tượng phức tạp do một hệ QTCSDL cung cấp cho phép lưu trừ và rút ra các
đối tượng lớn cần thiết cho ứng dụng cơ sở dữ liệu. Ví dụ truyền thống về các đổi
tượng như vậy là các hình ảnh bitmap và các đòng văn bản dài ( như là các tài liệu).
Chúng cũng được biết đến như các đối tượng nhị phân lớn ( hoặc BLOBs- Binary
large objects). Các đối tượng này là không có cấu trúc theo nghĩa là hệ QTCSDL
không biết được cấu trúc của chúng là như thế nào.- chỉ có các ứnơ dụng sử dụng
chúng có thể diễn tả ý nghĩa của chúng. Ví dụ, Ún? dụng có thế có các chức năng hiển
thị một hình ảnh hoặc tìm kiếm một số từ khóa trong một văn bản dài. Các đối tirợnođược xem là phức tạp vì chúng đòi hỏi một phạm vi lưu trữ lớn và không phải là một
phần của các kiểu dữ liệu chuẩn do các hệ QTCSDL truyền thống cung cấp. Vì kích
thước của đối tượng là rất lớn, một hệ QTCSDL có thể lấy ra một phần của dối tương
và cung cấp nó cho chương trình ứng dụng tnrớc khi toàn bộ dồi tượng dược lấy ra.
23


Hệ QTCSDL Oi r g có thể sử dụng các kỹ thuật buffering và caching để lấy ra trước
các phân của dỏ t rợn trước khi trước khi chương trình ứng dụng cân truy cập chúng.
Phân mêm hệ CỊI án trị cơ sở dữ liệu không có khả năng xử lý trực tiêp điêu kiện
chọn và các phép tc n khác dựa trên giá trị của các đối tượng này, trừ phi chương trình
ứng dụng cung cấỊ nã để so sánh các phép toán cần thiết cho sự lựa chọn. Trone hệ
quản trị cơ sở dữ li V hướng đối tượng điều đó có thể được thực hiện bàng cách định
nghĩa một kiểu dữ lĨỊu trừu tượng mới cho các đối tượng không giải thích được và

băng cách cung Cii; t ■phương thức để lựa chọ, so sánh và hiển tị các đối tượng như
vậy. Ví dụ, xét các 'u 1 rợng là cúc hỉnh ảnh bipmap hai chiều. Giả sử ràng ứng dụng
cân lựa chọn từ tập 111
'C đối tượng như vậy chỉ những đối tượng nào chứa một mẫu
nào đây. Trong trường . •> này, người sử dụng phải cung cấp chương trình nhận biết
mẫu như là một phương Li1. ’ trêu các đối tượng của kiểu bipmap. Hệ quản trị cơ sỏ dừ
liệu hướng đối tượng sau u, s>‘ lấy ra một đối tượng từ CO’ sở dữ liệu và và chạy
phương thức để nhận biết mẫu í Sn đó đê xác định xem có phải đối tượng chứa mẫu
cần tìm hay không.
Bởi vì hệ quản trị cơ sở dữ liệu
ỏng đối tượng cho phép các ngưòi sứ dụng tạo ra
các kiểu mới, và bởi vì một kiểu ba gồm cả cáu trúc và các phép toán, chúne ta có thể
nhìn HQTCSDL hướng đối tượng ilìir có một hệ thống lciểu có thể mở rộng đưọ’c.
Chúng ta có thể tạo ra các thư việ iciểu mới bằng cách định nạhĩa cấu trúc và các
phép toán của chúng. Các ứng dụng IU đó có thể sử dụng hoặc thay dối các kiểu này .
Việc thay đổi các kiểu được làm bàn cách tạo ra các kiểu con của các kiểu dược Cling
cấp trong các thư viện. Tuy nhiên, 111 quản trị CSDL bên trong phái cuns cấp việc Ill’Ll
trữ cơ bản và các khả năng lấy ra đối với các đối urợng đòi hỏi sụ lưu trừ lớn sao cho
các phép toán có thế được áp dụng m ụ cách có hiệu quả. Nhiều HQTCSDL hướng đối
tượng cung cấp cho việc lưu trữ và íu ý ra các đối tượng lớn khône cấu trúc như là các
chuỗi ký tự hoặc các chuỗi bit. , chúng có thể được chuyển cho chương trình ứnơ dụng
để giải thích. M ới đây, HQTCSDL quan hệ và quan hệ mỏ' rộng cũní> đã có thế cuna;
cấp các khả năng như vậy.
2.5.2 Các đối tưọìig phức tnp có cấu trúc
Một đối tượng phức tạp có cấu trúc khác với một đối tượng phức tạp khôn 9 ; có cấu
trúc ở chỗ cấu trúc của đối tượng được định nghĩa bans; cách áp dụng lặp
các kiến tạo kiểu đưọc các HQTCSDL hướng đối tượng cung cấp. Như vậy,
HQTCSDL hướng đối tượng định nghĩa và biêt cấu trúc đối tượng. Như là một ví dụ,
xét đối tượng DEPARTM ENT được chỉ ra ở hình 11.1. Ớ mức đầu tiên, đối tượng có
cấu trúc bộ với 6 thuộc tính Dname, Dnumber, Mgr, Locations, Employees và

Projects. Tuy nhiên chỉ có hai trong sô các thuộc tính này - Dname và Dnumber là có
giá trị cơ sở; bốn thuộc tính khác có giá trị phức tạp và do vậy làm nên mức thứ hai
của cấu trúc đối tượng phức tạp. Một trong bốn thuộc tính này ( Mgr) có cẩu trúc bộ
và ba thuộc tính khác ( Locations, Employees, Projects) có các cấu trúc tập họp. ở
mức thứ ba , đôi với giá trị bộ Mgr, chúng ta có một thuộc tính cơ bản (
M anagerstartdate) và một thuộc tính tham chiếu đến một đối tượng employees, đói
tượng này có m ột câu trúc bộ. Với một tập hợp Locations chúng ta có một tập hợp các
24


giá trị cơ bản nhưng với các tập Eployees và Projects chúng ta có các tập hợp các đối
tượng có cấu true bộ.
Hai kiểu ngữ nghĩa tham chiếu tồn tại giữa một đổi tượng phức tạp và các thành
phân của chúng. Kiểu đầu tiên, chúng ta có thể gọi nó là ngữ nghĩa sỏ' hữu, áp dụng
khi các đối tượng con của một đổi tượng phức tạp được bao gói bên tong đối tưọng
phức tạp và vì vậy chúng được xem là một phần của đối tượng phức tạp. Kiểu thứ hai,
chúng ta có thể gọi nó là ngữ nghĩa tham chiếu, áp dụng khi các thành phần của một
đối tượng phức tạp là các đối tượng độc lập nhưng có thể được tham chiếu từ một đổi
tượng phức tạp. Ví dụ, chúng ta có thể xem các thuộc tính Dname, Dnumber, Mgr, và
Locations là sở hữu bởi DEPARTMENT, trong lchi đó Employees và Projects là tham
chiếu bởi chúng tham chiếu các đối tượng độc lập. Kiểu thứ nhất cũng được nối đến
như là mối liên kết là một phồn của (is-part-of) hoặc là là thành phần của ( iscomponent-of) ; và kiểu thứ hai được gọi là mối liên kêt liên kết với (is-associatedwith) bởi vì nó mô tả một liên kết ngang bằng giữa hai đối tượng độc lập. Mối liên kết
là một phần của ( ngữ nghĩa sở hữu) đối với việc xây dựng các đối tượng phức tạp có
tính chất là các đổi tượng thành phần được bao gói bên trong đối tượng phức tạp và
được xem như một phần của trạng thái đối tượng bên trong. Chúng không can có các
định danh đối tượng và chỉ có thể được truy cập bàng các phưong thức cùa đối tirọng
đó. Chúng sẽ bị loại bỏ nếu chính đối tượng bị loại bỏ. Mặt khác, một đổi tượng phức
tạp mà các thành phần của nó được tham chiếu thì được xem như bao gồm các đối
tượng độc lập có thể có định danh và các phương thức riêng của chủn£. Khi một đối
tượng phức tạp cần truy cập các thành phần tham chiểu của nó, nó phải làm điều dó

bàng cách gọi các phương thức thích hợp của các thành phần bởi vì chúng không được
bao gói bên trong đối tượng phức tạp. Như vậy, ngữ nghĩa tham chiểu biểu thị các mối
liên kết giữa các đổi tượng. Hơn nữa, một đối tượng thành phần tham chiếu có thế
được tham chiếu bởi nhiều hơn một đối tượng phức tạp và vì vậy nó khône xóa đi một
cách tự động khi đối tượng phức tạp bị xóa.
M ột hệ QTCSDL hướng đối tượng phải cung cấp sự lựa chọn lưu trữ đế nhóm các
đối tượng thành phần lại với nhau trên bộ lưu trữ phụ dế làm tăng tính hiệu quá của
các phép toán truy cập đối tượng phức tạp.
2.6 C ác khái niệm h ư ó n g đối tư ọ ìig khác
2.6.1 Polymorphysm ( Operator Overloading)
M ột đặc trưng khác của các hệ thong hưóng đối tượng là chúng cuna cấp cho sự
nhiều hình thái ( polymorphysm), đôi khi còn đưọ'c gọi là nạp chồng toán tử ( operator
overloading). Khái niệm này cho phép cùng một tên hoặc ký hiệu phép toán là được
giới hạn cho hai hoặc nhiều các thể hiện khác nhau của phép toán, phụ thuộc vào kiểu
đối tượng mà phép toán được áp dụng cho nó. Một ví dụ đơn RĨản lừ các noôn nsữ lập
trình có thể minh họa khái niệm này. Trong một số ngôn ngũ', ký hiệu phép toán "+'■
có thể nói đến nhiều thứ khác nhau khi được áp dụng cho các toán hạna (các dối
tượng) của các kiểu khác nhau. Nếu các toán hạng của “+ ” là kiểu nguyên, phép toán
được gọi là phép cộng các số nguyên. Neu các toán hạng của “+ ” là kiểu thực dấu
25


×