You are on page 1of 61

Chương 3

CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG


Nội dung

q Một số khái niệm cơ bản


q Các mô hình dữ liệu: CSDL hướng đối tượng
(CSDLHĐT)
q Các hệ quản trị CSDLHĐT

2
Một số khái niệm cơ bản
ODMG(Object Database Management Group)
- Nhóm phát triển DBMS OO
- Thành lập năm 1991 để định nghĩa các chuẩn CSDL đối
tượng.
- Xuất bản “The ODMG-93 standard” một chuẩn về csdl
đối tượng.
- Được công nhận thành chuẩn bởi ANSI,OMG,…
- Cải tiến và nâng cấp phiên bản ODMG năm
1995,1997(2.0 hỗ trợ Java) và 1999(3.0)
- Các ngôn ngữ CSDL HDT: ODL, OQL
Một số khái niệm cơ bản
Ngôn ngữ mô tả và truy vấn CSDL Hướng đối
tượng theo chuẩn ODMG
- Mô hình đối tượng
- Ngôn ngữ khai báo lược đồ: ODL(Object Define
Language)
- Ngôn ngữ truy vấn đối tượng: OQL (Object Query
Language)
OODM, OODB, OODBMS
OODM (Object-Oriented Data Model): Một mô
hình dữ liệu mà ngữ nghĩa của các đối tượng được
hỗ trợ cho lập trình hướng đối tượng.
OODB (Object-Oriented DataBase): Một tập hợp
bền vững và có khả năng chia sẻ của các đối
tượng được định nghĩa bởi OODM.
OODBMS (Object-Oriented DataBase Management
System): quản lý một OODB
OODM- Mô hình hoá các đối tượng
Đối tượng (Object): Bộ sưu tập các yếu tố DL có
cấu trúc, được đồng nhất bởi một dẫn trỏ (tham
chiếu) duy nhất
Mọi đối tượng đều được đặc trưng bằng một tên duy
nhất, gọi là OID (Object Indentifier)
Hai đối tượng là đồng nhất (O1==O2) nếu chúng có
cùng OID
Hai đối tượng là bằng nhau (O1=O2) nếu chúng có cùng
giá trị
Các đối tượng đặc trưng bởi các tính chất
OODM- Mô hình hoá các đối tượng

Tính chất (Property): đặc trưng của một đối tượng


được chỉ định bằng một tên có thể ứng với một thuộc
tính,một hàm hay một đối tượng con thành phần
Ví dụ:
Thuộc tính đơn: tên của một người,...
Hàm: Hàm tuổi (của một người),...
Thuộc tính kép: các con của một người,...
OODM- Mô hình hoá các đối tượng

Lớp: nhóm các đối tượng có cùng tính chất, được


đặc trưng bởi một cấu trúc và tập các phép
toán tác dụng lên các đối tượng của lớp bằng cách
che dấu cấu trúc

Việc đặc tả tiến triển của các lớp đối tượng làm
thành một CSDL hướng đối tượng, cho phép mô
hình hoá hành vi chung của các đối tượng một
cách đơn thể và mở rộng được.
OODM- Mô hình hoá các đối tượng

Phương pháp: thao tác liên kết với một lớp, xử lý


hay đưa trả lại trạng thái của một đối tượng hay
một phần của đối tượng thuộc lớp
Một đối tượng được thao tác bởi phương pháp của lớp
và được thấy qua các phương pháp: nguyên lý bọc kín
Phương pháp có thể áp dụng được cho nhiều đối tượng
thuộc các lớp khác nhau: đa lớp dùng để mô hình
hoá các mối liên kết giữa các lớp
OODM- Mô hình hoá các đối tượng

Ví dụ:
class cửa
public: {các thuộc tính thấy được từ bên ngoài lớp}
trạng thái: mở, đóng
chiều cao: real {kiểu thực}
chiều rộng: real
chiều dầy: real
private:
trục: vectơ
góc: real
public operation: {các phương pháp}
mở(lực: real) ... end;
đóng ... end;
OODM- Mô hình hoá các đối tượng

