Tải bản đầy đủ (.doc) (25 trang)

TIỂU LUẬN MÔN CƠ SƠ DỮ LIỆU Tìm hiểu cơ sở dữ liệu hướng đối tượng

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 (257.84 KB, 25 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Lương Văn Dũng
Đỗ Văn Khang
TÌM HIỂU CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG
Báo cáo môn cơ sở dữ liệu nâng cao
HÀ NỘI -2012
Mục lục
Mục lục 3
Lời mở đầu 1
Chương 1 Cơ sở dữ liệu hướng đối tượng 2
1 Giới thiệu phương pháp tiếp cận hướng đối tượng 2
1.1 Các khái niệm 2
2 Cơ sở dữ liệu hướng đối tượng 4
2.1 Giới thiệu chung 4
2.2 Các đặc trưng trong cơ sở dữ liệu hướng đối tượng 4
2.3 Quản lý lưu trữu dữ liệu 6
2.4 So sánh cơ sở dữ liệu hướng đối tượng và cơ sở dữ liệu quan hệ 6
Chương 2 Mô hình đối tượng 8
2.1 Giới thiệu 8
2.2 Types: Specifications and Implementation 9
2.2.1 Subtyping và kế thừa hành vi 11
2.2.2 Kế thừa trạng thái 11
2.2.3 Keys 12
2.3 Objects 12
2.3.1 Object creation 13
2.3.2 Object identifiers 13
2.3.3 Object names 13
2.3.4 Object lifetimes 13
2.3.5 Collection objects 13
2.4 Literals 14


2.4.1 Literal types 14
2.4.2 Copying literals 15
2.4.3 Comparing literals 15
2.4.4 Literal equivalence 15
2.5 Mô hình dựa trên trạng thái đối tượng (Modeling State - Properties) 16
2.5.1 Attribute 16
2.5.2 Relationships 17
Chương 3 Thiết kế cơ sở dữ liệu hướng đối tượng 17
3.1 Thiết kế khái niệm (UML) 18
3.2 Thiết kế lược đồ tiêu chuẩn 18
3.3 Xây dựng cơ sở dữ liệu hướng đối tượng 20

Lời mở đầu
Cơ sở dữ liệu là một thành phần không thể thiếu trong việc phát triển các ứng
dụng phục vụ cho các bài toán khác nhau. Và, cơ sở dữ liệu được sử dụng ở đây chủ yếu
là cơ sở dữ liệu quan hệ. Tuy nhiên, hệ cơ sở dữ liệu quan hệ không đáp ứng được một
số bài toán mang tính chất phức tạp như các ứng dụng dùng trong thiết kế, sản xuất công
nghiệp (CAD/CAM và CIM), các thí nghiệm khoa học, viễn thông, hay multimedia, GIS.
Các ứng dụng này có tính chất phức tạp hơn, thời gian thực thi transaction lâu, kiểu dữ
liệu lưu trữ. Và cơ sở dữ liệu hướng đối tượng ra đời được xem là phù hợp để đáp ứng
những nhu cầu của các loại ứng dụng này. Việc tiếp cận hướng đối tượng sẽ tạo ra tính
linh động để xử lý một số yêu cầu mà không bị hạn chế bởi các kiểu dữ liệu và ngôn ngữ
truy vấn có sẵn trong hệ cơ sở dữ liệu quan hệ.
1
Chương 1 Cơ sở dữ liệu hướng đối tượng
1 Giới thiệu phương pháp tiếp cận hướng đối tượng
1.1 Các khái niệm
Khái niệm về một đối tượng là khái niệm được sinh ra từ việc nhận thức
thực tế. Một đối tượng có các đặc tính sau:
Mang tên duy nhất, không thay đổi.

Thuộc về một lớp nào đó.
Có thể gửi thông báo đến các đối tượng khác.
Có trạng thái riêng.
Mỗi đối tượng được xác định là duy nhất dựa vào OID. Giá trị này được hệ
thống tự động sinh để sử dụng cho một đối tượng duy nhất, và phân biệt với các
đối tượng khác. Một đặc điểm quan trọng của OID là tính bất biến. Một số hệ
OODB sử dụng địa chỉ vật lý để lưu trữ giá trị này, qua đó tăng cường hiệu quả
truy xuất dữ liệu. Tuy nhiên, nếu địa chỉ vật lý của đối tượng bị thay đổi thì một
con trỏ gián tiếp sẽ được gán lại tại địa chỉ trước đó, qua đó sẽ cho biết địa chỉ vật
lý mới của đối tượng. Hoặc có thể sử dụng biến số kiểu Long Integer làm OID, sau
đó sử dụng hàm băm để ánh xạ giá trị OID đến địa chỉ vật lý của đối tượng.
Lớp đối tượng: một lớp đối tượng có giao diện và miền riêng của nó. Giao
diện của đối tượng là cái mà các đối tượng khác có thể nhìn thấy được.
Giao diện của đối tượng bao gồm 2 thành phần:
Thuộc tính của lớp: trong một chừng mực nào đó, các thuộc
tính của lớp được coi là tương đương với các thuộc tính của quan hệ. Thông qua
thuộc tính của lớp, người ta có thể thể hiện các liên kết giữa các đối tượng. Trong
lớp, không có hạn chế gì về cách thức cấu trúc đối tượng hay cách liên kết thuộc
tính với nhau. Các thuộc tính có thể là một đối tượng, dùng để tạo đối tượng phức
tạp hơn. Người ta không xử lý trực tiếp các giá trị thuộc tính của đối tượng mà xử
lý thông qua phương pháp liên kết với lớp đối tượng.
Phương thức gắn kết đối tượng: các thông báo được chuyển
dến lớp đối tượng nhờ phương thức gắn kết đối tượng. Chúng thường có dạng là
các phép toán, các hàm với các tham số khác nhau. Các đối tượng trong lớp có thể
được truy cập thông qua phương thức và các tham số cần cho phương thức này.
Miền của lớp đối tượng là phần xác định lớp, nhưng không hiện ra cho đối
tượng khác thấy. Miền này có thể bao gồm thông tin chi tiết về cấu trúc của lớp
đối tượng. Trong chương trình, người ta có thể cài đặt che giấu các giá trị, ngày cả
việc che giấu các liên kết cũng như các thông báo. Việc bảo vệ thông tin làm việc
2

bên trong cùng với các giá trị đối tượng trước các sử dụng thông thường được gọi
là che giấu thông tin.
Một khái niệm quan trong nữa là bao bọc, có nghĩa là mọi vấn đề về đối
tượng được nhận biết thông qua định nghĩa lớp đối tượng. Người ta truy cập khái
niệm nhờ giao diện và xác định các hành vị thông việc xác định lớp.
1.1.1 Tính kế thừa (Inheritance)
Khái niệm kế thừa là một khái niệm quan trọng trong hướng tiếp cận hướng
đối tượng. Người ta thường sử dụng thuật ngữ này khi chỉ định lớp đối tượng này
tiếp thu, kế thừa các thuộc tính của lớp đối tượng khác. Tuy nhiên, mỗi lớp con có
thể mang một số thuộc tính hay phương thức riêng. Một lớp có thể kế thừa từ
nhiều lớp khác nhau. Điều này làm cho việc xây dựng các lớp dữ liệu cho hệ thống
sẽ dễ dàng hơn và sử dụng lại các lớp dữ liệu đã có khi tạo ra lớp dữ liệu mới.
1.1.2 Tính đóng gói (Encapsulation)
Đây là một cơ chế được kế thừa từ ngôn ngữ lập trình hướng đối tượng.
Tính đóng gói được xem là lớp vỏ bọc bảo vệ các mã lệnh bên trong và tránh sự
truy cập tùy tiện từ các mã lệnh khác. Việc truy cập sẽ được điều khiển một cách
chặt chẽ thông qua các phương thức được định nghĩa trước. Các phương thức này
được các đối tượng khác nhìn thấy, tuy nhiên các dữ liệu và cách thực hiện thì
được ẩn giấu bên trong đối tượng và trong suốt với các đối tượng khác.
1.1.3 Tính đa hình (Polymorphism )
Đây là đặc điểm cho phép một đối tượng có thể được sử dụng cho nhiều đối
tượng khác nhau, thông qua việc thực thi phương thức bên trong. Điều này sẽ làm
giảm độ phức tạp của chương trình.
1.1.4 Tính trừu tượng (Abstraction)
Một đối tượng chỉ mang những đặc điểm cần thiết nhưng lại không mang
những chi tiết cụ thể bên trong nó. Đối tượng này được tạo ra để mang những đặc
tính tổng quát nhưng bản thân nó không mang ý nghĩa hay đầy đủ ý nghĩa để có
thể tạo ra một đối tượng cụ thể từ nó.
1.1.5 Đối tượng phức hợp (Complex Objects)
Đối tượng phức hợp được xây dựng từ những kiểu đối tượng đơn giản hơn

bằng cách sử dụng lại chúng. Các đối tượng đơn giản là những đối tượng kiểu như
số nguyên, ký tự, chuỗi, hay logic… Có nhiều đối tượng phức tạp như: tuples,
sets, bags, lists, arrays.
1.1.6 Nạp chồng, ghi đè và liên kết muộn (Overriding, overloading and late binding)
3
Overriding là việc định nghĩa lại một phương thức nào đó từ đối tượng cơ
sở.
Overloading: sử dụng cùng một phương thức nhưng lại có cách thức thực
thi khác nhau, và cho ra kết quả khác nhau trong các chương trình ứng dụng.
Một chức năng mới trong OODB, hệ thống có thể không có ràng buộc tên
phương thức thực thi cho các chương trình biên dịch. Qua đó, tên của phương thức
sẽ được dịch trong thời gian chạy chương trình. Và việc dịch chậm này được gọi là
liên kết muộn.
2 Cơ sở dữ liệu hướng đối tượng
2.1 Giới thiệu chung
Các CSDL quan hệ, theo các bảng chiếm tỷ lệ cao, khoảng 70%, trên thị
trường phần mềm ứng dụng. Các dữ liệu được xử lý thuộc loại số, ký tự. Còn lại
các dữ liệu phức tạp như văn bản, đồ hoạ, bản đồ, hình ảnh, dữ liệu nhiều chiều và
các dữ liệu động như chương trình, mô phỏng quá trình…trong CAD, văn phòng
học, hệ chuyên gia…thì người ta không chỉ dùng CSDL quan hệ mà giải quyết
được. Mô hình đối tượng hay mô hình hướng đối tượng rất đa dạng. Nó gồm
những mạng ngữ nghĩa và các ngôn ngữ lập trình hướng đối tượng. Chúng cho
phép mô hình hoá những đối tượng phức tạp có được trong các thủ tục xử lý.
Dù có nhiều ngôn ngữ hướng đối tượng, đa số các CSDL hướng đối tượng
dựa trên C++, lựa chọn này là do tính hiệu quả và thông dụng của C++. Thực tế
cho thấy CSDL hướng đối tượng có những ưu điểm:
Cho phép xét các liên kết đối tượng dưới dạng các phép lưu trữ với
các đối tượng.
Các đối tượng được dùng chung giữa nhiều người sử dụng.
Khả năng phát tiển kho tri thức bằng cách thêm mới các đối tượng

và các phép xử lý kèm theo.
Phát triển hệ quản trị CSDL dựa trên việc xử lý các đối tượng phức
tạp, giao diện chương tình, đối tượng động và trừu tượng.
2.2 Các đặc trưng trong cơ sở dữ liệu hướng đối tượng
Các đặc trưng trong cơ sở dữ liệu hướng đối tượng được tách làm ba nhóm
chính sau:
Đặc trưng mang tính bắt buộc (Mandatory)
Đặc trưng mang tính tùy chọn (Optional)
Đặc trưng mang tính mở (Open)
Đặc trưng mang tính bắt buộc (Mandatory): đây là những đặc trưng mà ở
hệ OODB nào cũng phải đáp ứng được. OODB được xây dựng dựa trên nền tảng
của ngôn ngữ lập trình hướng đối tượng, nên nó mang những đặc trưng vốn có ở
4
loại ngôn ngữ này. Theo hướng tiếp cận này, OODB mang những đặc trưng như
đã được trình bày ở trên, ngoài ra nó còn mang thêm một số đặc trưng khác nữa
như :
Khả năng mở rộng (Extensibility): hệ thống được thiết lập các kiểu
dữ liệu có sẵn, người sử dụng dựa vào đó có thể tự định nghĩa ra kiểu dữ liệu mới,
khi sử dụng kiểu dữ liệu mới này thì hệ thống sẽ không có sự phân biệt với kiểu
dữ liệu cơ bản vốn có.
Khả năng bảo toàn (Persistence): cho phép hệ thống bảo toàn dữ
liệu trong quá trình thực hiện, đối tượng có thể được sử dụng cùng lúc bởi quá
trình khác, và cung cấp khả năng tái sử dụng.
Tính toán đầy đủ (Computationally complete): ngưởi sử dụng có thể
thực hiện bất ký chức năng tính toán nào, bằng cách sử dụng các DML của hệ
thống.
Quản lý lưu trữ thứ cấp (Secondary storage management): dữ liệu
được hệ thống quản lý để truy cấp nhanh và dễ dàng hơn. Việc lưu trữ dữ liệu
được sử dụng bởi các kỹ thuật khác nhau như: phân nhóm dữ liệu, đánh chỉ mục,
tối ưu hóa truy vấn, tạo bộ đệm dữ liệu và lựa chọn đường truy cập. Những kỹ

thuật này là trong suốt với người sử dụng.
Truy cập đồng thời (Concurrency) hệ thống cung cấp cùng lúc cho
nhiều người sử dụng cùng truy cập tới một dữ liệu.Hệ thống cũng quản lý việc xảy
ra các lỗi hệ thống hay chưa hoàn thành các transaction.
Phục hồi (Recovery) tính năng này cung cấp khả năng khôi phục lại
trạng thái ban đầu nến hệ thống bị lỗi phần cứng hoặc phần mềm.
Ngôn ngữ truy vấn (Ad Hoc Query Facility): một hệ OODB phải
cung cấp ngôn ngữ để thực hiện truy vấn dữ liệu. Một ngôn ngữ truy vấn phải đảm
bảo ba tiêu chí sau đây: (i) nên có cấp độ (high level) (ii) tính hiệu quả, xây dựng
các truy vấn tối ưu, (iii) ứng dụng độc lập, có thể hoạt động trên bất kỳ cơ sở dữ
liệu hướng đối tượng nào.
Đặc trưng mang tính tùy chọn (Optional): những đặc trưng này mang tính
chất để cải thiện hệ thống, nhưng ko bắt buộc phải có trong hệ thống. Một số đặc
trưng này có tính chất hướng đối tượng như đa kế thừa. Các tính năng khác là tính
năng của cơ sở quan hệ. Tuy nhiện được cải thiện nhằm vào mục đích mới phục
vụ những ứng dụng như CAD/CAM, CASE, văn phòng tự động. Chúng bao gồm
những đặc tính như : đa kế thừa (có thể có nhiều giải pháp để đối phó với vấn đề
giải quyết xung đột); kiểu checking và inferencing (type checking sẽ được thực
hiện trong thời gian biên dịch, số lượng type inferencing được để mở đối với nhà
thiết kế hệ thống), phân tán (đặc tính này trực giao với tính hướng đối tượng của
hệ thống, qua đó hệ thống có thể được phân tán hoặc không), thiết kế transaction
5
(hệ OODB hỗ trợ nhiều kiểu thiết kế transaction dài hoặc lồng nhau), versions
(trong các ứng dụng mới như CAD/CAM và CASE liên quan tới hoạt động thiết
kế và yêu cầu hình thức của versioning)…
Đặc trưng mang tính mở (Open) đặc trưng này liên quan tới vấn đề lập
trình và thể hiện hệ thống. Có rất nhiều sự lựa chọn khi thiết kế để cải thiện mô
hình để xây dựng lên một hệ thống tốt, nó bao gồm các lựa chọn: hệ thống; lập
trình mô hình; thể hiện hệ thống và đồng nhất.
2.3 Quản lý lưu trữu dữ liệu

Việc lưu trữ dữ liệu được sử dụng bởi các kỹ thuật khác nhau như: phân
nhóm dữ liệu, đánh chỉ mục, tối ưu hóa truy vấn, tạo bộ đệm dữ liệu và lựa chọn
đường truy cập. Mỗi đối tượng có một OID duy nhất và được định nghĩa là một
lớp con của một lớp cơ sở, sử dụng tính kế thừa để xác định các thuộc tính. Bản đồ
bộ nhớ ảo được sử dụng cho việc lưu trữ và quản lý các đối tượng. Việc truyền dữ
liệu được thực hiện trên cơ sở mỗi đối tượng hoặc trên cơ sở một trang.
2.4 So sánh cơ sở dữ liệu hướng đối tượng và cơ sở dữ liệu quan hệ
Một đối tượng cơ sở dữ liệu có cấu trúc phức tạp, các mối quan hệ giữa các
dữ liệu là trực tiếp, không liên quan tới các hàng, các cột nhưng trong cơ sở dữ
liệu quan hệ, điều này làm cho chúng phù hợp với các ứng dụng xử lý dữ liệu rất
phức tạp. Đối tượng có nhiều mối quan hệ và được truy cập bằng cách sử dụng
con trỏ. Con trỏ liên kết các đối tượng với nhau để thiết lập các mối quan hệ. Một
điểm mạnh của hệ OODB là nó có thể được lập trình với sự khác biệt về thủ tục
mà không ảnh hưởng đến toàn bộ hệ thống. Điều này rất hữu ích cho những mối
quan hệ dữ liệu không rõ ràng hoặc cần phải thay đổi các mối quan hệ để đáp ứng
các yêu cầu mới.
Điểm mạnh của hệ OODB:
Đối tượng không cần phải khởi tạo và hủy điều này sẽ tiết kiệm thời gian
lập trình và thời gian để xử lý.
Giảm việc phân trang.
Dễ dàng chuyển hướng.
Kiểm soát đồng thời tốt hơn – phân cấp các đối tượng.
Mô hình dữ liệu được dựa trên thế giới thực.
Hoạt động tốt với các kiến trúc phân tán.
Tốn ít công lập trình với các ứng dụng hướng đối tượng.
Điểm yếu của hệ OODB:
Hiệu quả thấp hơn khi dữ liệu đơn giản và các mối quan hệ đơn giản.
Bảng quan hệ đơn giản
Các ràng buộc cuối sẽ làm giảm tốc độ truy cập
6

Có nhiều công cụ cho người sử dụng RDBMS + tiêu chuẩn cho RDBMS ổn
định hơn nên hệ OODB ít có khả năng được yêu cầu sử dụng nếu ứng dụng đó
không đặc thù.
7
Chương 2 Mô hình đối tượng
2.1 Giới thiệu
Mô hình đối tượng là chiến lược tổ chức các hệ thống như là tuyển tập các đối
tượng tương tác, phối hợp với nhau về dữ liệu và các hành vi ứng xử. Trong đó, đối
tượng là thể hiện của một đại diện một lớp. Lớp là một mô tả về một nhóm đối tượng có
những tính chất giống nhau, có cùng mối liên quan với các đối tượng khác và có chung
ngữ nghĩa với hệ thống. Theo đó, các đối tượng thể hiện thông tin về trạng thái của đối
tượng, còn các phương thức được xem như là đặc tính mô tả hành vi của chúng. Thuộc
tính và phương thức của đối tượng là một trong những khái niệm trung tâm của mô hình
cơ sở dữ liệu hướng đối tượng.
Cấu trúc của một mô hình đối tượng, cấu trúc này được hỗ trợ bởi một hệ quản trị
cơ sở dữ liệu hướng đối tương:
Các mô hình nguyên thủy cơ bản là object và literal. Mỗi object thì có một
giá trị định danh duy nhất. Một literal thì không có định danh cụ thể nào.
Object và literal có thể được phân theo kiểu (types). Tất cả các yếu tố của
một type nhất định có chung một trạng thái (cùng properties), chung hành vi (cùng
operations). Một đối tượng thình thoảng được gọi là một thể hiện của type của nó.
Các trạng thái của đối tượng được định nghĩa bởi các giá trị mang trong
một bộ proper-ties. Các tính chất này có thể là thuộc tính của chính nó hoặc thể hiện mối
quan hệ với một hoặc nhiều đối tượng khác. Thông thường, các giá trị này có thể thay đổi
theo thời gian.
Các hành vi của một đối tượng được xác định bởi tập hợp các hoạt động có
thể được thực hiện bởi đối tượng đó.
Một hệ quản trị cơ sở dữ liệu hướng đối tượng lưu trữ các đối tượng, chúng
được sử dụng bởi nhiều người dùng và nhiều ứng dụng khác nhau. Một hệ quản trị cơ sở
dữ liệu hướng đối tượng được xây dựng trên một lược đồ (schema), lược đồ này được

định nghĩa bởi ngôn ngữ định nghĩa đối tượng (object definition language) và có chứa
nhữn thể hiện của các types được định nghĩa trong lược đồ đó.
8
Mô hình đối tượng trong hệ quản trị cơ sở dữ liệu hướng đối tượng cụ thể được
định nghĩa bởi các object, literal, types, thuộc tính, mối quan hệ. Các nhà phát triển ứng
dụng dựa trên hệ quản trị cơ sở dữ liệu hướng đối tượng sử dụng cấu trúc đó để xây dựng
mô hình đối tượng cho các ứng dụng của mình. Mô hình đối tượng của ứng dụng quy
định một type đặc biệt như :Tài liệu, tác giả, nhà xuất bản, chương, và các hoạt động và
tính chất của mỗi type đặc biệt đó. Mô hình đối tượng chứa đựng ngữ nghĩa phong phú
hơn đáng kể so với mô hình quan hệ, bằng cách chỉ ra mối quan hệ và hành vi của đối
tượng một cách rõ ràng.
2.2 Types: Specifications and Implementation
Có hai khía cạnh để định nghĩa một type. Một type có một đặc tả (specification)
bên ngoài và một hoặc nhiều cách triển khai (implementation). Đặc tả bên ngoài của type
sẽ xác định đặc điểm của type. Ngược lại với đặc tả, việc triển khai sẽ được thực hiện bên
trong nội tại của đối tượng. Việc triển khai này đối với type được xác định bởi một ngôn
ngữ cụ thể.
Một đặc tả bên ngoài của một type bao gồm việc miêu tả các hành vi trừu tượng
(abstract), các trường hợp ngoại lệ (exception), các thuộc tính có thể được nhìn thấy bởi
người dùng type đó. Một giao diện (interface) là một đặc tả chỉ có hành vi trừu tượng của
một kiểu đối tượng trừu tượng. Một class là một đặc tả xác định hành vi trừu tượng và
trạng thái trừu tượng của một kiểu đối tượng. Một class là một mở rộng của giao diện với
các thông tin được định nghĩa trong lược đồ hệ quản trị cơ sở dữ liệu hướng đối tượng.
Một literal chỉ xác định trạng thái trừu tượng của kiểu literal. Hình 2.1 mô tả một kiểu
đặc tả.
9
Hình 2.1 Type specifications
Ví dụ về kiểu đặc tả: giao diện Employee chỉ định nghĩa hành vi trừu tượng của
đối tượng Employee. Class Person định nghĩa cả hành vi trừu tượng và trạng thái trừu
tượng của đối tượng Person. Và, một cấu trúc Complex chỉ định nghĩa trạng thái của số

Comple literals. ODL cho phép người dùng tự định nghĩa kiểu literal như collection,
union, enumeration.
inteface Employee {…};
class Person {…};
struct Complex {float re; float im;};
Triển khai của một kiểu đối tượng bao gồm việc tạo ra một đại diện và thiết lập
phương thức cho nó. Một đại diện là một cấu trúc dữ liệu có nguồn gốc là trạng trái trừu
tượng được định nghĩa bởi một ngôn ngữ ràng buộc (language binding): với mỗi thuộc
tính trong trạng thái trừu tượng sẽ có một biến thể hiện phù hợp. Các phương thức bắt
nguồn từ hành vi trừu tượng được định nghĩa bởi ngôn ngữ ràng buộc: mỗi phương thức
được định nghĩa tương ứng với một hành vi trừu tượng của đối tượng. Các phương thức
này thực hiện hành vi bên ngoài có thể nhìn thấy của kiểu đối tượng. Một phương thức có
thể đọc hoặc thay đổi đại diện của một đối tượng hoặc gọi một phương thức trên đối
tượng khác. Cách thực thi này là trong suốt với người sử dụng.
10
2.2.1 Subtyping và kế thừa hành vi
Mô hình đối tượng bao gồm các subtype các mối quan hệ. các mối quan hệ này
thường được thể hiện trong đồ thị, mỗi node là một type, và mỗi cạnh kết nối mỗi type
với nhau gọi là supertype, và một type khác gọi là subtype. Mối quan hệ kiểu subtype đôi
khi được gọi là mối quan hệ is-a hoặc chỉ đơn giản là mối quan hệ ISA. Nó đôi khi cũng
được gọi là mối quan hệ tổng quát hay chuyên môn.
interface Employee {…};
interface Professor: Employee {…};
interface Asociate_Professor : Professor {…};
Trong ví dụ trên thì Asociate_Professor là một subtype của Professor; Professor là một
subtype của Employee. Một thể hiện của subtype là cũng là một thể hiện của supertype.
Vì vậy một thể hiện Asociate_Professor cũng là một thể hiện của Professor, đó là một
trường hợp đặc biệt của Professor.
Một type cụ thể của đối tượng mô tả tất cả các hành vi và tính chất của một thể
hiện của đối tượng đó. Ví dụ, một type cụ thể của đối tượng Associate_Professor là giao

diện Associate_Professor, đối tượng đó mang thông tin từ Professor và các giao diện của
Employee. Một thể hiện của Associate_Professor sẽ mang tất cả các hành vi được định
nghĩa trong giao diện Associate_Professor, giao diện Professor. Một thể hiện của
Associate_Professor có thể được sử dụng thay thể cho một thể hiện của Professor vì nó
được kế thừa từ Professor.
Mô hình đối tượng trong hệ quản trị cơ sở dữ liệu hướng đối tượng hỗ trợ đa kế thừa. vì
vậy, có thể có một kiểu kế thừa các phương thức có cùng tên, nhưng các tham số là khác
nhau, đến từ các giao diện khác nhau.
2.2.2 Kế thừa trạng thái
Ngoài mối quan hệ ISA được định nghĩa trong kế thừa hành vi giữa các kiểu đối
tượng, mô hình đối tượng còn định nghĩa một mối quan hệ khác là Extends giữa các trạng
thái và hành vi của các đối tượng. Mối quan hệ Extends chỉ áp dụng cho kiểu đối tượng,
vì vậy chỉ có các class và không phải kiểu literal mới có thể kế thừa trạng thái. Mối quan
hệ này là mối quan hệ duy nhất giữa hai lớp mà trong đó lớp con thừa hưởng tất cả các
thuộc tính, hành vi của lớp cha.
class Person {
attribute string name;
11
attribute Date birthDate;
};
class EmployeePerson extends Person : Employee {
attribute Date hireDate;
attribute Currency payRate;
relationship Manager boss inverse Manager::subordinates;
};
class ManagerPerson extends EmployeePerson : Manager {
relationship set<Employee> subordinates
inverse Employee::boss;
};
Trong ví dụ trên, mỗi ManagerPerson có một thuộc tính là name, birthDate,

hireDate, payRate, và boss. Lớp EmployeePerson kế thừa hành vi của Employee, các thể
hiện của EmployeePerson và ManagerPerson sẽ mang tất cả các hành vi được định nghĩa
trong Employee.
2.2.3 Keys
Tất cả các thể hiện của một kiểu đối tượng có thể được xác định bởi một giá trị
duy nhất. Những đặc tính được dùng để các định đó được gọi là khóa (keys). Trong mô
hình quan hệ, các đặc tính này được gọi là candidate keys. Một khóa đơn giản có thể chỉ
bao gồm một thuộc tính duy nhất. Một hợp khóa bao gồm một tập hợp các thuộc tính.
2.3 Objects
Một số khía cạnh của đối tượng được xem xét :
Creation: đề cập tới cách thức mà các object được tạo ra bởi người lập trình.
Identifiers: được sử dụng để phân biệt với object khác và thực hiện tìm kiếm đối
tượng.
Names: được chỉ định bởi người lập trình hoặc người dùng cuối, đặt tên cho
object là cách thuận tiện để thao tác với object.
Lifetimes: xác định việc cấp phát bộ nhớ và không gian lưu trữ cho các object
được quản lý
Structure: cấu trúc nội tại của object, có thể bao gồm các object bên trong.
12
2.3.1 Object creation
Đối tượng được tạo ra bằng cách sử dụng toán tử new, việc thực hiện này sẽ tạo
ra một thể hiện của đối tượng đó.
Tất cả các đối tượng sẽ được thừa hưởng các thuộc tính được định nghĩa cho
một đối tượng như sau:
interface Object {
enum Lock_Type{read, write, upgrade};
void lock(in Lock_Type mode) raises(LockNotGranted);
boolean try_lock(in Lock_Type mode);
boolean same_as(in Ob ject anObject);
Object copy();

void delete();
};
Tất cả các xử lý, creation, modification, deletion trên đối tượng hiện thời phải được thực
hiện trong phạm vi của transaction. Nếu các xử lý này nằm ngoài phạm vi thì ngoại lệ
TransactionNotInProgress sẽ được raise lên.
2.3.2 Object identifiers
Tất cả các object đều có identifiers nên mỗi object đều có thể được phân biệt với
các đối tượng khác trong miền lưu trữ (storage domain) của nó. Các đối tượng sẽ lưu trữ
identifer của nó trong suốt thời gian tồn tại của nó và không thay đổi kể cả khi giá trị
thuộc tính hoặc mối quan hệ của nó thay đổi. mỗi identifers được sử dụng như một
phương tiện để tham chiếu tới các đối tượng khác.
Object identifiers được tạo bởi hệ quản trị cơ sở dữ liệu chứ không được tạo bởi
các ứng dụng.
2.3.3 Object names
Một object có thể được gán một hoặc nhiều tên được định nghĩa bởi lập trình
viên hoặc người sử dụng. Hệ quản trị cơ sở dữ liệu sẽ cung cấp chức năng để mapping
tên này với chính xác đối tượng. Các ứng dụng có thể sử dụng tên để truy cập tới đối
tượng một cách thuận tiện hơn.
2.3.4 Object lifetimes
Lifetime xác định việc cấp phát bộ nhớ và không gian lưu trữ cho các object
được quản lý, và được xác định ngay khi đối tượng được tạo.
Hai loại lifetimes được hỗ trợ trong mô hình đối tượng: bền vững (transient) và
tạm thời (persisent) Đối tượng bền vững là đối tượng được lưu trong CSDL và có thể trải
qua nhiều ứng dụng khác nhau. Đối tượng tạm thời là đối tượng chỉ tồn tại trong bộ nhớ
và bị biến mất khi ứng dụng kết thúc. Như thế, đối tượng tạm thời là đối tượng lập trình
thông thường. Một lớp có thể có cả đối tượng bền vững lẫn những đối tượng tạm thời.
2.3.5 Collection objects
Thư viện lớp luôn là thành phần quan trọng của môi trường phát triển phần mềm
hướng đối tượng, trong đó các lớp Collection là quan trọng nhất.
13

Một tuyển tập (Collection objects) là một đối tượng kết nhập từ những đối tượng
khác. Những đối tượng này có thể là đối tượng nguyên thuỷ hoặc lại là tuyển tập nhỏ
hơn.
Các tuyển tập được sử dụng cho nhiều mục đích khác nhau. Ta có thể sử dụng
tuyển tập để thể hiện, cài đặt các quan hệ kết hợp. Một số lớp tuyển tập sau:
Set: tuyển tập không được sắp thứ tự và không lặp lại các đối tượng. Chỉ chèn được một
đối tượng vào Set khi trong đó không có đối tượng đó. Có thể truy cập các đối tượng lặp
lại theo thứ tự bất kỳ.
Bag: tuyển tập không được sắp thứ tự nhưng được phép lặp lại các đối tượng. Có thể
chèn thêm một đối tượng vào Bag. Lấy ra từ Bag một đối tượng là giảm đi một lần xuất
hiện của đối tượng đó. Có thể truy cập đến các đối tượng lặp lại theo thứ tự xác định.
List: tuyển tập được sắp thứ tự và được phép lặp lại các đối tượng. Chèn thêm, lấy ra
một đối tượng từ List được thực hiện ở những vị trí xác định của List. Có thể truy cập
đến các đối tượng lặp lại theo thứ tự xác định.
Array: tuyển tập được chỉ số hoá, được sắp thứ tự và được phép lặp lại các đối tượng.
Khi một đối tượng mảng được tạo lập, tất cả các phần tử của nó là Null. Những phép toán
cơ bản như đọc / ghi đều được thực hiện ở những vị trí được chỉ số hoá của mảng. Kích
thước của mảng là không thay đổi. Các đối tượng của mảng được truy cập lặp lại theo chỉ
số.
Dictionary: tuyển tập không được sắp thứ tự và được phép lặp lại các đối tượng. Từ điển
(Dictionary) khác với những lớp trước đó (Bag) ở chỗ nó cho phép liên kết khoá với mỗi
phần tử. Khoá có thể là một giá trị của con trỏ và kiểu nào đó trong C++. Chèn thêm, lấy
ra một đối tượng từ Dictionary được thực hiện thông qua khoá (key) được gán với các
đối tượng. Có thể truy cập đến các đối tượng lặp lại theo thứ tự bất kỳ.
2.4 Literals
Một số khía cạnh được đề cập tới trong phần này:
Types: bao gồm các miêu tả về các loại Literal chuẩn được hỗ trợ
Copying: đề cập cách thức mà trong đó các literal được sao chép như thế nào
Comparing: đề cập tới cách thức so sánh các literal với nhau
Equivalence: bao gồm các phương pháp xác định hai literal là tương đương nhau.

2.4.1 Literal types
Mô hình đối tượng hỗ trợ các kiểu literal như: atomic literal (literal nguyên thủy),
collection literal (tuyển tập các literal) và tructured literal (literal cấu trúc)
14
Atomic litral: số và ký tự là những ví dụ của atomic literal. Mô hình đối tượng hỗ
trợ các atomic literal như: long, long long, short, unsigned long, unsigned short, float,
double,boolean, octet, char, string, emun.
Collection literal: mô hình đối tượng hỗ trợ các collection literal như: set<T>,
bag<T>, list <T>, array<T>, dictionary<t,v>.
Structured literal: bên cạnh những structure types được hỗ trợ bởi hệ quản trị cơ
sở dữ liệu hướng đối tượng như date, interval, time, timestamp, thì người dùng hoàn toàn
có thể tự mình định nghĩa ra những structure types mới nếu cần. Ví dụ như người dùng
định nghĩa một structure types như sau:
Struct Address {
string dorm_name;
string room_no;
};
attribute Address dorm_address;
2.4.2 Copying literals
Literal không có định danh đối tượng (object identifiers) và không cho phép chia
sẻ đối tượng. Tuy nhiên, literal cho phép sao chép ngữ nghĩa đối tượng. Ví dụ, khi lặp
qua các tuyển tập literal, các bản sao của các thành phần trong đó sẽ được trả về. Tương
tự, khi trả về giá trị của một thuộc tính của literal thì bản sao của nó cũng được trả lại.
2.4.3 Comparing literals
Các literal không có định danh đối tượng, dó đó không thể sử dụng định danh để
so sánh, phân biệt các đối tượng với nhau. Như vậy để so sánh hay phân biệt các literal
thì người ta sử dụng khái niệm tương đương (equivalence). Trong một tuyển tập các
literal thì các thao tác inserting, removing, testing trên các literal sẽ được thực hiện bằng
khái niệm tương đương.
2.4.4 Literal equivalence

Hai literal x và y được gọi là tương đương nhau nếu chúng có cùng kiểu literal và
Cả hai cùng kiểu nguyên thủy và có giá trị giống nhau
Cả hai cùng nằm trong sets, có cùng một tham số t và
15
Nếu t là một kiểu literal, một thành phần của x tương đương với một thành
phần của y và ngược lại.
Nếu t là kiểu Object, cả x và y chứa cùng giá trị định danh.
Cả hai nằm trong bags, có cùng tham số t và
Nếu t là kiểu literal, một thành phần của x sẽ tương đương với một thành
phần của y và ngược lại.
Nếu t là kiểu object, cả x và y chứa cùng một giá trị định danh.
Cả hai nằm trong array hoặc list, có cùng tham số t và mỗi chỉ số i
Nếu t là kiểu literal, x[i] tương đương tới y[i]
Nếu t là kiểu object thì x[i] có cùng định danh với y[i].
2.5 Mô hình dựa trên trạng thái đối tượng (Modeling State - Properties)
Khi định nghĩa một lớp đối tượng ta định nghĩa các properties cho nó để cho
người sử dụng truy cập vào đối tượng. Có hai loại properties được định nghĩa trong mô
hình cơ sở dữ liệu hướng đối tượng là thuộc tính (attribute) và mối quan hệ (relationship).
2.5.1 Attribute
việc khai báo các thuộc tính của lớp Person được thực hiện như sau:
Class Person {
Attribute short age;
Attribute string name;
Attribute enum gender {male, female};
Attribute Address home;
Attribute set<Phone_no> phones;
Attribute Department dept;
}
Với mỗi một thể hiện của Person sẽ có một giá trị cho mỗi atttribute. Giá trị của
thuộc tính dept sẽ là giá trị của một đối tượng của lớp Department. Giá trị của một thuộc

tính sẽ là một literal hoặc một đối tượng. Một thuộc tính không giống như một cấu trúc
16
dữ liệu. Thuộc tính là trừu tượng còn cấu trúc dữ liệu là đại diện cho logic vật lý. Thuộc
tính được định nghĩa trong một giao diện và chỉ có một hành vi trừu tượng cho mỗi thể
hiện của nó
2.5.2 Relationships
Định nghĩa mối quan hệ giữa các đối tượng. Trong mô hình cơ sở dữ liệu hướng
đối tượng dựa theo trạng thái thì chỉ có quan hệ giữa hai đối tượng với nhau. Các kiểu
quan hệ bao gồm 1-1, 1-nhiều, nhiều-nhiều.
Chương 3 Thiết kế cơ sở dữ liệu hướng đối tượng
Để xác định rõ việc thực hiện cơ sở dữ liệu hướng đối tượng, trước hết cần xác
định cách thức thiết kế một hệ thống hướng đối tượng.
Một cơ sở dữ liệu hướng đối tượng được xác định nhờ các thuộc tính và phương
thức. Người ta cũng cần phải xác định sự tương tác giữa các lớp đối tượng. Lớp đối
tượng cũng tương tự như kiểu đối tượng.
Để thiết kế một cơ sở dữ liệu hướng đối tượng, chúng ta cần trải qua các bước sau
đây:
Định nghĩa lược đồ khái niệm: sử dụng ngôn ngữ để biểu diễn các yêu cầu
của người dùng (UML – unified modeling language)
Xây dựng lược đồ được mô tả trong Object definition language. Bước này
sẽ biể diễn các chi tiết thiết kế độc lập với sản phẩm cuối cùng.
Dịch chuyển trực tiếp sang cài đặt cuối cùng trong một hệ quản trị cơ sở dữ
liệu hướng đối tượng xác định.
Quá trình thiết kế một lược đồ cơ sở dữ liệu hướng đối tượng được biểu diễn dưới
đây:
17
Thiết kế khái niệm sử
dụng kí pháp UML
Thiết kế chuẩn ODL
Thiết kế cài đặt.

Hệ QTCSDL HĐT
3.1 Thiết kế khái niệm (UML)
Sử dụng các ký pháp UML để biểu diễn các lớp, các đối tượng, các mối quan hệ
giữa các lớp, giữa các đối tượng. Ví dụ như biểu diễn đối tượng và lớp như hình dưới.
3.2 Thiết kế lược đồ tiêu chuẩn
Thiết kế lược đồ tiêu chuẩn là chuyển một lược đồ khái niệm biểu thị trong ký
pháp UML sang một lược đồ OOMG(object database management group). OOMG đề
xuất một cơ sở dữ liệu tiêu chuẩn với mục tiêu thống nhất mô hình đối tượng hạt nhân
của nhiều hệ quản trị cơ sở dữ liệu hướng đối tượng khác nhau. Một số chuẩn được
OOMG đưa ra đó là:
Mô hình đối tượng
Ngôn ngữ định nghĩa đối tượng
Ngôn ngữ truy vấn đối tượng
18
Ràng buộc ngôn ngữ (ví dụ C++, java, smalltalk)
Quá trình chuyển đổi từ lược đồ khái niệm sang lược đồ OOMG bao gồm những
công việc sau:
Xác định các đối tượng bền vững. Quyết định xem những đối tượng nào
cần phải lưu trữ trong CSDL và khai báo chúng cho thích hợp.
Cài đặt các miền (domains). Miền là tên của một tập các giá trị cho một
thuộc tính. Thực hiện ánh xạ các miền sang các câu lệnh khai báo kiểu của C++
sau đó viết các hàm thao tác trên các miền đó. Thông thường các khai báo kiểu
được tổ chức thành các tệp đầu (header file) để sau đó bổ sung vào những tệp
chương trình nào đó cần tham chiếu đến miền đó.
Cài đặt các lớp và các quan hệ kết hợp. Khai báo các lớp và những quan hệ
kết hợp phát triển trong mô hình. Khai báo lớp là khai báo tất cả các thuộc tính và
các hàm thành phần của lớp.
Thiết lập chỉ số. Tạo ra chỉ số cho những thuộc tính đơn nhằm giảm thiểu
tắc nghẽn cổ chai trong truy cập dữ liệu.
Định nghĩa qui mô (extent). Qui mô chúng ta hiểu ở đây là tập các đối

tượng của một lớp.
Dịch kiểu của đối tượng : mỗi lớp bền vững được dịch thành một lớp ODL,
mỗi giao diện được dịch thành một giao diện ODL, mỗi thuộc tính được dịch sang một
thuộc tính, nếu thuộc tính là đa trị thì được dịch sang một kiểu tuyển tập (collection)
Xác đinh các mối liên kết : các mối liên kết được định nghĩa là các mối
quan hệ trong ODL, số bội (multiplicity) biểu diễn có bao nhiêu đối tượng của một lớp có
thể được kết hợp với một đối tượng xác định của lớp có liên quan. Trong Object database
số bội cực đại hỗ trợ định nghĩa mối quan hệ. Nếu số bội cực đại lớn hơn 1 thì mối quan
hệ được định nghĩa bởi kiểu collection.
Tổng quát hóa : sự tổng quát hóa được hiểu ngầm định trong UML là tổng quát
hóa rời rạc, không đầy đủ và được hỗ trợ trực tiếp trong mô hình dữ liệu Object database
thông qua mối quan hệ Extend
Gộp nhập:Đây là kỹ thuật liên kết các đối tượng với nhau để tạo lên một lớp mới:
lớp gộp. Chẳng hạn cơ sở dữ liệu ngân hàng gồm có khách hàng, tài khoản, chi nhánh và
các mối quan hệ giữa chúng. Khi thực hiện cơ sở dữ liệu quan hệ, người ta tạo ra các
quan hệ tách biệt với mỗi thực thể và dùng khái niệm khóa ngoại để thể hiện mối quan hệ
đó.
Tuy nhiên trong cơ sở dữ liệu hướng đối tượng, người ta giải quyết vấn đề này
nhờ một lớp đối tượng gộp. Lớp đăng ký sẽ được tạo ra, liên kết các đối tượng kiểu
khách hàng, kiểu tài khoản, kiểu chi nhánh lại với nhau. Mỗi đối tượng đăng ký sẽ liên
19
kết với một khách hàng với một tài khoản, một chi nhánh và có một thuộc tính đặc biết là
thời gian thực thiện việc đăng ký này.
3.3 Xây dựng cơ sở dữ liệu hướng đối tượng
Một số điều liên quan đến lược đồ CSDL hướng đối tượng xuất hiện khi phân lớ p
đối tượng,tổng quát hóa, gộp nhập. Các vấn đề này xảy ra song song. Người ta không
trình bày quá trình chuyển từ lược khái niệm sang lược đồ đối tượng bởi lẽ không có
điểm tương tự giữa một bên là thực thể và mối quan hệ, một bên là lớp đối tượng. Hơn
nữa, lược khái niệm hầu như hướng dữ liệu chứ không cho biết về hành vi của thực thể
khi dựa vào hạng của quan hệ mà thực thể tham gia.

Việc chuyển hóa mô hình đối tượng ngữ nghĩa sang CSDL hướng đối tượng được
thực hiện như sau:
Đối với mỗi đối tượng ngữ nghĩa, người ta tạo một lớp đối tượng.
Khi có quan hệ cha con giữa hai đối tượng ngữ nghĩa, người ta thực hiện
liên kết thừa kế giữa lớp đối tượng thể hiện kiểu con và lớp đối tượng thể hiện
kiểu cha.
Tiến hành gộp và liên kết các đối tượng ngữ nghĩa về kiểu đối tượng để
được các lớp đối tượng gộp.
Giữ tính toàn vẹn về hạng giữa các đối tượng ngữ nghĩa, duy trì việc hợp
nhóm của các đối tượng ngữ nghĩa và phân rã kiểu con bằng các phương thức.
Vòng đời phát triển hướng đối tượng gồm ba pha:
Pha phân tích: người ta phát triển mô hình ứng dụng trên thế giới thực, chỉ
ra các thuộc tính quan trọng. Cần xác định các khái niệm trừu tượng về mô hình
xuất phát từ lĩnh vực ứng dụng và các mô tả về hệ thống. Người ta xác định các
hành vi chức năng của hệ thống, độc lập với môi trường sẽ thực hiện hướng đối
tượng.
Pha thiết kế : Cho phép xác định cách thức sẽ thực hiện mô hình phân tích
hướng đối tượng.
Pha thực hiện: Người ta xác định và khảo sát tất cả các kết quả của việc
thực hiện thiết kế .Tất cả các quyết định thiết kế chiến lược, như là cách thức tích
hợp hệ quản trị CSDL,cách liên lạc giữa các đối tượng, cách xử lý sai sót… đều
được triển khai. Tiếp theo người ta tích hợp các quyết định này vào mô hình thiết
20
kế ban đầu, rồi hình thức hóa mô hình thiết kế để các đối tượng có thể tương tác
với các đối tượng khác theo các kịch bản.
21

×