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

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 (2.88 MB, 77 trang )

Phương Đông ICT – Nơi tụ hội của những người yêu công nghệ



cL c
Ch

ng 1.

Ch

ng 2.

u .................................................................................................3
CSDL H

ng

iT

ng

ng Và H Qu n Tr ObjectStore PSE Pro .....5

2.1.

C S D Li u H

iT

ng.......................................................................... 5



2.2.

Các Khái Ni m C B n Trong CSDL H

ng

iT

ng ....................................... 6

2.2.1.

it

ng (Object).......................................................................................... 6

2.2.2.

nh danh

it

ng (Object Identifier) .......................................................... 6

2.2.3.

Thu c tính

it


ng (Attribute) ..................................................................... 7

2.2.4.

Tr ng thái

it

ng (State) ............................................................................ 7

2.2.5.

Hành vi

2.2.6.

L p

it

it

ng (Behaviour)........................................................................ 8

ng (Class) ..................................................................................... 8

2.2.7.

óng gói d li u (Data Encapsulation)............................................................ 9


2.2.8.

Th a k (Inheritance)...................................................................................... 9

2.2.9.

a hình (Polymorphism)............................................................................... 11

2.3.

Chu n CSDL H

2.3.1.

it

ng

iT

ng ODMG.............................................................. 12

ng và Literal...................................................................................... 12

2.3.2.

Giao di n l p

2.3.3.


T p Ch a ...................................................................................................... 15

2.3.4.
2.3.5.
2.4.

Ch

it

it

ng nguyên t ..................................................................................... 16

T p ch a lâu b n và khoá

H Qu n Tr CSDL H

ng 3.

ng ................................................................................ 13

it

ng

iT

Xây D ng CSDL H


ng

3.1.

nh Ngh a Các

3.2.

Thi t K CSDL H

iT
ng
it

ng.............................................................. 18
ng ObjectStore PSE Pro................................ 18

iT

ng .................................................20

ng Trong CSDL B ng ODL........................................... 20
iT

ng B ng ObjectStore Database Designer............. 23

3.2.1.

Thi t k các


ng.................................................................................. 23

3.2.2.

Thi t k các Quan h ..................................................................................... 26


Khoá lu n T t nghi p

3.3.

Cài

ih c

H Công Ngh - HQGHN

t C S D Li u H

ng

ng........................................................... 32

3.3.1.

Sinh mã các l p

3.3.2.


Giao di n các l p

it

ng trong CSDL ...................................................... 35

3.3.3.

N i dung các l p

it

ng........................................................................... 40

3.3.4.

Các ki u quan h trong ObjectStore .............................................................. 43

3.3.5.

M t s T khoá và Ph

3.3.6.

Cài

3.3.7.

Biên d ch CSDL............................................................................................ 47


Ch

ng 4.

4.1.

Cài

it

iT

t n i dung ph

Cài

ng trong CSDL......................................................... 32

ng th c m r ng cho CSDL .................................... 45
ng th c c a các l p

t Và Th c Thi Ch

t Ch

ng Trình

ng Trình

it


ng..................................... 46

ng D ng CSDL ...................49

ng D ng CSDL .............................................................. 49

4.1.1.

T o giao di n ch

4.1.2.

Khai báo các bi n truy xu t CSDL ................................................................ 50

4.1.3.

T o và m m t CSDL................................................................................... 51

4.1.4.

Thi t l p các giao tác trong CSDL ................................................................ 52

4.1.5.

T o

4.1.6.

Th c thi các hành vi


4.1.7.

Thi t l p các quan h trong CSDL ................................................................ 55

4.1.8.

C p nh t và Xoá m t

4.2.

it

Th c Thi Ch

ng trình ng d ng............................................................ 50

ng và thi t l p các d li u thành viên .......................................... 52

ng Trình

Menu ch

4.2.2.

Qu n lý các

4.2.3.

Th c thi các hành vi


4.2.4.

Thi t l p quan h

ng 5.

it

ng...................................................................... 54

ng trong CSDL................................................. 56

ng D ng ...................................................................... 56

4.2.1.

Ch

it

ng trình ....................................................................................... 56
it

ng d li u ....................................................................... 58
it
it

ng...................................................................... 58


ng và ki m tra tính toàn v n tham chi u ................. 59

ng k t ..............................................................................................62

Ph l c A Giao di n m t s Form qu n lý
ng

it

ng trong ch

ng trình ng

63

Ph l c B Mã ngu n ch

ng trình ng d ng trong VB Qu n lý m t s

it

ng

68

Tài li u tham kh o

TH&XD CSDL H T

2


Cao Xuân Vinh


Khoá lu n T t nghi p

Ch

ng 1. M

ih c

H Công Ngh - HQGHN

u

s d li u (CSDL) ã tr thành m t b ph n ch y u, không th thi u
trong h u h t các h th ng thông tin. D li u và CSDL là m c ích, m c tiêu, tr ng
tâm, và là c s cho vi c v n hành, phát tri n c a các h th ng thông tin c ng nh các
ch ng trình, ph n m m ng d ng.
Hi n nay, các h th ng thông tin hay các CSDL u ch y u s d ng m t ki u
CSDL truy n th ng là CSDL Quan h , m t trong các ki u CSDL ã
c phát tri n và
ng d ng r ng rãi. Tuy nhiên v i s phát tri n r t nhanh chóng c a Công ngh thông
tin, CSDL quan h ã d n b c l nh ng y u
m và r t nhi u h n ch , c bi t là
trong vi c xây d ng các ng d ng có d li u ph c t p, d li u a chi u, d li u có
nhi u m i quan h , hay các d li u “ a ph ng ti n” (multi-media) nh hình nh, âm
thanh, video...
CSDL H ng i t ng là gi i pháp cho các v n

trên. Trong CSDL h ng
i t ng, d li u
c l u tr d i d ng các i t ng c a ngôn ng l p trình nên
cho phép l u tr
c các d ng d li u ph c t p, l ng thông tin l n, a chi u, a
quan h , hay có th m r ng l u tr các d li u a ph ng ti n nh hình nh, âm
thanh, video. Các d li u không ch
c l u tr
n thu n, mà c các hành vi c a i
ng d li u c ng
c l u tr trong CSDL.
Trên th gi i, nhi u h qu n tr CSDL h ng i t ng
c phát tri n, tuy nhiên vi c ng d ng l i òi h i nhi u hi u
ch a
c ph bi n r ng rãi. Vi t nam, CSDL h ng i t
i, ho c m i ch
c nghiên c u m c r t ít, t p chung ch
có nh ng ng d ng th c s c th .