Thông báo: các đối tượng trao đổi (giao lưu


thông tin) với nhau bằng thông báo.
- Thông báo gồm tên của một phương pháp và các tham
số của nó
- Khối tham số cho phép bằng việc gửi đi dẫn gọi một phương
pháp công cộng của một đối tượng
- Đối tượng phản ứng lại một thông báo bằng cách thực
hiện phương pháp liên kết và đưa trả về các tham số kết quả của
phương pháp.
Một CSDL đối tượng xuất hiện như một tập các đối tượng
sống trao đổi với nhau bằng các thông báo
OODM- Các liên kết ngữ nghĩa giữa các lớp
Sự tổng quát hoá: liên kết phân cấp giữa hai lớp xác
định rằng các đối tượng của lớp trên tổng quát hơn các
đối tượng của lớp dưới, các đối tượng của lớp dưới có
các tính chất đầy đủ và tinh tế hơn
OODM- Các liên kết ngữ nghĩa giữa các lớp
Tính kế thừa: sự truyền tính chất của một lớp
tới lớp con của nó
Mọi phần tử của lớp con kế thừa các tính
chất của lớp trên
Một số tính chất của lớp con có thể được làm
tinh tế hơn định nghĩa lại
Ví dụ: thuộc tính “Nơi làm việc” của lớp “Con người”
có thể được định nghĩa lại với giá trị null ở mức
của lớp “Người thất nghiệp”
OODM- Các liên kết ngữ nghĩa giữa các lớp
Tính kế thừa bội: cho phép một lớp có nhiều
lớp trên trực tiếp
Lớp con kế thừa các tính chất và phương
pháp của các lớp trên
Có thể xảy ra và cần được giải quyết những
xung đột về tên các tính chất hay phương
pháp
OODM- Các liên kết ngữ nghĩa giữa các lớp

Ví dụ về kế thừa bội

* Tam giác

*Tam giác vuông *Tam giác cân -


- diện tích diện tích

* Tam giác vuông cân


- diện tích {tính kế thừa hai hàm tính diện tích
cần được phân biệt}
OODM- Các liên kết ngữ nghĩa giữa các lớp
Các mô hình đối tượng thường phân biệt các tính
chất được phân chia bởi nhiều lớp và nhóm hợp
chúng trong những lớp đặc biệt gọi là các mối liên
kết
Mối liên kết là liên hệ cấu trúc cho phép liên kết các
lớp đối tượng với nhau bằng các tính chất phân chia
Ví dụ: “Người” và “Sách” là hai lớp gộp một số tính
chất (Tên, ..., Tên sách,... ), thì có thể định nghĩa
mối liên kết Tác giả của như sau:
Người → Tác giả của → Sách
OODM- Các nguyên lý chính áp dụng cho CSDLHĐT

• Đa hình (Polymorphism)
– Đa hình là khái niệm rất mạnh của toán học: một thông điệp (lời gọi
hàm) có nhiều nội dung thực hiện khác nhau, mỗi đối tượng nhận
được sẽ thực hiện theo ngữ cảnh riêng của mình.
– Khái niệm này liên quan chặt chẽ với khái niệm kế thừa đã nêu. Các
phương thức của các lớp dẫn xuất (lớp kế thừa) có thể định nghĩa lại
(viết đè – Overriding) những phương thức của lớp cha.
– Trong một lớp, có thể có những phương thức cùng tên (name)
nhưng cho phép định nghĩa nhiều nội dung thực hiện khác nhau theo
cơ chế nạp chồng (Overloading).
– Để thực hiện được những khái niệm trên thì ngôn ngữ lập trình phải
hỗ trợ liên kết động, hay còn được gọi là liên kết muộn (Dynamic
Binding).
OODM- Các nguyên lý chính áp dụng cho CSDLHĐT

Các nguyên lý chính áp dụng cho CSDLĐT

Shape
n Đa hình (Polymorphism)
q Nạp chồng (Overloading) paint()
q Viết đè (Overriding)

Rectangle

paint()
paint(Point x)
OODM- Các nguyên lý chính áp dụng cho CSDLHĐT

Các nguyên lý chính áp dụng cho CSDLĐT


