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
Có
Không
Cho phép
Null
Có
Có
Không
Array
List
Dictionary
Cho phép
p
Có
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