ã, ang, và s ti p t c
bi t và công s c, nên
ng là m t v n
r t
y u lý thuy t, ch a

Do v y, vi c Tìm hi u và Xây d ng C s d li u H ng i t ng là m t
n
c n
c quan tâm, tìm hi u và th c hi n. ây là m t v n
khó, òi h i

nh ng hi u bi t sâu s c v CSDL và ph ng pháp H ng i t ng. M c dù còn r t
nhi u h n ch , nh ng
tài s c g ng tìm hi u các t t ng và cách xây d ng m t
CSDL h ng i t ng, m c dù còn m c r t n gi n, nh m d n a ra nh ng t
ng chung và nh ng k thu t c b n c a vi c xây d ng CSDL h ng i t ng.
tài s th c hi n xây d ng m t CSDL h

ng

it

ng, là CSDL Qu n lý

c t p (Learning Manager), nh m minh ho vi c s d ng h qu n tr CSDL h ng
i t ng ObjectStore PSE Pro for C++ và quy trình xây d ng m t CSDL h ng i
TH&XD CSDL H T

3

Cao Xuân Vinh


Khoá lu n T t nghi p

ih c

H Công Ngh - HQGHN

ng. Do có nhi u h n ch , nên
tài s không i sâu vào quá trình mô hình hoá,

phân tích, thi t k h ng i t ng, mà i tr c ti p vào quá trình xây d ng CSDL.
Trong CSDL Qu n lý H c t p, m t s
là:

it

ng d li u s

• Student:

it

ng Sinh viên

• Teacher:

it

ng Giáo viên

• Class:

it

ng L p h c

• Department:

it


• Subject:

ng Môn h c

• Mark:

it
it

c xây d ng và qu n lý

ng

ng Phòng B môn, Khoa

m c a các Môn h c c a Sinh viên

Các thu c tính, hành vi c a i t ng, c ng nh các quan h
i t ng
xây d ng m c n gi n, nh m minh ho m t s v n
chính c a CSDL h ng
ng.

TH&XD CSDL H T

4

c
i


Cao Xuân Vinh


Khoá lu n T t nghi p

Ch

ih c

H Công Ngh - HQGHN

ng 2. CSDL H ng
i T ng Và H Qu n Tr
ObjectStore PSE Pro

2.1. C S D

Li u H

ng

iT

ng

s d li u H ng
i t ng (Object-Oriented Database) là m t ki u
CSDL, mà trong ó, các d li u
c l u tr d i d ng các i t ng. Hay C s d
li u H ng i t ng

c xây d ng b ng cách k t h p các y u t c a C s d li u
và các k thu t c a L p trình H ng i t ng nh m m c ích l u tr các i t ng
li u. T ó, có th t n d ng, phát huy
c nh ng u
m, l i ích, và th m nh
a các k thu t, công ngh
c s d ng,
kh n c a các ki u CSDL khác.

ng th i kh c ph c nh ng y u

m, khó

Hình sau minh ho vi c t h p các y u t c a CSDL và các k thu t c a l p
trình h ng i t ng xây d ng nên CSDL h ng i t ng:

nh danh i t ng
(Object Identity)

Th a k
(Inheritance)

óng gói
(Encapsulation)

a hình
(Polymorphism)

p trình H ng
i t ng

Toàn v n
(Integrity)

s d li u H

An toàn
(Security)

ng

it

u tr
(Archive)

ng

Khôi ph c
(Recover)

s d li u

Giao tác
(Transaction)
Phiên b n
(Versioning)

ng b
(Concurrency)


n t i lâu
(Persistence)

Hình 1: Các thành ph n c a CSDL h

TH&XD CSDL H T

5

Truy v n
(Query)

ng

it

ng

Cao Xuân Vinh


Khoá lu n T t nghi p

ih c

H Công Ngh - HQGHN

Các u
m c a CSDL h óng i t ng, có th th c hi n
các k thu t c a l p trình h ng i t ng. K thu t l p trình H ng


c là do s d ng
i t ng hi n ã

có m t n n t ng lý thuy t v ng ch c, các k thu t l p trình ã tr thành c s cho m i
ngôn ng l p trình. Có nhi u ngôn ng l p trình ang
c s d ng r ng rãi và ch
u nh C++, Java, SmallTalk, và g n ây nh t là công ngh .NET c a Microsoft.
Vi c xây d ng các d li u trong CSDL H ng i t ng có m t s
ng nh t, hay c
th h n là s d ng tr c ti p k thu t và ngôn ng l p trình h ng i t ng
xây
ng lên các i t ng d li u. Do ó, có th d dàng
c s d ng trong các ph n
m ng d ng l p trình h ng i t ng xây d ng, truy v n và thao tác d li u mà
không g p các khó kh n, h n ch nh khi s d ng CSDL quan h .

2.2. Các Khái Ni m C B n Trong CSDL H
2.2.1.

it

ng

iT

ng

ng (Object)


i t ng là m t khái ni m c th ho c tr u t ng, ch m t ng i, m t a
m, hay m t v t nào ó t n t i trong th gi i th c.
i t ng trong th gi i th c
c xác nh duy nh t, ch a m t t p nh t nh các thông tin v
i t ng và các hành
vi d a trên các thông tin ó. M t i t ng c ng có th có các m i quan h hay có kh
ng trao i thông tin v i các i t ng khác.
Ví d : m t i t ng Sinh viên là m t ng i ang h c trong m t tr ng i
c,
c xác nh duy nh t trong th gi i th c, ch a m t t p nh t nh các thông tin
Sinh viên ó, nh Mã Sinh viên, H tên, Ngày sinh, Tr ng i h c mà Sinh viên
ang theo h c... M t i t ng Sinh viên có th có các quan h v i các i t ng
khác, nh quan h v i i t ng L p h c, hay i t ng
m môn h c c a Sinh viên.
Các hành vi d a trên các thông tin ó nh là hành vi thay i Mã s Sinh viên c a i
ng, tr v giá tr Tu i, hay tính