• Quan hệ kết tập (Aggregation)
– Ngoài quan hệ kết hợp (Association) phổ biến giữa các thực thể trong các mô
hình dữ liệu, hướng đối tượng hỗ trợ để thể hiện được cả quan hệ kết tập mô tả
về mối quan hệ bộ phận – tổng thể.
– Các đối tượng hợp thành có thể được xây dựng như là bộ chứa (Container) bao
gồm một số các đối tượng khác.
– Có hai loại quan hệ kết tập:
1. Kết tập thông thường (Normal Aggregation)
2. Kết tập chia sẻ (Shared Aggregation)
OODM- Các nguyên lý chính áp dụng cho CSDLHĐT

HamDoi 3..5 TauChien

Kết tập thông thường

DeTai 0..2 3..10 CanBo

Kết tập chia sẻ


OODM- Tổ chức các nhóm đối tượng
Tác tử xây (constructor): lớp cấu trúc, cho phép áp
đặt một cấu trúc lên một tập đối tượng và định nghĩa
các tính chất cấu trúc đa trị
Các tác tử xây:
bộ (tuple): cho phép nhóm gộp các thuộc tính (tích Đề các)
tập (set): cho phép định nghĩa các nhóm không sắp thứ tự, không chứa
các phần tử giống nhau
túi (bag): các tập không sắp thứ tự, có các phần tủ giống
nhau
danh sách (list): cho phép định nghĩa các nhóm có thứ tự,
được phép có các phần tử giống nhau
bảng (table): các nhóm có thứ tự và có chỉ số
OODM- Tổ chức các nhóm đối tượng
Một nhóm đối tượng kế thừa các tính chất
của tác tử xây nếu có tác tử xây đứng trước
Ví dụ có thể quản lý dễ dàng các danh sách
các bảng sau:
class câu
nội dung: list array char;
class văn-bản
đoạn : list câu
OODM- Lược đồ
Có thể mô tả một CSDL đối tượng. Mô tả của
nó phát sinh một lược đồ bao gồm:
Mô tả các lớp. Mỗi lớp bao gồm các tính chất
(tuỳ theo tình hình được tổ chức thành các
nhóm bởi các toán tử xây) và các phương pháp.
Mô tả các mối liên kết giữa các lớp.
OODM- Ngôn ngữ mô tả và truy vấn CSDL
Ngôn ngữ mô tả và truy vấn CSDL Hướng
đối tượng theo chuẩn ODMG
- Ngôn ngữ khai báo lược đồ: ODL(Object Define
Language)
- Ngôn ngữ truy vấn đối tượng: OQL (Object
Query Language)

24
Ngôn ngữ khai báo lược đồ- ODL
Từ khóa khai báo lớp/giao diện:
- Lớp: Class
- Giao diện: Interface
Giao diện:

Interface <tên giao diện>[:<tên lớp cha|tên giao diện>]


{
[<đặc trưng>]
<thao tác>
};

Lưu ý: Có thể khai báo đặc trưng trong giao diện nhưng đặc
trưng không được lưu trữ trong giao diện mà chỉ được lưu trữ
thật sự trong lớp
Ngôn ngữ khai báo lược đồ- ODL(tt)

Lớp:
Ngôn ngữ khai báo lược đồ- ODL(tt)

Lưu ý: Đối với lớp, phải khai báo quan hệ thừa kế


EXTENDS trước, khai báo quan hệ kế thừa ISA
sau.
Đặc trưng:
- Đặc trưng bao gồm các thuộc tính và các mối quan hệ.
- Thứ tự khai báo thuộc tính và mối quan hệ không quan
trọng.
- Tuy nhiên nên khai báo theo thứ tự: thuộc tính trước,
quan hệ sau
- Khai báo thuộc tính:

[readonly] attribute <tên miền giá trị> <tên thuộc tính>


Ngôn ngữ khai báo lược đồ- ODL(tt)
- Khai báo mối quan hệ

Phải có đủ cặp relationship và inverse để xác định cả hai


chiều của một quan hệ(quan hệ chiều xuôi và chiều ngược)
Dùng từ khóa Realationship để khai báo quan hệ chiều xuôi.
∗ Quan hệ 1:1 theo chiều xuôi: không dùng từ khóa set,bag, list hay
array.
∗ Quan hệ 1:n theo chiều xuôi phải khai báo rõ là set, bag, list hay array
Từ khóa inverse chỉ dùng để cho biết quan hệ chiều ngược.
Ngôn ngữ khai báo lược đồ- ODL(tt)

Phân biệt set, bag, list và array


