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

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

124 171 1

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 124
Dung lượng 9,38 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

.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

Trang 1

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

Trang 2

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 Ho và tên Học hàm, họcvị Cơ quan côn2 tác

4 Lý Anh Tuân Thực tập sinh Khoa CNTT, Đại hoc CN

5 D ư Phương Hạnh Thực tập sinh 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 N hữ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ế):

N hững tài liệu tham khảo của đề tài có thế đưọ’c sử dụng làm chuyên đề giảnedạ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

Trang 3

* 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

Project O w ner : Dr Nguyễn Tuệ

Department o f Information Systems Faculty o f Information Technology

M ain results:

1- D ocum ent 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) D istributed Database Design

d) Transform ing global queries into fracm ent queries

3- Three M aster thesis:

a) Hoàng thị Hương Thơm: Object Oriented Database and Softvvears for developpem ent Object Oriented Database 2005

b) Cao M inh Tâm: Database Security , 2005

c) Đào Thị Thu Vân: Query Proccessing and Transaction M anagement,

4- Finance : 30.000.000 VND

Trang 4

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, X em inar 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

Trang 5

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 tron2 đê tài

II TÀI LIỆU TH AM 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 (O O D B)’, Oct, 2002

[3] Bloor Research, ‘ObjectStore from Progress Softw are’, 2005

[4] S Clarke, ‘Object Design: Object Store’, May, 2001

[5] http://www.objectstore.com

[6] http://www.progress.com

[7] Hector Garcia-M olina, Jeffrey D.Ullman, Jennifer Widom

Database System: The complete Book Prentice-Hall.Inc, 2002

[8] James A.Anderson

Discrete M athematics with com binatorics.Prcntice-Hall.Inc, 2001

[9] Stefano Ceri, Giuseppe Pelagatti

Distributed Databases Principles and Systems M cGraw-Hill Book Co 1985[10] M Tamer Ozsu, Patrick Valduriez:

Principles o f Distributed Database Systems Prentice Hall,Inc 1991

III P H Ụ 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ệ

Trang 6

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 g ia tă n g s ử

d ụ n g cá c n g ô n n g ữ lậ p trình h ư ớ n g đ ô i tư ợ n g tro n g việc p h á t triên các ứ n g

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 M M C (M icroelectronics and Computer Technologie Corporation, Austin, Texas) OPEN O O D B ở Texas Instrument, hệ thông IRIS ở các phòng thí nghiêm của Hew lett-Packard, hệ thống AT& T Bell Labs ( nay là Lucent Technologic) và dự án

EN CO R E/O bServer ở Brown University

Các hệ thống thương mại cỏ sẵn bao gồm GEM STONE/OPAL của Gem Stone Systems, ONTO của Onto, Objectivity của Objectivity Inc, Versant của V ersant

Trang 7

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 anagem ent Group) đã đưa ra một chuẩn gọi là ODM G-93

Các cơ sở đữ liệu hướng đối tượng đã chấp nhận nhiều khái niệm được phát triểncho 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 program m ing 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) N hư 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ớ p h ụ 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 ủ n g jn ộ 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

Trang 8

'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ạ rc1 à ' ;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à

Trang 9

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

2.1 Đ ịn h d a n 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 N hư vậy, một hệ cơ sở dữ

Trang 10

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ó N hư 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ợ

Trang 11

N ếu c = set, trạng thái V là một tập họp các định danh đối tượng { i|,i2, ,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, a2: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 N hư 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++.

oó = ( i<s, atom, ‘1988-05-22’)

0 7 = (i7, set, {ii,Ì2,i3})

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

Trang 12

;NiiJĩ OYEESiiio, PROJECT:i| |>)

0 9 = ( i nl< , < M a n a g e r:^ Manaị r c rt_Date: Ì6>)

° ! 0 = ( i , 0 ■> ( í 12, i |3> i u } )

° 1 ! = ( i l l , f í Ĩ l5»il6»il7} )

0 , 2 = ( ìn , ti < Fname:iig, L.n'.r e:i19, SSN:i2i , , 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 nhautrong 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ớicá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ị, tron9, 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 ii5,ii6,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

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ị

Trang 13

ũ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:

Các đối tượng Oi và o2 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à Departm ent 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 ep artm 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

D epartem ent, 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 Departm ent 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)

Trang 14

LEGEND: o object

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

Trang 15

define type Employee:

tuple ( fname : string;

tuple ( year : integer;

month : integer;

day: integer ; ) ; define type Departement:

tuple ( dname : string;

dnumber: integer;

m gr : tuple ( manager : Employee;

startdate: Date ; ) ; locations : set (string);

employees: set(E m 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 a o g ó i các p h ép to á n , các p h ư ơ n g th ứ c, v à tín h bền.

K há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

Trang 16

2.3.Í Đụ" iả ứng xử CO lig thông qua các phép toán ló p

Các k1 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 p h ư ơ 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ư ọ n s 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

Trang 17

define class Emlpoyee;

define class Department

type tuple ( dname:

n o o f e m p s : create_dept:

d e stro y d e p t:

s trin g ; integer;

tuple(manager: Employee; startdate : Date ; );

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;, Ị

17

Trang 18

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 o f 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 Departm ent 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 Departm entSet Object*)

rem ove_dept(d: D epartm ent): b oolean;

(* removes a department from the Departm entSet 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 *)

Trang 19

b:= AllDepartments.adddept(d);

(* Làm cho d vĩnh cửu bằng cách thêm nó vào tập hợp vĩnh cửu AlIDepartments *)

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 AllD epartm ents thườn2, đượ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 PLO YEE đượ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 EM PLOYEE Trone cách tiếp cận hướng đối tượng, một mô tả lóp của EM PLO Y EE 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(EM PLOYEE) hoặc List( EM PLO YEE) 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 PLO Y EE vĩnh cửu nếu muốn,

Trang 20

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

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 p h â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-NAM E: 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

Trang 21

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 EM PLOYEE và

STUDENT như sau:

EM PLOYEE: Tên, Địachỉ, Ngaysinh, Tuổi, M ãsốBHXH, Lương, Ngàybátđầu,

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 PLO YEE 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:

G EO M ETRY OBJECT : Shape, Area, ReferencePoint

Với kiểu G E O M E T R Y O B JE C 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 G EOM ETRY OBJECT nhu sau: RECTANGLE subtype-of GEO M ETRY _O BJECT: W idth, Heigt

TRIA N G LE subtype-of GEOMETRY OBJECT: S id el, Side2, Angle

CIRCLE subtype-of GEOM ETRY_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ử

Trang 22

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 E O M E T R Y O B JE C 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 GEOM ETRY_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ì

Trang 23

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 p h ứ 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

Trang 24

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

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ếtmẫu như là m ột phương Li 1 ’ 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

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ôn9; 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

Trang 25

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 ( is- component-of) ; và kiểu thứ hai được gọi là mối liên kêt liên kết với (is-associated-

with) 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 k h ái niệm h ư ó n g đ ối tư ọ ìig khác

2.6.1 Polym orphysm ( 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

Trang 26

phẩy động, phép toán được gọi ỉà phép cộng các số dấu phẩy động Nếu các toán hạng của “+ ” là kiểu tập hợ, phép toán được gọi là phép hợp các tập hợp Chương trình dịch

có thế xác định việc thực hiện phép toán nào dựa trên kiểu của các toán hạng được

ớung cấp.

Trong các cơ sở dữ liệu hướng đối tưcmg tình trạng như vậy cũng có thể xẩy ra Chúng ta có thể sử dụng ví dụ về GEOM ETRY_OBJECT để minh họa polymorphism trong cơ sờ dữ liệu hướng đối tượng Giả sử chúng ta khai báo GEOM ETRY_OBJECT và các kiểu con của nó như sau:

GEOM ETRY_OBJEC T: Shap, Area, ReferencePoint

RECTANGLE subtype-of GEOMETRY_OBJECT ( Shap - rectangle):

Width, Height

TRIANGLE subtype-of GEOMETRY_OB JECT ( Shap = triangle): Side I,

Side2, Angle

CIRCLE subtype-of GEOMETRY_OBJECT ( Shap = circle): Radius

Ở đây, hàm A rea được khai báo cho tất cả các đối tượne, của kiểu

GEOM ETRY_OBJECT Tuy nhiên, bự thể hiện của phương thức CỈ10 Area có thè khác nhau đối với mỗi kiểu con của GEOMETRY_OBJECT Một khả năng là có một thể hiện chung cho việc tính toán diện tích của một GEOM ETRY OBJECT chung(Ví dụ, viết một thuật toán tổng thể để tính diện tích của một đa giác ) và sau dó viết

lại các thuật toán hiệu quả hơn để tính diện tích của các kiểu đối tượng hình học khác

nhau, chẳng hạn hình chừ nhật, hình tròn, hỉnh tam giác v v Trong trườne hợp này, hàm Area được nạp chồng bàng các thể hiện khác nhau

Hệ QTCSDL hướng đổi tượng bây giờ phải chọn phương thức thích hợp cho hàm Area dựa trên kiểu của đối tượng hình học mà hàm áp dụng đối với kiểu đó Trong các

hệ thống định kiểu mạnh, điều đó có thể được làm tại thời điếm dịch bởi vì các kiểu đối tượng phải được biết Điều đó được gọi là liên kêt sóm ( hoặc tĩnh) Tuy nhiên, trong các hệ thông với định kiêu yêu hoặc không định kiêu, kiêu cúa đối tượng mà hàm được áp dụng cho nó có thể không được biết cho đến thời eian chạy Trong trường hợp này, hàm phải kiểm tra kiểu của hệ thống tại thời eian chạy và sau đó gọi phương thức thích hợp Điều đó thường được nói là liên kết muộn ( hoặc động)

2.6.2 Thừa kế bội và thừa kế lựa chọn

Thừa kế bội trong một phân cấp kiểu xảy ra khi một kiểu T nào đó là kiểu con của hai kiểu (hoặc nhiều hơn) và vì vậy thừa kế các hàm ( thuộc tính và phương thức) của

cả hai lóp cha Ví dụ, chúng ta có thể một kiểu con EN GIN EERIN G _M A N A G ER là kiểu con của các kiểu M ANAGER và ENGINEER Điều đó dẫn đến việc tạo ra một dàn kiểu chứ không phải là một phân cấp kiểu M ột vấn đề có thể xảy ra với thừa kế bội là các kiểu cha mà kiểu con thừa kế từ chúng có thể có các hàm khác nhau nhưng cùng tên, tạo ra m ột sự mập mờ Ví dụ, cả EN G IN EER và M ANAGER có thê có một hàm gọi là Salary Nêu hàm Salary được thê hiện băng các phương thức khác nhau trong các lóp cha EN G IN EER và M ANAGER, m ột sự mập mờ sẽ tôn tại vì lớp con

Trang 27

EN G IN EERIN G _ M ANAGER sẽ thừa kế phương thức nào Tuy nhiên, có thể là cà hai EN G IN EER và M ANAGER thừa kế Salary từ một lớp trên cao hơn trọng dàn nàỵ ( chẳng hạn EM PLOYEES) Quy tắc chung là nếu một hàm đưọc thừa kế từ một số lớp cha chung thì nó chỉ được thừa kế một Trong trường hợp như vậy sẽ không có sự mập mờ; vấn đề chỉ đặt ra nếu các hàm là khác nhau trong hai kiểu cha.

Có nhiều kỹ thuật làm việc với tính mập mờ trong thừa kể bội Một cách giải quyết

là có một hệ thống kiểm tra đổi với sự mập mờ khi một lớp con đưọ'c tạo ra, và cho phép người dùng chọn một cách tường minh hàm nào sẽ được thừa kê ở tại thời diêm này M ột cách giải quyêt khác là sử dụng một sô mặc định hệ thông Cách giải quyết thứ ba là không cho phép thừa kể bội hoàn toàn nếu sự mập mờ tên xảy ra, thay vào đó buộc người dùng thay đổi tên của một trong các hàm trong một kiểu cha Dĩ nhiên, một vài hệ thống hướng đổi tượng không cho phép thừa kế bội

Thừa kế lựa chọn xảy ra khi một lớp con chỉ thừa kể một vài hàm của lóp cha Các hàm khác không được thừa kế Trong trường họp này , một mệnh đề EXCEPT có thế được sử dụng để liệt kê các hàm trong lớp cha không được thừa kế tron? lóp con Kỹ thuật thừa kế lựa chọn không thường được cung cấp trong các hệ thống OODB nhưng

nó được sử dụng thường xuyên trong các ứng dụng trí tuệ nhân tạo

II.6.3 Versions and Configurations

Nhiều ứng dụng cơ sở dữ liệu sử dụng hệ thống hướng đối tượne đòi hỏi sự tồn tại của nhiều phiên bản của cùng một đối tượng Ví dụ, xét một ứng dụng cơ sở dữ liệu cho môi trường phần mềm công nghệ lưu trữ nhiều sản phẩm phần mềm như là các môdul thiết kế, các môdul mã nguồn, và thòng tin cấu hỉnh mà để mô tả nó các môdul phải đưọ'c liên kết với nhau để tạo ra một chương trinh phức tạp và các trường hợp kiểm tra để kiểm tra hệ thống

3.1 Nhập môn về mô hình đối tượng của ODMG

Mô hình đối tượng ODMG là mô hình dữ liệu mà ngôn ngữ định nghĩa đối tưọng ( ODL) và ngôn ngữ truy vấn đối tượng (OQL) dựa vào Thật vậy, mô hình này cung cấp các kiểu dữ liệu, các kiến tạo kiếu và các lchái niệm khác có thể sử dụn° được trong ODL để chỉ ra các lưọ'c đồ cơ sở dữ liệu hướng đối tượng Vì vậy, nó là một

cách để cung cấp một mô hình dữ liệu chuẩn đối với cốc CO’ sở dữ liệu hướnơ dối

tượng, giống như SQL mô tả các mô hình chuẩn cho các cơ sỏ dữ liệu quan hệ

3.1.1 Các đối tưọng và các Literal

Các đổi tượng và các literal là các khối xây dựng cơ bàn cùa mô hỉnh đối lưựnc Sự khác nhau chính giữa chúng là ờ chỗ đối tượng có một định danh đối tưcmg và một

trạng thái ( hoặc gỉá trị hiện tại) còn literal chỉ có giá trị nhưng không có định danh đối

tượng Trong cả hai trưòng hợp giá trị có thể cấu trúc phức tạp Trạng thái đối tượng

có thể thay đổi theo thời gian bàng cách sửa đối giá trị đối tượng Một literal về co ban

là m ột giá trị hàng, cỏ thể có một cấu trúc phức tạp và không thay đổi

Trang 28

1fột đối tượng đirợc mô tả bằng bốn đặc trưng: (1) định danh, (2) tên, (3) thời gian

số! °, (4) cẩu true.

Địti Ix nh đỗi tưọ Ig là một định danh duy nhất trong toàn hệ thống Mỗi đối tượng

phải Co V' định danh đối tượng

Bên cạnh 'rú dfinh đối tượng, m ột vài đối tượng có thể được gán cho một tên duy nhất bên trong mẹ.' ‘ơ sở dữ liệu cụ thể - tên này có thể dùng để tham chiếu đến đối

tượng trong một -> 'g trình.và hệ thống sẽ có khả năng định vị đối tượng được sán cho tên này Rõ ràng ià ' ' eng phải tất cả các đối tượng đopn lẻ sẽ có một tên duy nhất Thông thường, một và, ìóỉ tượng, chủ yếu là các đổi tưọng chứa một tập họp các đối tượng của một kiểu cụ chẳng hạn như các extents- sẽ có một tên Các tên này

được sử dụng như các clic, \ 'to cơ sở dữ liệu; tức là, bằng cách định vị các dối tưọna

này theo tên duy nhất của 1 ng, người sử dụng có thể định vị các đối tượng khác được tham chiếu từ các đối ti g này Các đối tượng quan trọng khác trong úne dụns cũng có thể có các tên duy nhú jả các tên như vậy bên trong một cơ sở dữ liệu cụ thể phải là duy nhất

Thòi gian sổng của m ột đối tirựn, .11 rõ nó lả một đối tượng được lun giữ lâu ( nshĩa

là một đối tượng cơ sở dữ liệu) u là một đối tượng tạm thòi ( tức là một đối tưọ-níì trong một chương trình đang thực h ộn và biến đi sau khi chương trình kết thúc)

Cuôi cùng, cấu trúc của một đó trợng chỉ rõ đôi tượng dược xây ciựna như the nào bằng cách sử dụng các kiến tạo k ít 1 c ấ u trúc chỉ rõ một đối tượng là atomic hay lủ một đôi tượng tập họp Thuật ngữ đ ( ' lượng atomic khác vói cách chúne ta định nahĩa một kiến tạo kiểu atom và hoàn to 1 khác vói một literal atomic Trong mò hình

ODMG , m ột đổi tượng atomic là bc,: /qỳ một đôi tượng nào không phải là tập lic/p vì

vậy nó cũng gồm các đối tượng có C,;U trúc cỉưọc tạo ra bằng cách sử dụng một kiến

tạo kiểu

Trong mô hình đối tưcmg, một literal là một giá trị không có định danh dổi tirọng Tuy nhiên, giá trị có thể có cấu trúc đơn giản hoặc phức tạp Có ba loại literal: atomic, collection và structured

Các literal atomic tưcmg ứng với các giá trị của các kiểu cơ sở và được định nohĩa

trước Các kiểu dữ liệu cơ sở của mô hình đổi tưcmg bao gồm các số nguyên ( Long, Short, Unsigned Long và Unsigned Short), các số thực ( Float, Double), các giá trị logic (Boolean), các ký tự đơn( Char), các chuồi ký tự ( String) và các kiểu liệt kê (Enum)

Các literal có cấu trúc tương ứng với các giá trị được xây dựne bằne cách sử dụng

kiến tạo kiểu bộ ( struc) Chúng bao gồm Dale, Time, Interval Timestamp là các cấu trúc được xây dựng sẵn cũng như các cấu trúc kiểu do các nẹười dùng định nsiiĩa, Các cấu trúc do người dùng định nghĩa được tạo ra bàng cách sử dụng từ khóa Struct trong ODL

Các literal tập họp chì rõ một giá trị mà nó là một tập hợp các đối tượng hoặc các

giá trị nhưng tập họp đó tự nó không có một Object_Id Các tập họp trong mô hình đổi tượng là Set<t>, Bag<t>, List<t>, và Array<t> trong đó t là kiểu của các đôi tưọìig

Trang 29

hoặc các giá trị trong tập hợp Một kiểu tập hợp khác là Dictionary<k,v>, nó là một

tập hợp của các cặp <k,v>trong đó k là khóa ( một giá trị tìm kiếm duv nhất) đưọc liên kêt với một giá trị v; điều này có thể được sử dụng để tạo một chi sổ trên một tập các

giá trị

Hình 3.1 cho m ột khung cảnh đã được đơn giản hóa của các thành phần co bản của

mô hình đối tượng Ký hiệu của ODMG sử dụng từ khóa in terface ở nhữns chỗ chúng

ta đã sử dụng từ khóa type và class trong chirang trước Thật sự, interface là một thuật ngữ thích hợp hơn bởi vì nó mô tả giao diện của kiểu các đối tượne đó là các thuộc tính nhìn thấy được của chúng, các mối liên kết, và các phép toán Các giao diện

này thường là không thuyết minh được ( tức là không có các đối tượng được tạo ra cho

m ột giao diện ) nhưng chúng dùng để định nghĩa các phép toán có thể được các đổi tượng do người dùng định nghĩa thừa kế đối với một ứng dụng cụ thể Từ khóa Class trong mô hình đối tượng được dành cho các khai báo lóp do người dùng chỉ ra, chúng

tạo nên một lược đô cơ sở dữ liệu và được sử dụng đế tạo ra các đối tượng ứng dụng Hình 3.1 là một phiên bản đơn giản của mô hình đối tượng

unsigned short year();

unsigned short month();

unsigned short dayO;

boolean is_equal(in Date other_Datc);

boolean is_greater(in Date other_Date);

Trang 30

interface Time : Object {

unsigned short hour();

unsigned short minute();

unsigned short second();

unsigned short millisecond();

boolean is_equal(in Time other_Time);

boolean is_greater(in Time other_Time);

Tim e add_interval(in Interval some_Interval);Tim e subtract_interval(in Interval some_Interval);Interval subtract_time(in Time other_Time);

interface Timestamp : Object {

unsigned short year();

unsigned short month();

unsigned short day();

unsigned short hour();

unsigned short minute();

unsigned short secondQ;

unsigned short millisecondQ;

Tim estam p plus(in Interval some_Interval);Tim estam p minus(in Interval some_Interval);boolean is_equal(in Timestamp other_ Timestamp);boolean is_greater(in Timestamp other_ Timestamp);

};

Trang 31

unsigned short day();

unsigned short hour();

unsigned short minute();

unsigned short second();

unsigned short millisecond();

Interval plus(in Interval some_Interval);

Interval minus(in Interval some_Interval);

Interval product(in long some_value);

Interval quotient(in long some vahie);

boolean is_equal(in Interval other_ Interval);

boolean is_greater(in Interval other_ Interval);

};

Hình 3.1b Tổng quan về những định nghĩa giao diện cho phần của mô hình đối tượng ODMG

interface Collection : Object{

exception ElementNotFound{any element;};

unsigned long cardinalityO;

boolean is_empty();

void

boolean contains_element(in any element);

insert_element(in any element);

void remove_elemeni(in any element);

raises(ElementNotFound);

Iterator create_iterator(in boolean stable);

interface Iterator!

exception NoMoreEIementsQ;

Trang 32

boolean is_subset_of(in Set other set);

interface Bag:Collectioi :

unsigned long Oi Ltrrences_of(in any element);

Bag cr ate_union(in Bag other_bag);

Inv; lid_Index{unsigned long index;};

reinove_element_at(in unsigned lone p o s i t i o n ) raises(Invalidlndex);

retrieve_element_at(in unsigned long position) raises(Invalidlndex);

replace_element_at(in any element, in unsigned long

Trang 33

void remove_first_element() raises(Invalidlndex);

any retrieve_first_element() raises(Invalidlndex);

List concat(in List other_list);

interface Array: Collection {exception Invalid_Index{unsigned_long index;};

void remove_element_at(in unsigned long index)

void resize(in unsigned long new_size);

struct Association {any key; any value;};

interface Dictionary: Collection {exception ICeyNotFound {any key;};

void bind(in any key, in any value);

void unbind(in any key, in any value) raises(KeyNotFound);any lookup(in any key, in any value) raises(KeyNotFound);boolean contains_key(in any key);

};

ODMG

Những định nghĩa giao diện cho những đối tượng tụ lập

Trong mô hình đối tượng, tất cả các đối tượng thừa kế interface cơ sớ Object Như vây các phép toán cơ bản được tất cả các đối tượng thừa kế là: copy ( tạo ra một bàn sao mới của đối tượng), delete ( loại bỏ đối tượng) và same_as ( so sánh định danh đối

tượng với đổi tượng khác Nói chung, được áp dụng cho các đối tượne bãne cách sử

Trang 34

dụng kỷ hiệu chấm (dot notation) Ví dụ, cho trước m ột đối tượng 0, để so sánh nó

với một đôi tượng p khác, chúng ta viết

3.1.2 Built-in interfaces cho Cl c đối tu ọn g tập họp.

M ột đối tượng tập hợp bất kỳ thừa kế interface Collection cơ bản được chỉ ra ở hình

2.1, nó trình bày các phép toán cho tất cả các đối tượng tập hợp.Cho trước một đối tượng tập hợp 0, phép toán o.cardinality trả về sổ các phần tử trong tập hợp Phép toán0.1s_empty trả về true nếu tập họp o là rỗng, và false trong trường hợp ngược lại Các phép toán o.insert_element(e) và o.remove_element(e) chèn vào hoặc loại bó một phần tử e ra khỏi tâp hợp 0 Cuối cùng, phép toán o.contains_element(e) cho giá trị true nếu tập hợp o chứa phần tử e và cho giá trị false trong trường hợp ngược lại Phép

toán i = o.create_iterator() tạo ra một đối tượng lặp (iterator) i đối với đối tượng tập

hợp 0, nó có thể lặp trên mỗi phần tử trong tập họp Phép toán i.resetQ đặt iterator ở

phần tử đầu tiên trong một tập hợp, (với một tập hợp không săp thứ tự,nó có thê là một phần tử tùy ý, và i.nextjpositionQ đặt iterator đến phần tử tiếp theo Phép toán

1.get_element() rút ra phần tó hiện tại, nó là phân tử mà ở đó iterator đans định vị

Mô hình đối tượng ODM G sử dụng các ngoại lệ (exceptions) để báo cáo các sai sót hoặc các điều kiện đặc biệt Ví dụ, ngoại lệ ElementNotFound trong interface Collection có thể được đưa ra bởi phép toán o.remove_element(e) nếu e không phải là phần tử trong tập hợp o Ngoại lệ NoM oreElement trong interface iterator có thê được đưa ra bởi phép toán i.next_position nêu iterator đang định vị tại phân tử cuôi cùng của tập họp và như vậy không có phần tử nào nữa đế iterator chỉ đến

Các đổi tượng tập hợp sau đây được đặc tả Thành Set, List, Bag, Array và Dictionary, chúng thừa kế các phép toán của interface tập hợp Một kiêu đôi tượng Set<t> có thể được sử dụng để tạo ra các đôi tượng như là của đôi tượng 0 là tập hợp các phần tử kiểu t Interface Set chứa một phép toán phụ p= o.create_union(s), nó trả lại một đối tượng mới p thuộc kiêu Set<t> là hợp của hai tập hợp 0 và s Các phép toán khác tương tự với create_union như create_intersection(s) hoặc create_difference(s) Các phép toán để so sánh tập hợp bao gồm phép toán o.is_subset_of(s), trà lại giá trị true nếu đối tượng tập hợp 0 là một tập con của một đôi tượng tập hợp s khác và trả lại

giá trị false nếu ngược lại Các phép toán tương tự là is_proper_subset_of(s) , is_superset_of(s) và is_proper_superset_of(s)

Trang 35

Kiêu đôi tượng Bag<t> cho phép lặp lại các phần tử trong một tập họp và cũns thừa

kê Interface tập họp Nó có ba phép toán create_union(b), create_intersection(b) và create_difference(b)- tất cả đều trả lại một đối tượng mới thuộc kiểu Bag<t> Ví dụ p=o.create_union(b) trả lại một đối tượng túi p là hợp của 0 và b (giữ các trùng lặp) Phép toán o.occurences_of(e) trả lại kết quả là số lần trùng lặp của phần tử e trons túi

0

Kiêu đôi tượng List<t> thừa kế các phép toán tập họp và có thể được sử dụng dể tạo

ra các tập hợp trong đó thứ tự của các phần tử là quan trọng Giá trị của mỗi đối tượng

o như vậy là một danh sách có thứ tự các phần tử thuộc kiểu t Như vậy, chúng ta có

thê tham chiêu đến phần tử đầu tiên, phần tử cuối cùng, phần tử thứ i trong danh sách

Cũng vậy, khi chúng ta muốn thêm một phần tử vào danh sách chúng ta phải chi ra vị trí mà phân tử sẽ được chèn vào M ột số các phép toán danh sách dược chí ra ờ hình

vẽ 2.1 N êu o là m ột đôi tượng thuộc kiêu List<t>, phép toán o.insert_element_first(e) chèn phân tử e trước phân tử dâu tiên trong danh sách o, như vậy e trở thành phần tử đầu tiên trong danh sách M ột phép toán tương tự là o.insert element last(e) Phép toán o.insert_element_after(e,i) chèn phần tử e vào sau phần tử thứ i trong danh sách o

và sẽ đưa ra ngoại lệ Invalidlndex nếu không có phần tử thử i tồn tại trong 0 Một phép toán tương tự là o.insert_element_before(e,i) Đe loại bỏ các phần lư ra khỏi danh sách, các phép toán là: e = o.remove first element(),e =o.rem ove_last_elem cnt(), e = o.remove_element_at(i) Các phép toán này ra khỏi các phần tử được chỉ ra và ư ả lại kết quả là một phần tử Các phép toán khác lũy ra một phần tử mà không loại bỏ nó ra khỏi danh sách Đó là các phép toán e -

o r e tr ie v e _ fìr st_ e le m e n t(), e = o r e tr ie v e _ la st_ e le m en t(), e

o.retrieve_elem ent_at(i) Cuối cùng hai phép toán thao tác các danh sách được định nghĩa Đó là p = o.concat(l), tạo ra một danh sách mới p là nôi của danh sách o và danh sách 1 ( các phần tử của danh sách 0 sau đó là các phần tử của danh sách 1 )và o.append(ì) nối các phần tủ của danh sách 1 vào cuối danh sách o ( khône tạo ra một đổi tượng danh sách m ớ i)

Kiểu đối tượng Array<t> cũng thừa kế các phép toán tập hợp Nó tươne tự như danh sách ngoại trừ một danh sách có số các phân tử cô định Các phép toán riêng cho một đối tượng m ảng 0 là o.replace_element_at(i,e),nó thay thế phần tử mảng ó' vị trí i bàng

e- e = o.rem ove_elem ent_at(i), nó lây ra phân tử thứ i và thay thê nó băng mộl giá trị không xác định và e = o.retrieve_element_

at(i) lấy ra phần tử thứ i của mảng Mỗi phép toán này có thể đưa ra ngoại lệ Invaldlndex nếu i lớn hơn cỡ của mảng Phép toán o.resize(n) thay đổi số phần tử của

mảng thành n.

K iểu cuối cùng của các đối tượng tập họp là kiểu Dictionary<k,v> Kiểu này cho phép tạo ra một tập họp gồm các cặp <k,v>, trong đó tât cả giá trị k( Khóa-key) là duy nhất Điều đó cho phép để kết hợp lấy ra một cặp cụ thể khi biết khóa của nó.Nếu

o la một đối tượng tập hợp thuộc kiểu Dictionary<k,v> thì o.bind(k;v) nôi giá trị V với khóa k như là một kết hợp <k,v> trong tập họp, trong khi dó o.unbind(k) loại bỏ sự kết

hợp với khóa k ra khỏi o, và o.lookup(k) trả lại giá trị V kết hợp với khóa k trong o

Trang 36

Hai ;)hép toán sau đưa ra ngoại ỉệ KeyNotfound Cuối cùng o.contains_key(k) nhận

giá tiị true nếu k tồn tại trong o, và giá trị false trong trường hợp ngược lại.

H h h 2.2 là m ột sơ đồ minh họa phân cấp thừa kế của các cấu trúc găn liên của mô

hình đôi tượng Các phép toán được thừa kế từ lớp trên đên lớp dưới Các giao diện

đôi lượng tập hợp mô tả ở trên là không trực tiếp được ( not directly in stan tia te ),

nghũ là , người ta không thể tạo ra các đối tượng một cách trực tiếp dựa trên các giao

diện này Đúng hơn, các giao diện có thể được sử dụng để đặc tả các đối tượng tập hợp do người dùng định nghĩa - thuộc kiểu Set, Bag, List, Array hoặc Dictionary - đối với các ứng dụng cơ sở dữ liệu cụ thể Khi một người sử dụng thiết kế một lược đồ cơ

sở dữ liệu, họ mô tả các giao diện đối tượng và các lớp của mình có liên quan đèn ửns dụng cơ sở dữ liệu N eu một giao diện hoặc một lớp là một trong các đối tượng tập

h ợ p , ví dụ Set, thì nó sẽ thừa kế các phép toán của giao diện Set Ví dụ, trong ứng dụng cơ sở dữ liệu UNIVERSITY, người sử dụng có thể chỉ ra một lớp đối với Set<student> mà các đối tượng của nó sẽ là các tập hợp của các đối tượng Student Khi đó người lập trình có thể sử dụng các phép toán đối với set<t> đế thao tác một đôi tượng kiểu set<Student> Việc tạo ra các lớp ứng dụng thưòne; được thực hiện băng

cách dùng ngôn ngữ định nghĩa đói tượng ODL

Hình 3.2 Phân cấp thừa kế đối với các giao diện có sẵn của mô hình đôi tượngĐiều quan trọng cần chú V là mọi đối tượng trong một tập hợp cụ thể phải cùng một kiểu Vì vậy mặc dù từ khóa nào đó xuất hiện trong đặc tả của giao diện tập hợp không có nghĩa là các đối tượng của một kiểu cỏ thể lẫn lộn bên trong cùng một tập hợp Đúng hơn là nó có nghĩa rằng kiểu bất kỳ có thể được sử dụng khi đặc tả kiêu của các phần tử đổi với một tập cụ thê

Trang 37

3.1.3 Các đối tượng nguyên tử ( do ngưòi dùng định n g h ĩa ).

Trong phân trước đã mô tả các kiểu tập hợp có sẵn của mô hinh đôi tượng Bây giờ chúng ta thảo luận các kiẻu đối tượng đối với các đổi tượng nguyên tử dược xây dựng như thê nào, N hững đôi tượng đó được chỉ ra băng cách sử dụng từ khóa class trong ODL Trong mô hình đối tượng, một đối tượng do người dùng định nghĩa nào mà không phải là m ột đối tượng tập hợp thi được gọi là một đối tượng nguyên tử ( atomic

o b je c t) Ví dụ, trong úng dụng cơ sở dữ liệu UNIVERSITY , người sử dụng có thê chỉ

ra m ột kiếu đối tượng (class) cho các đối tượng sinh viên Hầu hết các đối tượng như vậy sẽ là các đối tượng có cấu trúc; ví dụ, một đối tượng sinh viên sẽ có một cấu trúc phức tạp, với rất nhiều các thuộc tính, các liên kết và các phép toán nhưng nó được coi như nguyên tử bởi vì nó không là một tập hợp Một đối tượng nguyên tử do người

dùng định nghĩa như vậy được định nghĩa như một lóp băng cách chỉ ra các tính clìât

và các phép toán của chúng Các tính chất xác định trạng thái của đối tượna và làm phân biệt giữa các thuộc tính và các kiểu liên kết Trong phàn này chúng ta sẽ nói tỷ

mỉ ba kiêu thành phần — các thuộc tính, các moi liên kết và các phép toán - những

thành phần có trong kiểu đối tượng do người đùng định nghĩa đổi với các đối tưọns

nguyên tử (có cấu trúc ) Ta minh họa thảo luận của ta với hai lóp Employee và Departm ent (hình 3.3):

attribute date b irth d a y ;

attribute enum Gender ( M

attribute short age

relationship Departm ent w o r k f o r

inverse D ep artm en t:: has_emps ; void reassign_em p(in string new_dname

raises (dnam e_not_valid);

class D epartm ent

Trang 38

attribute short dnumber;

attribute struct Dept_M gr{Employee manager, date startdate} mgr;

attribute set<string> location;

attribute set<struct Projs {string projname, time weekly_w ork_hours} >

projs ;

relationship set<Employee> has_emps inverse Employee:: work for ;

void add_emp(in string new_ename) raises (ename_not_valid);

void change_manager( in string new_mgr_name; in date startdate );

};

Hình 3.3:Các thuộc tính, mối liên hệ và các phép toán trong một định nghĩa lóp.Một thuộc tính là một tính chất mô tả một khía cạnh nào đó của đối tượng Các

thuộc tính có các giá trị, thông thưcmg chúng là các literal có cáu trúc đon giản hoặc

phức tạp, được lưu trữ bên trong đối tượng Tuy nhiên, các giá trị thuộc tính cũng có thể là các Object_ID của các đối tượng khác

Các giá trị đổi tượng có thể được chỉ ra thông qua các phương thức dược sử dụng để tính giá trị đối tượng Trong hình 2.3, các đối tượng cho Employee là name, ssn, birthday, sex và age, và các thuộc tính cho Department là dname, dnumber, mgr, locations và projs Các thuộc tính locations và projs của Department có cấu trúc phức tạp và được định nghĩa qua struct, nó tương ứng với bộ tạo bộ (tuple constructor) Như vậy, giá trị của mgr trong môi đôi tượng Department sẽ có hai thành phần: manager, giá trị của nó là một Object_Id tham chiêu đên đôi tượne Employee quản lý Department, và startdate, mà giá trị của nó là m ột ngày Thuộc tính locations của Department được định nghĩa thông qua bộ tạo tập hợp bởi vì mỏi đôi tượng Department có thể có một tập hợp các vị trí

Một mối liên hệ (relationship) là một tính chất chỉ ra rằng hai dối tượng trong một

cơ sở dữ liệu có liên kết với nhau Trong 1Ĩ1Ô hình đổi tượng của ODMG, chí có môi liên kết hai chiều là được trình bày một cách rỗ ràng, và mỗi mối liên kết hai chiều được biểu diễn bằng một cặp tham chiếu ngược nhau đưọc chỉ ra thông qua từ khóa relationship Trong hình 2.3 , một môi liên hệ tôn tại liên- lcêt môi Employee với Departm ent m à anh ta (hoặc chị ta ) làm việc trong đó - môi liên kết w o t'k j'o r cúa Employee Trong chiều ngược lại, mỗi Department đưọc liên kêt với một tập họp các Employee làm việc trong Department - mối liên kết has_emps của Department Từ khóa inverse chỉ ra ràng hai tính chất này đặc tả m ột môi quan hệ quan niệm trong hai chiều trái ngược Bằng việc chỉ ra các inverse, hệ thông cơ sở dữ liệu có thẻ bảo vệ toàn vẹn tham chiếu của mối liên hệ một cách tự động Điều đỏ có nghĩa tà nêu giá trị của w ork_for đối với một nhân viên cụ thể e tham chiếu đê đon vị d thì giá trị của has epms đối với đơn vị d phải chứa một tham chiếu đến e trong tập hop các tham

chiễu nhân viên của nó.

Trang 39

Thêm vào với các thuộc tính và các mối liên kết, người thiết kế có thể đưa vào các phép toán các đặc tả kiểu đối tượng (class) Mỗi m ột kiểu đối tượng có thể có một sổ

cá signature phép toán, nó chỉ ra tên phép toán, các kiểu đối của chúng và giá trị trà lại

của chúng nêu ứng dụng được Các tên phép toán phải duy nhất bên trong mỗi kiều đôi tượng nhưng chúng có thể được nạp chồng bằng cách có cùng tên phép toán xuất hiện trong các kiêu đôi tượng khác nhau.Các signature phép toán cũng có thê chi ra các tên của các ngoại lệ (exceptions) có thế xảy ra trong khi thực hiện phép toán Thể hiện của phép toán sẽ chứa mã để đưa ra các ngoại lệ này Trong hình 3.3, lóp Employee có m ột phép toán, reassign_emp, và lớp Department có hai phép toán, ađ_emp và changejm anager

3.1.4 Các giao diện, Các lóp và sự kế thừa

Trong mô hình đối tượng ODMG 2.0, hai khái niệm tồn tại để đặc tả các kiểu đối tượng Thêm nữa, có tồn tại hai kiểu liên két thừa kế Trong phần này chúng ta sẽ thảo luận vê sự giông nhau và khác nhau giữa chúng Theo thuật neữ của ODMG 2.0, chúng ta dùng từ behavior để chỉ đến các phép toán và stata để chỉ đến các tính chất ( các thuộc tính và các mối liên kết)

M ột interface là một đặc tả của hành trạng (behaviors) trừu tượng của một kiểu dối tượng, nó chỉ ra các signature phép toán Mặc dù một interface có thể có các tính chất

trạng thái t các thuộc tính và các mối Hên kết ) như là một phần của đặc tả của nó,

chúng không thể được thừa kế từ các interface như chúng ta sẽ thấy Một interface cũng là không trực tiếp ( noninstantiable) nghĩa là người ta không thế tạo ra các đối tượng tương ứng với định nghĩa interface

M ộí class là một đặc tả của cả hành trạng trừu tượng và trạng thái trừu tượng của một kiểu đối tượng và nó là trực tiếp, nghĩa là người ta có thể tạo ra các ví dụ đối tượng

riêng rẽ tương ứng với định nghĩa lóp bởi vì interface là không trực tiếp, chúng được

dùng chủ yếu để chỉ ra các phép toán trừu tượng và chúng có thể được thừa kế bởi các class hoặc bới các interface khác Điều đó đưọc gọi là sự thừa kê hành xử và được chỉ

ra bằng ký hiệu Vì vậy, trong mô hình đổi tưọ-ng ODMG 2.0 sụ thừa ké hành xử đòi hỏi lớp trên là một interface, trong khi đó lóp dưới phải hoặc là một class hoặc một interface khác

Một mối liên kết thừa kể khác gọi là EXTENDS và được chỉ ra bàng từ khóa extends được sử dụng để thừa kế cả trạng thái và hành xử một cách chặt chẽ giữa các lóp Trong một thừa kế EXTENDS, cả lớp trên vả lóp dưói phải là các lớp Đa thừa kê thông qua EX TENDS không được cho phép Tuy nhiên, đa thừa kê cho phêp thông qua N hư vậy m ột interface có thể thừa kể hành xử từ nhiều interface khác Một lơp cũng có thể thừa kế hành xử của nhiều interface thông qua và thừa kế hành xử

và trạng thái từ nhiều nhất là một trạng thái thông qua EXTENDS

3.1.5 Extends, Key, và Factory Object

Trong mô hình đối tượng ODM G 2.0, người thiết kế CO' sỏ' dữ liệu có thẻ khai báo

m ột extent cho m ột đối tượng bất kỳ được định nghĩa thông qua mô tả lóp Extent được cho m ột tên và nó sẽ chứa tất cả các đối tượng bên (persistent) cua lóp dó N hư

Trang 40

vạy, extent đôi xử nh:j m ột đôi tượng tập hợp chứa tất cả các đối tượng bền cùa lóp Iroii^ ninh 2.3, cac 1ỚỊ'Employee và Department có các extent gọi là all employees và

ill_ d e p ftm e n ts D iiiu đó tương tự với tạo ra hai đối tượng, một thuộc kiêu

Set<T> p oyee> va /nột thuộc kiểu Set<Department> và làm cho chúng bền bans cách đật tên chúng all employee và all_departments Các extent cũng được dùnạ dế áp buộc mô r ê n kêt ỉỊÌữa các extent của một lóp trên và lóp dưới của nó Nếu hai lóp A

và B C<I :r extent II A và all_B và lớp B là lóp con của lớp A ( nghĩa là lớp B

EXTEM1 I /p /\) ! lặp hợp các đôi tượng trong all_B phải là một tập con cua cácđôi tượ.ig >1 % 'ìli_ V ở mọi thời điêm, Ràng buộc này được hệ thống cơ sờ dữ liệu bắt

buộc mô; ca ự lộng

hoặc nhiêu lii;h ' i 1 ( thuộc tính hoặc môi liên kết) mà giá trị của chúng bị ràng buộc

là duy nhât đôi V 'i ỏi đôi tượng trong extent Ví dụ, trong hình 2.3, lớp Employee có thuộc tính ssn nhi ì ỉchóa ( môi đôi tượng nhân viên trong extent phải có một giá trị ssn duy nhât ), và ■] ! Department có hai lclióa riêng biệt : dname và dnumber ( mồi đơn vị phải có rr ti '1 ly nhât và một mã số duy nhất).Với một khóa phức họp được tạo nên từ nhiêu , n1 'ì I , các tính chât tạo nên khóa được chứa trong các dâu niioặc

Cuối cùng ch Ún +' '-ình bày đối tượng sản xuất ( factory object) - là một dối

tượng có thê được ò I đế sinh hoặc tạo ra các đối tượng riêng rẽ thôna qua các phép toán của nó Một so 0 interface của các đối lượng sản xuất là một phần cua mỏ hình đôi tượng ODMG 2.0 Q -ỢC trinh bày ở hình 2.4, Interface ObjectFactory có một phép toán - new()- nó trả về n, dối tượng mới vói một Object_Id Bần 12 việc thừa kế

in terfa ce nảy, n h ữ n g n gư ờ i sử Q ag có thế tạo ra cá c in terface factory dối với m ỗi kiểu

đối tượng do người đùng định n :i (atomic) và người lập trình có thể thê hiện ( cài đặt) phép toán new m ột cách kh nhau đối vói mỗi một lđếu đối tượng Hỉnh 2.4 cũng chỉ ra m ột interface Datefac ory, nó có hai phép toán thêm vào đế tạo ra một calendar_date mới và một đối tượi có giá trị là current_date trong số các phép toán (không chỉ ra ở đây) N hư chúng ia "ó thể thấy, một đối tượng sân xuất cơ ban là cung cấp các phép toán tạo các đối tượng ió'i

Cuối cùng, chúng ta thảo luận khiu niệm cơ sỏ' dữ liệu Bỏi vì một ODBMS có thể tạo nhiều cơ sở dữ liệu khác nhau, mui cơ sở dữ liệu với lược dồ riêng của nó, mô hình đối tượng ODM G 2.0 có các interface đối với các đối tưọng DatabaseFactory và Database như chỉ ra trong hình 2.4 Mỗi cơ sở dữ liệu có tên cơ sở dữ liệu riêng cua

nó, và phép toán bind có thể được sử dụng để để gán các tên riêng rẽ duy nhất cho các đối tượng bền trong một cơ sỏ' dữ liệu cụ thể Phép toán lookup trà về một đối tượng

từ cơ sở dữ liệu có object_name được chỉ ra và phép toán unbind loại bò lên của một

đổi tượng bền ra khỏi CO’ sở dữ liệu

Ngày đăng: 10/05/2020, 17:12

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w