m trung bình các môn h c c a Sinh viên.

Trong CSDL h ng i t ng, các i t ng trong th gi i th c
c mô
hình hoá, bi u di n vào CSDL theo úng các c tr ng c a i t ng, và luôn duy trì
t ng ng tr c ti p gi a các i t ng trong CSDL v i các i trong th gi i th c.
2.2.2.

nh danh

it

ng (Object Identifier)


t i t ng
c xác nh duy nh t trong th gi i th c, và do ó, c ng ph i
c bi u di n duy nh t trong CSDL. Vi c xác nh duy nh t i t ng trong CSDL
c th c hi n b ng cách s d ng các nh danh i t ng (Object Identifier) hay
OID. M t OID là m t giá tr
c gán cho m t i t ng, dùng
xác nh duy nh t
i t ng ó trong h th ng. Hai i t ng khác nhau không th có cùng OID trong
TH&XD CSDL H T

6

Cao Xuân Vinh


Khoá lu n T t nghi p

ih c

H Công Ngh - HQGHN

i hoàn c nh, ngay c khi m t i t ng ã b xoá kh i h th ng,
u này nh m
m b o tính duy nh t t ng ng v i tính duy nh t c a các i t ng trong th gi i
th c. Do ó, m t OID
c gán cho m t i t ng th i m kh i t o, không b thay
i cho n khi i t ng b hu b , và không
c gán l i cho các i t ng khác
ngay c khi i t ng này ã b hu b . OID c a các i t ng

c h th ng sinh ra
và không ph thu c vào các c tr ng c a i t ng.
Chú ý, nh danh i t ng OID khác v i khoá chính c a i t ng. Khoá
chính c a i t ng là m t thu c tính c a i t ng,
c ng i dùng gán giá tr , và
có th nhìn th y, thay i
c, và có th
c c p l i, còn OID thì không th .
Ví d : m t Sinh viên
c bi u di n trong CSDL có m t OID duy nh t, xác
nh s t ng ng v i Sinh viên ó trong th gi i th c. M t Sinh viên khác trong th
gi i th c n u
c bi u di n trong CSDL thì ph i có m t OID khác v i OID c a Sinh
viên trên, th m chí c khi Sinh viên trên ã b xoá kh i h th ng.
u này m b o s
ng ng c a CSDL v i th gi i th c, tránh s nh m l n v các i t ng
c bi u
di n trong CSDL.
2.2.3.

Thu c tính

it

ng (Attribute)

Các i t ng ch a m t t p thông tin nh t nh v
i t ng, hay còn g i là
các thu c tính i t ng. M i thu c tính có m t tên duy nh t trong i t ng và giá tr
c bi u di n trong mi n giá tr c a m t ki u d li u nào ó. Các ki u d li u này có

th là các ki u d li u c b n, nh ki u s nguyên, s th c, ki u xâu kí t …, ho c các
ki u d li u ph c t p do ng i dùng nh ngh a, các ki u i t ng, ho c c ng có th
là các con tr hay vector n các ki u d li u ó.
Ví d : thu c tính Mã Sinh viên c a i t ng Sinh viên có ki u d li u là m t
xâu kí t , có giá tr nh “SV0122177”, thu c tính N m sinh c a Sinh viên có ki u là
t s nguyên, nh 1983. Hay thu c tính L p tr ng c a m t i t ng L p h c là
t con tr
n m t i t ng Sinh viên.
2.2.4.

Tr ng thái

it

ng (State)

Tr ng thái c a m t i t ng là th hi n c a i t ng t i m t th i m nh t
nh, bao g m m t t p các giá tr c a các thu c tính i t ng t i th i
m ó. Tr ng
thái c a i t ng có th thay i theo th i gian, t ng ng v i s thay i giá tr c a
các thu c tính i t ng. T p t t c các tr ng thái có th c a i t ng
c g i là
ng tr ng thái (State Net).
thay i tr ng thái c a i t ng (thay i giá tr

TH&XD CSDL H T

7

Cao Xuân Vinh



Khoá lu n T t nghi p

ih c

thu c tính), c n g i các thông
vi c a i t ng.
2.2.5.

Hành vi

it

H Công Ngh - HQGHN

ph pl

n

it

ng, hay yêu c u th c thi các hành

ng (Behaviour)

Hành vi c a m t i t
các thu c tính c a i t ng,

ng là các thao tác h p l c a chính i t ng ó trên

c s d ng
kh i t o hay thay i các giá tr c a

thu c tính, ho c tr v m t giá tr nào ó d a trên các giá tr thu c tính c a i t ng.
Các i t ng khác có th truy n các thông
p, hay yêu c u i t ng th c thi các
hành vi b ng vi c g i tên c a hành vi ó và các tham s n u có.
Trong CSDL h ng i t ng, h u h t các i t ng u
c nh ngh a
tr c m t s hành vi c b n s d ng cho CSDL, nh các hành vi t o m i i t ng,
p nh t thông tin, và xoá i t ng. Các hành vi do ng i dùng nh ngh a có th
c s d ng cho vi c truy v n hay c p nh t i t ng. Ví d , m t i t ng Sinh
viên có các hành vi getAverageMark() và setName(char Name), l n l t tr v giá tr
trung bình c a
m các môn h c c a Sinh viên, và thi t l p Tên c a Sinh viên theo
tham s truy n vào.
t hành vi i t ng có th
cg it
i t ng b ng các s d ng d u
ch m (.) và tên c a hành vi cùng các tham s . Ví d n u aStudent là m t i t ng
Student, thì l i g i aStudent.getAverageMark(), aStudent.setName (char Name) s g i
th c thi các hành vi tính
m trung bình và thi t l p Tên c a Sinh viên.
2.2.6.

L p

it

ng (Class)