- Set: các đối tượng thuộc lớp không được trùng, không
có thứ tự.
- Bag: các đối tượng thuộc lớp được phép trùng, không
có thứ tự.
- List: các đối tượng thuộc lớp được sắp xếp theo thứ tự,
truy xuất tuần tự.
- Array: các đối tượng thuộc lớp được sắp xếp theo thứ
tự, truy xuất ngẫu nhiên.
Ngôn ngữ khai báo lược đồ- ODL(tt)

Ví dụ: Định nghĩa cho class LUONG

Vì lớp LUONG chỉ gồm thông tin thuộc tính, không


có thông tin về quan hệ ngữ nghĩa. Đây là phần lớn
thông tin trong đối tượng NV được tách ra thành lớp
riêng nên không đặc tên cho tập đối tượng.
Ngôn ngữ khai báo lược đồ- ODL(tt)

Ví dụ định nghĩa cho lớp NV


Ngôn ngữ khai báo lược đồ- ODL(tt)

Ví dụ: định nghĩa cho lớp TG


Class TG EXTENDS NV : GD_SV
{
relationship <LỚP_HỌC> Phụ_giảng
inverse <LỚP_HỌC> :: có_tg_là;
attribute string ho_ten;
attribute short ma_so;
attribute struct dia_ch;
relationship set <LỚP_HỌC> đăng_ký_dự
inverse <LỚP_HỌC> :: có_sv_đk;
….
};
Ngôn ngữ khai báo lược đồ- ODL(tt)

Nhận xét:
- Nếu không khai báo tên tập đối tượng thuộc lớp TG(khai
báo với từ khóa extent) thì các đối tượng này sẽ được
lưu trữ chung với đối tượng NV.
- Nếu khai báo tên tập đối tượng thuộc lớp TG thì các đối
tượng này sẽ được lưu trữ riêng
Ngôn ngữ khai báo lược đồ- ODL(tt)

Ví dụ: định nghĩa cho lớp MÔN


Ngôn ngữ truy vấn đối tượng- OQL

Nguyên tắc:
- Mô hình đối tượng của ODMG
- Mở rộng SQL2(SQL92): khái niệm về đối tượng phức,
OID(Object ID), biểu thức đường dẫn, tính đa xạ, kích
hoạt thao tác, kết buộc động.
- Thủ tục cơ sở: set, bag, list, array
- Ngôn ngữ hàm: ngôn ngữ thủ tục.
Một số đặc điểm cần chú ý:
- Đầu vào một câu truy vấn:
Tên một đối tượng
Tên một lớp đối tượng
Tên thuộc tính
Ngôn ngữ truy vấn đối tượng-OQL(tt)

Tên đường dẫn/chuỗi đường dẫn


- Kết quả một câu truy vấn:
Một đối tượng
Một tập các đối tượng: set, bag, list, array
Một tập literal
Một literal cụ thể
- Biểu thức đường dẫn
Giả sử qui ước: c: đối tượng; C: lớp; A: thuộc tính của lớp C,
r: tên mối quan hệ; p: tên thao tác.
Cách truy xuất:
∗ c.A: một đường dẫn
∗ c.r: một đối tượng hay một tập đối tượng thuộc lớp có quan hệ với c
∗ c.p(…): thực hiện thao tác p, kết quả trả về là kết quả của thao tác
Ngôn ngữ truy vấn đối tượng-OQL(tt)

Ví dụ:
Ngôn ngữ truy vấn đối tượng-OQL(tt)

- Cấu trúc câu truy vấn đầy đủ:

Select [distinct] <ds_thuộc_tính>


From TV [as tên_biến]
[Where TV]
[Group by <ds_thuộc_tính>]
[Order by TV [asc|desc] ]
Ngôn ngữ truy vấn đối tượng-OQL(tt)
Ngôn ngữ truy vấn đối tượng-OQL(tt)
Ngôn ngữ truy vấn đối tượng-OQL(tt)
Ngôn ngữ truy vấn đối tượng-OQL(tt)
Ngôn ngữ truy vấn đối tượng-OQL(tt)
THIẾT KẾ OODB