p i t ng là m t khái ni m tr u t ng mô t m t c u trúc d li u, bi u th
u trúc chung c a m t t p các i t ng cùng ki u, hay có cùng c u trúc thu c tính
và hành vi. M i i t ng là m t th hi n c th c a l p, có các thu c tính và hành vi
nh
c khai báo trong l p. Trong các mô hình và các ngôn ng l p trình h ng i
ng, l p th ng
c mô t b ng t khoá class.
Ví d : l p Sinh viên mô t c u trúc chung c a các
khai báo trong ngôn ng l p trình C++ nh sau:
class Student
{
private:
// Khai báo các thu c tính
char StudentID;
char Name;
char Birthday;
TH&XD CSDL H T

8

it

it

ng Sinh viên,

c

ng:


Cao Xuân Vinh


Khoá lu n T t nghi p

ih c

H Công Ngh - HQGHN

char Gender;
char Address;
public:
// Khai báo các hành vi i t ng:
void setStudentID (char SID);
void setName (char Name);
float getAverageMark ();
}
2.2.7.

óng gói d

li u (Data Encapsulation)

truy v n hay c p nh t các thu c tính c a m t i t ng, các i t ng khác
ch có th truy n các thông
p hay yêu c u th c thi các hành vi c a i t ng, mà
không th truy c p n c u trúc d li u bên trong c a i t ng, và c ng không c n
bi t n các chi ti t th c hi n c a i t ng.
u này nh m m b o tính toàn v n

a
i t ng, che gi u thông tin, và
c g i là óng gói d li u (Data
Encapsulation)
óng gói là m t trong các c
m chính c a CSDL h ng i t ng và
không
c s d ng trong các ki u CSDL truy n th ng. Do ó trong CSDL truy n
th ng, ng i dùng hay các ch ng trình ng d ng có th nhìn th y, truy c p và thay
i d li u c a các i t ng, làm nh h ng n vi c m b o tính toàn v n c a d
li u.
Ví d : Các i t ng khác không th truy c p và c p nh t giá tr c a các thu c
tính ã
c óng gói trong i t ng Sinh viên, nh vi c tính
m trung bình hay
thi t l p giá tr Tên c a Sinh viên. Các hành vi này
c chính i t ng Sinh viên ó
th c hi n, nh m ch cho phép các c p nh t h p l
c th c hi n, hay che d u các chi
ti t th c hi n bên trong c a
2.2.8.

it

ng.

Th a k (Inheritance)

Các d li u trong CSDL h ng i t ng là các i t ng không có ki u nh
tr c và th ng có c u trúc ph c t p, trong khi nhi u i t ng l i có cùng m t c u

trúc ho c m t ph n c u trúc d li u. Do ó, vi c s d ng l i, và m r ng m t ki u d
li u, hay ki u i t ng có s n là r t c n thi t và quan tr ng.
u này có th
c
th c hi n trong các h th ng h ng i t ng b ng cách s d ng k thu t th a k .
Th a k là k thu t cho phép m t l p i t ng có kh n ng th a h ng t t c
các tính ch t và c tr ng c a m t l p i t ng khác, bao g m t t c các thu c tính,
hành vi và các quan h
i t ng. Do ó, th a k cho phép các i t ng m i
ct o
TH&XD CSDL H T

9

Cao Xuân Vinh


Khoá lu n T t nghi p

ih c

H Công Ngh - HQGHN

ra có kh n ng s d ng l i các ki u i t ng có s n trong CSDL, ng th i cho phép
r ng ki u i t ng ó b ng cách khai báo thêm các thu c tính, hành vi, và quan
riêng, th m chí có th

nh ngh a l i các hành vi

c th a k .


t kì l p i t ng nào c ng u có th
c s d ng và cho phép th a k
i các l p i t ng khác. Các l p th a k t các l p khác g i là l p d n xu t, hay
p con, và l p
c th a k g i là l p c s hay l p cha. Có hai ki u th a k , là n
th a k và a th a k . Các th a k mà m t l p d n xu t ch th a k t m t l p c s
i là n th a k , và th a k t nhi u l p c s g i là a th a k .
Ví d , l p

it

ng Student và Teacher có th

c th a k t l p Person. Do

ó, các thu c tính, hành vi va quan h c a các i t ng Person nh Name, Birthday,
Gender, Address, getInfo()… u
c th a k cho các i t ng Student và Teacher.
c là các i t ng Student và Teacher u có các thu c tính, hành vi, quan h này,
ng th i có th m r ng thêm các thu c tính, hành vi và quan h riêng. Ví d trong
ngôn ng l p trình C++, khai báo th a k
c bi u th b ng d u hai ch m (:), các l p
i t ng này có d ng nh sau:
Class Person
{
private:
NameObj
BirthdayObj
char

AddressObj
public:
char
}

Name;
Birthday;
Gender;
Address;
getInfo();

class Student : Person
{
private:
char StudentID;
public:
char getInfo();
float getAverageMark();
}
class Teacher : Person
{
private:
char TeacherID;
char Rank;
TH&XD CSDL H T

10

Cao Xuân Vinh



Khoá lu n T t nghi p

ih c

H Công Ngh - HQGHN

}
p i t ng Student
c th a k t l p Person, và do ó c ng có các thu c
tính và hành vi nh c a l p Person. Ngoài ra, l p Student có thêm các thu c tính và
hành vi riêng nh StudentID, getAverageMark(), hay có th
getInfo() c a l p Person.
2.2.9.

nh ngh a l i hành vi

a hình (Polymorphism)

a hình là kh n ng cho phép các i t ng th c hi n nh ng hành vi khác
nhau khi nh n
c cùng m t thông
p, d a trên các c tr ng riêng c a mình.
Ví d , v i cùng m t thông

p getInfo() yêu c u tr v thông tin c a i
ng, các i t ng khác nhau s th c hi n các hành vi riêng và tr v thông tin theo
các c tr ng riêng c a mình. Nh m t i t ng Person có th tr v các thông tin
Name, Birthday, Gender, Address, còn i t ng Student có th tr v các thông tin
riêng nh StudentID, Name, Birthday, AverageMark…

a hình còn cho phép m t i t ng th c hi n các hành vi khác nhau trong
nh ng ng c nh khác nhau, d a trên các c tr ng, hay các ki u c a i t ng trong
cây th a k . T c là n u m t l p i t ng
c th a k t m t l p i t ng nào ó
trong cây th a k , thì nó có th th c hi n các hành vi riêng c a mình, ho c c ng có th
th c hi n các hành vi nh là m t i t ng c a l p mà nó th a k , ph c thu c vào ng
nh mà hành vi
c th c hi n.
Ví d , n u m t l p
i t ng Student th a k t l p Person, có hành vi
getInfo() riêng và có th
c th c hi n khác v i hành vi getInfo() c a l p Person.
Tuy nhiên, các i t ng Student v n là m t th hi n c a l p Person do tính ch t th a
. Do ó, có nh ng lúc các i t ng Student mu n
c coi là các i t ng Person,
và th c hi n nh ng hành vi nh c a l p Person. K thu t a hình s cho phép th c hi n
u này b ng vi c coi ki u c a m t i t ng Student là m t i t ng Person, và
th c hi n các hành vi theo ki u c a i t ng trong ng c nh th c hi n.
a hình có ý ngh a trong vi c th a k và m r ng các ki u d li u
trong CSDL, cho phép có th v a nh ngh a l i các hành vi i t
th duy trì, s d ng l i các hành vi i t ng ã có s n, làm t ng
các ki u d li u i t ng.

TH&XD CSDL H T

11

it

ng


ng nh ng v a có
kh chuy n gi a

Cao Xuân Vinh


Khoá lu n T t nghi p

ih c

2.3. Chu n CSDL H

H Công Ngh - HQGHN

ng

iT

ng ODMG

t trong các yêu c u quan tr ng c a các mô hình hay các h qu n tr CSDL
là vi c xây d ng m t chu n chung cho t t c các h th ng. Nh m t lý do d n n s
thành công c a h qu n tr CSDL quan h là ã xây d ng
c m t chu n SQL cho
phép qu n tr CSDL. B i v y, vi c xây d ng m t chu n cho CSDL h ng i t ng là
t c n thi t, quan tr ng, và mang l i nhi u l i ích.
i ích th nh t là, chu n CSDL h ng i t ng nh ra m t c u trúc chung
cho t t c các h th ng, do ó ng i s d ng s d dàng h n trong vi c thao tác h
th ng c ng nh b o trì, chuy n i, và nâng c p h th ng. Th hai, chu n CSDL cho

phép s t ng thích gi a nhi u h th ng khác nhau, t c là các ch ng trình ng d ng
có th
các h
các h
vi c l

truy c p
c các d li u
c l u tr trong các h th ng, hay các CSDL trong
th ng khác nhau. Chu n CSDL c ng t o cho ng i dùng kh n ng
so sánh
th ng, các h qu n tr CSDL h ng i t ng khác nhau, d dàng h n trong
a ch n xây d ng và phát tri n các CSDL h ng i t ng.

ODMG (Object Database Management Group) là m t trong các chu n CSDL
ng i t ng, ang
c phát tri n và
c ng d ng trong nhi u h th ng, h
qu n tr CSDL h ng i t ng hi n nay. ODMG bao g m b n thành ph n chính là:
• Mô hình

it

• Ngôn ng

nh ngh a

ng (Object Model)

• Ngôn ng truy v n



it
it

ng (ODL)
ng (OQL)

g n k t (binding) v i các ngôn ng l p trình h

ng

it

ng.

Mô hình ODMG cho phép mô t và bi u di n các thành ph n c b n
cs
ng trong các CSDL h ng i t ng, bao g m m t s các thành ph n chính sau:
2.3.1.

it
t

it

ng và Literal
ng trong mô hình

it


ng ODMG

c mô t b ng b ng b n

c tr ng:


nh danh

• Tên

it

it

ng

ng

• Th i gian s ng


TH&XD CSDL H T

u trúc

it

ng


12

Cao Xuân Vinh


Khoá lu n T t nghi p

ih c

H Công Ngh - HQGHN

Trong ó, nh danh i t ng dùng
xác nh duy nh t i t ng trong h
th ng, t ng t nh
nh danh OID trong nhi u h th ng h ng i t ng khác.
Tên i t ng
c gán cho m t s
i t ng nào ó và là duy nh t trong
CSDL, s d ng cho vi c tham chi u n i t ng. Vi c truy xu t n i t ng có
th
c th c hi n thông qua tên c a i t ng. Tuy nhiên, do s l ng các i t ng
trong CSDL là r t l n, nên không th
t tên cho t t c các i t ng, mà ch nên t
tên cho m t s
i t ng nào ó, sao cho t các i t ng này có th truy c p
c
n các i t ng khác trong CSDL. Tên còn
c coi nh m t
m vào c a CSDL

và th ng
c t cho m t t p ch a các i t ng thu c m t l p. Sau ó, có th s
ng các ph ng th c c a t p ch a
truy c p n các i t ng trong t p ó. Ví d ,
có th
t all_Student là m t tên c a m t t p h p các i t ng Student, ch a t t c
các i t ng Student t n t i trong CSDL. Khi ó, all_Student có th coi là m t m
vào CSDL, có th
c g i tr c ti p t h th ng, và có th s d ng các ph ng th c
at ph p
duy t trên các thành viên c a t p h p, hay truy c p và thao tác các i
ng Student trong CSDL.
Th i gian s ng c a m t

it

ng bi u th tính t n t i lâu b n (Persistence)

hay t m th i (Transience) c a i t ng trong CSDL. M t i t ng là t n t i lâu b n
khi nó
c l u trong CSDL ngay c khi các ch ng trình ng d ng k t thúc, và là
m th i n u nó ch
c s d ng trong ch ng trình ng d ng, b hu b khi ch ng
trình k t thúc và không
c l u trong CSDL.
u trúc c a i t ng bi u th m t i t ng là nguyên t hay là m t t p
ch a. M t i t ng là nguyên t khi nó là m t i t ng riêng l , và là m t t p ch a
khi nó ch a m t t p các i t ng khác.
Ngoài các i t ng, ODMG c ng cho phép mô hình các ki u d li u Literal.
Literal là các ki u d li u, không có nh danh trong CSDL (khác v i i t ng), có

th là các ki u d li u c b n, các c u trúc d li u, hay các ki u t p ch a.
Ví d , m t Literal là c u trúc d li u Date ch a các thông tin v Ngày-thángm, và các thao tác trên c u trúc d li u ó. Hay v i Literal là ki u t p ch a, ví d là
t t p h p (Set), ch a m t t p các i t ng Sinh viên. Tuy nhiên các Literal này
không
c h th ng cung c p nh danh nh khi l u tr các i t ng
2.3.2.

Giao di n l p

it

ng