44
Phân tích, thiết kế CSDL với UML
Quá trình thiết kế CSDL có thể thực hiện theo ba bước:
1. Thiết kế mô hình (sơ đồ) khái niệm,
2. Thiết kế sơ đồ CSDL chuẩn,
3. Cài đặt CSDL ứng dụng: chọn ngôn ngữ và hệ quản trị CSDL
hướng đối tượng thích hợp

Thiết kế Chuẩn hoá


sơ đồ khái niệm sơ đồ
UML ODL

Cài đặt
ứng dụng
OODBMS
Phân tích, thiết kế CSDL với UML
Thiết kế mô hình khái niệm – biểu đồ lớp (Class Diagram)
• Biểu đồ lớp mô tả cấu trúc tĩnh, mô tả mô hình khái niệm bao gồm các
lớp đối tượng và các mối quan hệ của chúng trong hệ thống hướng đối
tượng.
• Phân tích các yêu cầu của bài toán ứng dụng để xác định các lớp đối
tượng, mối quan hệ của chúng để xây dựng biểu đồ lớp.

Kế thừa

Lớp

Hàm Bao gói Quan hệ Cá thể

Đối tượng

Thông điệp

Đa xạ

Những khái niệm cơ bản của phương pháp hướng đối tượng
Ví dụ: Biểu đồ lớp của hệ thống bán hàng

Ghi-nhận-hàng-bán
0..1
Được-mô-tả-bởi 4
DongBanHang
1
Chứa
1..* DanhMucMatHang MoTaMatHang
1 1..*

Chứa-trong 1 Được-sử-dụng-trong 1
Mô-tả

* * 1
Có 1
1 CuaHang 1 * MatHang

Quản-lý
1 1
1..* Có
1..*
PhienBanHang Được-quản-lý-bởi
Thực-hiện
1 1
HBH NguoiQL
1 1 1
1 1 Được-thực-hiện-bởi
Được-trả 1
Được-khởi-động-bởi Ghi-nhận-bán-hàn

1 1
1
ThanhToan KhachHang NguoiBan
1

47
Thiết kế sơ đồ CSDL chuẩn
• Một đặc tính quan trọng của CSDL HĐT là các đối tượng được lưu lại
sau khi chương trình kết thúc.
• Những đối tượng được tự động lưu vào CSDL được gọi là đối tượng
bền vững, những đối tượng không được lưu lại gọi là đối tượng tạm
thời.

Đối tượng A

CSDL HĐT

Đối tượng B

Đối tượng C

Đối tượng A, C là bền vững còn B là tạm thời.

48
Thiết kế sơ đồ CSDLĐT chuẩn
Chuyển đổi các kiểu đối tượng
• Mỗi lớp bền vững trong UML phải được chuyển đổi sang lớp trong
ODL (Object Definition Language) thể hiện được cả hành vi trừu
tượng lẫn các trạng thái trừu tượng.
Việc đọc dữ liệu trong CSDL HĐT được thực hiện như sau:
• Các đối tượng trong CSDL HĐT được lưu trữ và có mối quan hệ với nhau
thông qua định danh ID.
• Một đối tượng có thể tham chiếu tới nhiều ID đối tượng, nghĩa là mối
quan hệ giữa các đối tượng có dạng tổng quát là n:m.
• Mối quan hệ tham chiếu giữa các đối tượng được hệ QT CSDL HĐT thiết
lập.
Thiết kế sơ đồ CSDL chuẩn

• Chuyển đổi các lớp đối tượng bền vững sang lớp của ODL

class CuaHang {
attribute String(30) tenGoi;
CuaHang
attribute struct Adress {
char(3) soPho, char(20) tenPho,
diaChi: Address char(15) tinhThanh
tenGoi: String
};
void CuaHang(); // Constructor
addSale()
void ~ CuaHang(); // Destructor
void addSale(){ // Bổ sung
};
}
Thiết kế sơ đồ CSDL chuẩn
• Chuyển đổi các quan hệ kết hợp: Quan hệ kết hợp nhị nguyên được chuyển
sang mối quan hệ liên kết relationship trong ODL.

PhienBanHang
HBH
ngayBan: Date
hangTruong: String 1 *
gioBan: Time
enterItems() ghiNhan
endSale() banHang becomeComplete()
makePayment() makeLineItem()
makePayment()
total()
Thiết kế sơ đồ CSDL chuẩn