ODMG s d ng t khoá interface dùng
mô t giao di n c a các ki u i
ng, bao g m vi c mô t các thu c tính công khai, các hành vi i t ng, hay các
TH&XD CSDL H T

13

Cao Xuân Vinh


Khoá lu n T t nghi p

ih c

H Công Ngh - HQGHN

quan h

i t ng. T khoá interface
c s d ng
thay cho các t khoá type và
c s d ng cho vi c
class trong mô hình h ng i t ng c a ngôn ng l p trình,
miêu t giao di n c a các l p i t ng. Interface không ph i là m t th hi n, không
th c thi
c, hay không có i t ng nào
c t o ra cho interface, nh ng
cs
ng
ph c v cho vi c nh ngh a các thao tác c a i t ng. Các thao tác này có
th
c th a k b i các i t ng do ng i dùng nh ngh a trong các ng d ng c
th .
Ví d sau ây minh ho vi c nh ngh a m t s giao di n c a các l p
ng và m t s các hành vi i t ng:

i

interface Object{
boolean same_as (Object otherObject);
Object copy();
void delete();

}
interface Person : Object {
char Name();
char Gender();
char Address();

char getInfo();
}
interface Student : Person {
char StudentID();
float getAverageMark();
}
Trong ví d trên, interface Object là giao di n c a l p i t ng Object, v i
các hành vi c s , và th ng
c th a k b i t t c các i t ng khác. Vi c th a k
c bi u di n b ng d u hai ch m (:), cho phép các i t ng th a k
u có các hành
vi c b n c a
i t ng, nh : so sánh m t
i t ng v i m t
i t ng khác
(same_as), sao chép m t i t ng (copy), hay xoá m t i t ng (delete)…
Chú ý, vi c th a k gi a các giao di n
c s d ng
t o s th a k các
hành vi c a l p i t ng, mà không có s th a k các thu c tính và quan h . Do ó

TH&XD CSDL H T

14

Cao Xuân Vinh


Khoá lu n T t nghi p


ih c

H Công Ngh - HQGHN

ki u th a k này
c g i là “th a k hành vi” (Behaviour Inheritance), và khác v i
ki u th a k gi a các l p i t ng. Trong th a k gi a các l p i t ng, các hành vi
và c các thu c tính, quan h
trong ODMG.

u

c th a k , và

Ngoài vi c mô t giao di n c a các

it

c kí hi u b i t khoá extends

ng, ODMG c ng cho phép mô t

giao di n c a các Literal, hay giao di n c a các c u trúc d li u và các ki u ch a i
ng. Ví d sau mô t giao di n c a c u trúc d li u Date và ki u ch a Collection
(t p i t ng):
interface Date : Object {
unsigned short year();
unsigned short month();
unsigned short day();
boolean is_equal (Date otherDate);

boolean is_greater (Date otherDate);
}
interface Collection : Object {
void insert_element (element anElement);
void remove_element (element anElement);
unsigned long cardinality();
boolean is_empty();
Iterator create_interator (boolean stable);
}
2.3.3.

T p Ch a

Các ki u t p ch a i t ng trong ODMG có th là: Array (m ng), Bag (túi),
Collection (t p), List (danh sách), Set (t p h p), Dictionary (t
n). Trong ó,
Collection là t p c s và chung nh t, các t p còn l i
c th a k t Collection. Tính
ch t c a các t p ch a
c xác nh nh trong Hình 2, ví d : Array là m t t p ch a có
th t , cho phép ph n t có giá tr Null (không xác nh); Set là m t t p không l u tr
th t , không cho phép l p các ph n t …
i m i t p ch a, có các ph ng th c cho vi c duy t, truy v n và c p nh t t p
ch a. Ví d m t s ph ng th c c b n c a t p ch a Collection là:
Collection::insert_element (e)

// chèn thêm m t ph n t e

Collection::remove_element (e) // lo i b ph n t e


TH&XD CSDL H T

15

Cao Xuân Vinh


Khoá lu n T t nghi p

ih c

H Công Ngh - HQGHN

Collection::is_empty ()

// ki m tra t p ch a là r ng

Collection::cardinality ()

// tr v s ph n t c a t p

Collection::create_interator () // t o con tr duy t trong t p
Collection

u gi
th t

Không

Có m t Khoá i

cùng m i phân t


Không
Cho phép
Null




Không

Array

List

Dictionary

Cho phép
p


Không

Bag

Set

Hình 2: Tính ch t c a các ki u t p ch a


Các t p ch a khác
c th a k t t p Collection, có các ph ng th c c b n
a Collection và ch a thêm các ph ng th c riêng c a t ng t p ch a theo các tính
ch t riêng.
2.3.4.

it

ng nguyên t

Các i t ng nguyên t (Atomic Object) trong ODMG t ng t nh các i
ng trong các mô hình i t ng khác,
c ng i dùng nh ngh a qua các khai
báo l p i t ng (class). Ví d l p i t ng Student, và Class
c mô t nh sau:
class Student extends Person
{
attribute
char StudentID;
relationship Class belongToClass inverse Class::hasStudents;
relationship Set<Mark> hasMarks inverse Mark::ofStudent;

TH&XD CSDL H T

16

Cao Xuân Vinh


Khoá lu n T t nghi p


ih c

float

H Công Ngh - HQGHN

getAverageMark();

}
class Class
{
attribute
attribute
attribute
attribute

char Name;
Teacher
HeadTeacher
Student
Monitor
Student
Secretary

relationship Department belongToDep inverse Department::hasClasses
relationship Set<Student> hasStudents inverse Student::belongToClass
relationship Set<Subject> hasSubject inverse Subject::teachInClass
}
khoá attribute khai báo các thu c tính c a i t ng. Sau attribute là ki u

li u và tên c a thu c tính, ví d : attribute char StudentID, khai báo thu c tính
StudentID c a i t ng Sinh viên có ki u là char (xâu kí t ).
Các quan h
i t ng
khoá relationship, v i c u trúc:

c khai báo trong l p

it

ng t

ng ng b ng t

relationship Type Attribute inverse iClass::iAttribute
trong ó, Attribute là thu c tính c a i t ng có quan h , Type là ki u d li u c a
thu c tính. Ki u d li u th ng là i t ng, ho c m t t p ch a các i t ng
c
quan h . T khoá inverse khai báo quan h theo chi u ng c l i, iClass và iAttribute là
p i t ng và thu c tính có quan h ng c chi u. Ví d , l p Student có quan h hai
chi u v i l p Class, quan h này
c khai báo nh sau:
relationship Class belongToClass inverse Class::hasStudents;
i belongToClass là thu c tính quan h c a l p Student, và hasStudents là thu c tính
a l p Class. Trong l p Class, quan h ng c l i c ng
c khai báo, v i hasStudents
là m t t p các

it


ng Student:

relationship Set<Student> hasStudents inverse Student::belongToClass
Các hành vi i t ng
c khai báo t ng t nh trong các ngôn ng l p trình
ng i t ng, bao g m ki u giá tr tr v , tên hành vi, và các tham s n u có. Ví
, hành vi tính
m trung bình c a i t ng Sinh viên:
float getAverageMark();

TH&XD CSDL H T

17

Cao Xuân Vinh


Khoá lu n T t nghi p

2.3.5.

ih c

H Công Ngh - HQGHN

T p ch a lâu b n và khoá

it

ng


Mô hình ODMG c ng cho phép mô t các t p ch a lâu b n và khoá c a các
i t ng trong CSDL. T khoá extent dùng
khai báo tên c a t p ch a các i
ng lâu b n c a l p t ng ng trong CSDL. Ví du, các l p i t ng Student và
Class
c khai báo nh sau:
class Student extends Person
(extent all_Students
key StudentID )
}
class Class
(extent all_Classes
key Name)
}
Khi ó all_Students là tên c a m t t p i t ng, ch a t t c các i t ng
Student t n t i lâu b n trong CSDL.
u này t ng t nh vi c khai báo m t t p
ch a, ví d Set<Student>, v i tên là all_Students, ch a t t c các
c t o ra và l u tr trong CSDL.

it

ng Student

Chú ý là các t p ch a c ng tuân theo ràng bu c c a các quan h th a k . T c
là, n u all_Students và all_Person là các t p ch a các i t ng t n t i lâu b n c a l p
Student và Person, trong ó l p i t ng Student th a k (extends) t l p Person, thì
all_Student s ph i là t p con c a all_Person. Ràng bu c này
c th c hi n t

ng
i h th ng.
khoá Key khai báo khoá chính c a các
ng Student là StudentID. Khoá chính là duy nh
phân bi t và nh n bi t các i t ng t trong h th
OID (OID s d ng cho h th ng nh n bi t các

2.4. H Qu n Tr CSDL H

ng

iT

i t ng. Ví d khoá chính c a i
t,
c s d ng cho ng i dùng
ng, khác v i nh danh i t ng
i t ng).

ng ObjectStore PSE Pro

Hi n nay, có nhi u h qu n tr CSDL h ng i t ng ang
c xây d ng và
phát tri n, nh ObjectStore, Objectivity, Versant, O2… M c dù m i h qu n tr u có
t u
m và th m nh riêng, tuy nhiên, h qu n tr ObjectStore
c ánh giá là có
nhi u u m, cung c p nhi u tính n ng h ng i t ng, d hi u, d s d ng và tuân
theo chu n CSDL h ng i t ng ODMG.


TH&XD CSDL H T

18

Cao Xuân Vinh


Khoá lu n T t nghi p

ih c

H Công Ngh - HQGHN

ObjectStore cung c p kh n ng l u tr d li u v i hi u qu cao d a trên vi c
d ng các ngôn ng l p trình h ng i t ng nh C++, Java. Cho phép d dàng t o
ra các l p i t ng ho c m r ng các l p, không b gi i h n b i các ki u hay các c u
trúc ph c t p c a d li u.
ng th i h tr các th vi n chu n cho vi c qu n lý tr c
ti p các i t ng trong CSDL, h tr x lý truy v n (Query Processing), phân m c
(Indexing), và các giao tác (Transaction) CSDL. Ngoài ra, ObjectStore còn h tr các
ki n trúc a lu ng, a ch ng trình, a ng i dùng, h tr Ánh x b nh o (Virtual
Memory Mapping), h tr phát tri n nhanh tr c quan (Visual Rapid Development), và
tr nhi u môi tr ng phát tri n.
ObjectStore có ba thành ph n chính là: Object Managers (thành ph n qu n lý
i t ng), Object Servers (các d ch v
i t ng) và Object Store (l u tr
i t ng),
cho phép phân c p và tách bi t các công vi c th c hi n trong quá trình qu n lý i
ng. M t ch ng trình ng d ng s t ng tác tr c ti p v i thành ph n qu n lý i
ng, thành ph n này s thông qua các d ch v

i t ng truy c p vào thành ph n
u tr
i t ng.
t phiên b n c a ObjectStore là PSE Pro for C++, nh g n h n ObjectStore,
d ng cho vi c xây d ng và phát tri n các CSDL h ng i t ng m c nh , cho
phép l u tr và truy xu t các i t ng d li u theo nh d ng c a ngôn ng l p trình
ng i t ng C++. ObjectStore PSE Pro h tr các công c thi t k CSDL h ng
i t ng d i d ng các ký pháp
ho c a mô hình hoá h ng i t ng. ng th i
tr vi c qu n lý, truy xu t, thao tác các i t ng d li u, bi u di n và thi t l p các
quan h m t chi u, hai chi u, các i t ng t h p, m b o toàn v n tham chi u...
Thông th ng, m t h qu n tr CSDL h ng i t ng nên
c xem xét và
d ng khi h th ng òi h i các thao tác v i hi u su t cao trên các d li u ph c t p.
Các d li u ph c t p có th là các d li u a chi u, a quan h , hay các d li u a
ph ng ti n. V i các d li u này, vi c s d ng CSDL quan h s g p rât nhi u khó
kh n và h n ch .

TH&XD CSDL H T

19

Cao Xuân Vinh


Khoá lu n T t nghi p

ih c

H Công Ngh - HQGHN


Ch

ng 3. Xây D ng CSDL H

3.1.

nh Ngh a Các

iT

ng

iT

ng

ng Trong CSDL B ng ODL

Ngôn ng
nh ngh a i t ng (Object Difinition Language - ODL)
cs
ng
xây d ng các l c
CSDL h ng i t ng, cho phép nh ngh a các l p
i t ng, các giao di n và quan h gi a các l p i t ng. ODL là m t thành ph n
a mô hình i t ng ODMG,
c thi t k
h tr cho vi c xây d ng ng ngh a
a mô hình i t ng ODMG. ODL cho phép c t các l c