class HBH
{
attribute String(25) hangTruong;
attribute String(15) tenTruong;
relationship PhienBanHang ghiNhan
inverse banHang::PhienBanHang;
void HBH();
void ~HBH();
void enterItems(){…}
void endSale(){…}
};
Thiết kế sơ đồ CSDL chuẩn

class PhienBanHang {
attribute Date ngayBan;
attribute Time gioBan;
relationship Set<PhienBanHang> banHang
inverse ghiNhan::HBH;
void PhienBanHang();
void ~PhienBanHang();
Boolean becomeComplete(){…}
void makeLineItem()
makePayment(){…}
Number total(){…}
};
Thiết kế sơ đồ CSDL chuẩn

• Chuyển đổi các quan hệ kế thừa: Quan hệ kết hợp nhị nguyên được chuyển
sang mối quan hệ liên kết relationship trong ODL.

ThanhToan

class ThanhToanTM extends ThanhToan


(extent ThanhToanTM Key number)
{

};
class ThanhToanThe extends ThanhToan
{
ThanhToanTM ThanhToanThe …
};
Thiết kế sơ đồ CSDL chuẩn

• Chuyển đổi các quan hệ kết tập: Quan hệ kết tập giữa bộ phận và tổng
thể (part-whole aggregation). Quan hệ này thể hiện như là lớp cấu trúc
gồm hầu như là hai lớp khác nhau.
class PhienBanHang {
PhienBanHang attribute Date ngayBan;
attribute Time gioBan;
ngayBan: Date attribute List<DongBanHang> gomCo;
gioBan: Time Boolean becomeComplete(){…}
void makeLineItem()
becomeComplete() void makePayment(){…}
makeLineItem() Number total(){…}
makePayment() PhienBanHang();
total() ~PhienBanHang();
};
gomCo class DongBanHang {
1..* attribute Integer soLuong;
Number subtotal(){…}
DongBanHang };
soLuong: Int
subtotal()
Một số tính chất của CSDLHĐT

• Tính nhất quán kiểu dữ liệu của hệ thống


hướng đối tượng
• Chuẩn hóa đối tượng: Phụ thuộc đối tượng
theo đường dẫn và các dạng chuẩn đối
tượng
• Các mẫu thiết kế (Design Pattern) dựa trên
mã nguồn mở (Open Sourrce)
OODBMS- Hệ quản trị cơ sở dữ
liệu hướng đối tượng

57
OODBMS
- Tích hợp các tính năng của DB với các tính năng
của ngôn ngữ lập trình đối tượng Hệ QT CSDL
HĐT (ODBMS)
- Một ODBMS làm cho các đối tượng DB xuất hiện

như các đối tượng trong ngôn ngữ lập trình.


- ODBMS mở rộng ngôn ngữ lập trình đối tượng với

các đặc điểm: dữ liệu bền vững, điều khiển tương


tranh, phục hồi dữ liệu, truy vấn kết hợp, và các
tính năng DB khác.
OODBMS
Một OODBMS phải:
- Cung cấp đầy đủ các chức năng DB
- Hỗ trợ tính đồng nhất đối tượng

- Cung cấp tính bao bọc dữ liệu

- Hỗ trợ các đối tượng với các trạng thái phức tạp

O-O = ADT + kế thừa + đồng nhất đối tượng


O-O DBMS = O-O + các tính năng của DB
OODBMS
Một số OODBMS phổ biến:
Gemstone (Gemstone System Inc., Servio Logic
Corporation)
Itasca (Itasca System Inc.)
Objectivity/DB (Objectivity Inc.)
ObjectStore (Object Design Inc.)
Ontos (Ontos Inc.)
O2 (O2 Technology)
Poet (Poet Software Corporation)
Versant (Versant Object Technology)
OODBMS
Ngôn ngữ lập trình bền vững: là một ngôn ngữ
cung cấp cho nsd khả năng “bảo toàn dữ liệu”
khi một chương trình thực hiện thành công, và
thậm chí cho phép dữ liệu đó được sử dụng
bởi nhiều chương trình khác nhau.
Ngôn ngữ lập trình DB: là ngôn ngữ tích hợp
một số ý tưởng của mô hình lập trình DB với
đặc trưng của ngôn ngữ lập trình truyền thống

You might also like