CSDL, nh ng
không ph thu c vào m t ngôn ng l p trình c th nào và sau ó có th g n k t
(binding) vào các ngôn ng l p trình h ng
i t ng c th nh C++, Java,
SmallTalk.
Kí pháp
ho cho vi c bi u di n các l c
ODL
d ng các bi u di n này, l c
CSDL Qu n lý H c t p
Hình 4.

Class:

c cho trong Hình 3.
c xây d ng nh trong

Student
(Class)
Person
(Interface)

Interface:

1:1

Relationships:

1:N
N:N


Inheritance:

Interface
Inheritacne (:)

Hình 3: Kí pháp

TH&XD CSDL H T

ho cho bi u di n l

20

Class Inheritance
(extends)
c

ODL

Cao Xuân Vinh


Khoá lu n T t nghi p

ih c

hasClasses

H Công Ngh - HQGHN


hasTeachers

Department

memberOfDep

Person

belongToDep

Class

Name
Address

is_a

Birthday

is_a

hasStudents

Student

Teacher

belongToClass


teachSubject

hasSubjects

hasMarks
hasTeachers

ofStudent

Subject

Mark

ofMark

hasMarks
teachedInClass

Hình 4: L

c

CSDL Qu n lý H c t p

d ng ODL, nh ngh a giao di n c a các l p
lý H c t p có d ng nh sau:
class Person
(extent all_Person)
{
attribute

attribute
attribute
attribute
attribute
attribute
char

NameObj
BirthdayObj
char
AddressObj
char
char

it

ng trong CSDL Qu n

Name;
Birthday;
Gender;
Address;
Phone;
Email;

getInfo();

}
class Student extends Person
(extent all_Students

key StudentID )
{
attribute
char StudentID;
relationship Class belongToClass inverse Class::hasStudents;
relationship Set<Mark> hasMarks inverse Mark::ofStudent;

TH&XD CSDL H T

21

Cao Xuân Vinh


Khoá lu n T t nghi p

ih c

float

H Công Ngh - HQGHN

getAverageMark();

}
class Teacher extends Person
(extent all_Teachers)
key TeacherID )
{
attribute

char TeacherID;
attribute
char Rank;
relationship Set<Department> memberOfDep
inverse Department::hasTeachers
relationship Subject teachSubject inverse Subject::hasTeachers
char
getInfo();
}
class Department
(extent all_Departments
key Name)
{
attribute
char Name;
relationship Set<Class> hasClasses inverse Class::belongToDep
relationship Set<Teacher> hasTeachers
inverse Teacher::memberOfDep
}
class Class
(extent all_Classes
key Name)
{
attribute
char Name;
attribute
Teacher
HeadTeacher
attribute
StudentMonitor

attribute
StudentSecretary
relationship Department belongToDep inverse Department::hasClasses
relationship Set<Student> hasStudents inverse Student::belongToClass
relationship Set<Subject> hasSubject inverse Subject::teachInClass
}
class Subject
(extent all_Subjects
key Name)
{
attribute
attribute
attribute
relationship
relationship
relationship
}

TH&XD CSDL H T

NameObj
Name;
char
Description;
int
Unit;
Set<Mark> hasMark inverse Mark::ofSubject
Set<Class> teachedInClass inverse Class::hasSubject
Set<Teacher> hasTeachers inverse Teacher::teachSubject


22

Cao Xuân Vinh


Khoá lu n T t nghi p

ih c

class Mark
(extent all_Marks)
{
attribute
attribute
relationship
relationship
relationship
}

3.2. Thi t K CSDL H

H Công Ngh - HQGHN

int
Mark1;
int
Mark2;
Set<Mark> hasMark inverse Mark::ofSubject
Set<Class> teachedInClass inverse Class::hasSubject
Set<Teacher> hasTeachers inverse Teacher::teachSubject


ng

iT

ng B ng ObjectStore Database

Designer
ObjectStore PSE Pro cung c p ch
cho phép thi t k các
ng và các quan h
3.2.1.

ng trình ObjectStore Database Designer

i t ng d ng các ký pháp
i t ng trong CSDL h ng

Thi t k các

it

ho , giúp thi t k nhanh các
i t ng.

i

ng

Các i t ng trong CSDL có th

c thi t k trong ObjectStore Database
Designer, và
c bi u di n theo úng các kí pháp
ho c a mô hình h ng i
ng. Kh i
ng ch ng trình ObjectStore Database Designer, t o m i m t
Workspace ho c m m t Workspace ã có s n, ch ng trình có d ng nh hình sau:

Hình 5: ObjectStore Database Designer
TH&XD CSDL H T

23

Cao Xuân Vinh


Khoá lu n T t nghi p

ih c

thi t k m t l p

H Công Ngh - HQGHN

it

ng trong ObjectStore Database Designer, s d ng

nút
ho c menu Class\Add

t o m t l p i t ng m i. Nh p tên c a l p
trong ô Class Name. Các thành viên d li u
c t o b ng cách nh p tên và ki u c a
li u trong ph n Data Members.

Hình 6: T o l p và thành viên d li u

VD: hình trên minh ho quá trình t o l p Student, và thu c tính khoá chính
StudentID v i ki u là char* (con tr
n ki u char).
t thành viên d li u có th có khoá truy c p là Public, Private hay Protected
cho phép công khai, bí m t hay
cb ov
i v i các i t ng khác. Ki u c a
thu c tính có th là ki u nguyên th y (nh : ki u ký t , ki u s , …), ho c có th là các
ki u m r ng c a ObjectStore s d ng cho CSDL nh : os_database (ki u CSDL),
os_segment (ki u phân
n), os_Array (m ng), os_Bag (túi), os_Collection (t p),
os_List (danh sách), os_Set (t p h p), os_Dictionary (t
n), ho c c ng có th là các
ki u do ng i dùng nh ngh a (các ki u d li u ph c h p, các ki u d li u i
ng…). Ki u c a m t thu c tính c ng có th
c thi t l p là con tr - Pointer, ho c
là m t Vector.

TH&XD CSDL H T

24

Cao Xuân Vinh



×