Cơ sở dữ liệu hướng đối tượng cung cấp cho bạn đọc những kiến thức cơ bản vè sử dụng và quản trị cơ sở dữ liệu hướng đối tượng, cách xây dựng một mô hình cơ sở dữ liệu hướng đối tượng thực tế. Một tài liệu được viết bởi các thầy vien công nghệ thông tin.
Trang 1http://phuongdongict.net
Trang 2Ch ng 1 u 3
Ch ng 2 CSDL H ng i T ng Và H Qu n Tr ObjectStore PSE Pro 5
2.1 C S D Li u H ng i T ng 5
2.2 Các Khái Ni m C B n Trong CSDL H ng i T ng 6
2.2.1 i t ng (Object) 6
2.2.2 nh danh i t ng (Object Identifier) 6
2.2.3 Thu c tính i t ng (Attribute) 7
2.2.4 Tr ng thái i t ng (State) 7
2.2.5 Hành vi i t ng (Behaviour) 8
2.2.6 L p i t 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 ng i T ng ODMG 12
2.3.1 i t ng và Literal 12
2.3.2 Giao di n l p i t ng 13
2.3.3 T p Ch a 15
2.3.4 i t ng nguyên t 16
2.3.5 T p ch a lâu b n và khoá i t ng 18
2.4 H Qu n Tr CSDL H ng i T ng ObjectStore PSE Pro 18
Ch ng 3 Xây D ng CSDL H ng i T ng 20
3.1 nh Ngh a Các i T ng Trong CSDL B ng ODL 20
3.2 Thi t K CSDL H ng i T ng B ng ObjectStore Database Designer 23
3.2.1 Thi t k các i t ng 23
3.2.2 Thi t k các Quan h 26
Trang 33.3 Cài t C S D Li u H ng i T ng 32
3.3.1 Sinh mã các l p i t ng trong CSDL 32
3.3.2 Giao di n các l p i t ng trong CSDL 35
3.3.3 N i dung các l p i t ng 40
3.3.4 Các ki u quan h trong ObjectStore 43
3.3.5 M t s T khoá và Ph ng th c m r ng cho CSDL 45
3.3.6 Cài t n i dung ph ng th c c a các l p i t ng 46
3.3.7 Biên d ch CSDL 47
Ch ng 4 Cài t Và Th c Thi Ch ng Trình ng D ng CSDL 49
4.1 Cài t Ch ng Trình ng D ng CSDL 49
4.1.1 T o giao di n ch ng trình ng d ng 50
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 i t ng và thi t l p các d li u thành viên 52
4.1.6 Th c thi các hành vi i t ng 54
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 i t ng trong CSDL 56
4.2 Th c Thi Ch ng Trình ng D ng 56
4.2.1 Menu ch ng trình 56
4.2.2 Qu n lý các i t ng d li u 58
4.2.3 Th c thi các hành vi i t ng 58
4.2.4 Thi t l p quan h i t ng và ki m tra tính toàn v n tham chi u 59
Ch ng 5 ng k t 62
Ph l c A Giao di n m t s Form qu n lý i t ng trong ch ng trình ng
ng 63
Ph l c B Mã ngu n ch ng trình ng d ng trong VB Qu n lý m t s i t ng
68
Tài li u tham kh o
Trang 4Ch ng 1 M u
s d li u (CSDL) ã tr thành m t b ph n ch y u, không th thi utrong 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 ngtâ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
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êncho 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, aquan h , hay có th m r ng l u tr các d li u a ph ng ti n nh hình nh, âmthanh, 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 ã, ang, và s ti p t c
c phát tri n, tuy nhiên vi c ng d ng l i òi h i nhi u hi u bi t và công s c, nên
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 i t 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
Trang 5ng 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 i t ng d li u s c xây d ng và qu n lýlà:
• Student: i t ng Sinh viên
• Teacher: i t ng Giáo viên
Trang 6Ch 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 i T ng
s d li u H ng i t ng (Object-Oriented Database) là m t ki uCSDL, mà trong ó, các d li u c l u tr d i d ng các i t ng Hay C s d
nh danh i t ng (Object Identity) óng gói
(Encapsulation)
Truy v n (Query)
Khôi ph c (Recover)
u tr (Archive)
ng b (Concurrency)
Giao tác
(Transaction)
Phiên b n (Versioning)
a hình (Polymorphism)
s d li u H ng i t ng
Hình 1: Các thành ph n c a CSDL h ng i t ng
Trang 7Các u m c a CSDL h óng i t ng, có th th c hi n c là do s d ngcác k thu t c a l p trình h ng i t ng K thu t l p trình H 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 ingô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
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ênang theo h c M t i t ng Sinh viên có th có các quan h v i các i t ngkhá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 i t 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) hayOID 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
Trang 8i 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ácngay 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 Sinhviê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
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 txâ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 i t 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 ngthá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 acá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
Trang 9thu c tính), c n g i các thông p h p l n i t ng, hay yêu c u th c thi các hành
vi c a i t ng
2.2.5 Hành vi i t ng (Behaviour)
Hành vi c a m t i t ng là các thao tác h p l c a chính i t ng ó trêncác thu c tính c a i t ng, c s d ng kh i t o hay thay i các giá tr c athu 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áchà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 Sinhviên có các hành vi getAverageMark() và setName(char Name), l n l t tr v giá trtrung 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 theotham s truy n vào
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 i t ng Sinh viên, ckhai báo trong ngôn ng l p trình C++ nh sau:
class Student {
Trang 10char 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 (DataEncapsulation)
ó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 ctính ã c óng gói trong i t ng Sinh viên, nh vi c tính m trung bình haythi 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
Trang 11Ví d , l p i t 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 trongngô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 {
Trang 12p i t ng Student c th a k t l p Person, và do ó c ng có các thu ctí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 nh ngh a l i hành vigetInfo() c a l p Person
2.2.9 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ácnhau 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 theocá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 tinName, Birthday, Gender, Address, còn i t ng Student có th tr v các thông tinriê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 trongcâ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 vigetInfo() 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 i t ngtrong CSDL, cho phép có th v a nh ngh a l i các hành vi i t ng nh ng v a có
th duy trì, s d ng l i các hành vi i t ng ã có s n, làm t ng kh chuy n gi acác ki u d li u i t ng
Trang 132.3 Chu n CSDL H ng i T 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 sthành công c a h qu n tr CSDL quan h là ã xây d ng c m t chu n SQL chophé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 chungcho 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 chophé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 truy c p c các d li u c l u tr trong các h th ng, hay các CSDL trongcác h th ng khác nhau Chu n CSDL c ng t o cho ng i dùng kh n ng so sánhcác h th ng, các h qu n tr CSDL h ng i t ng khác nhau, d dàng h n trong
vi c l 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 i t ng (Object Model)
• Ngôn ng nh ngh a i t ng (ODL)
• Ngôn ng truy v n i t ng (OQL)
• g n k t (binding) v i các ngôn ng l p trình h ng i t ng
Mô hình ODMG cho phép mô t và bi u di n các thành ph n c b n c s
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:
Trang 14Trong ó, 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 trongCSDL, 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 ngtrong 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 ttê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 ccác i t ng Student t n t i trong CSDL Khi ó, all_Student có th coi là m t mvà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
a t p h 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 i t 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 nkhi 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 ngtrình k t thúc và không c l u trong CSDL
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áng-m, 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àykhô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 i t 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
Trang 15quan h i t ng T khoá interface c s d ng thay cho các t khoá type và
class trong mô hình h ng i t ng c a ngôn ng l p trình, c s d ng cho vi cmiê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 c s
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ó
Trang 16ki u th a k này c g i là “th a k hành vi” (Behaviour Inheritance), và khác v i
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();
Trang 17Cá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 khaibá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;
Collection
Array List Dictionary Bag
Cho phép Null
Có m t Khoá i cùng m i phân t
Cho phép p
Set
u gi
th t Có
Trang 18float getAverageMark();
}
class Class
{
attribute char Name;
attribute Teacher HeadTeacher
attribute Student Monitor
attribute 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 c khai báo trong l p i t ng t ng ng b ng t
khoá relationship, v i c u trúc:
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 haichi 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 i t 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();
Trang 192.3.5 T p ch a lâu b n và khoá i t 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 ngStudent 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 i t ng Student
c t o ra và l u tr trong CSDL
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 pStudent 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 i t ng Ví d khoá chính c a i
ng Student là StudentID Khoá chính là duy nh t, c s d ng cho ng i dùngphân bi t và nh n bi t các i t ng t trong h th ng, khác v i nh danh i t ngOID (OID s d ng cho h th ng nh n bi t các i t ng)
2.4 H Qu n Tr CSDL H ng i T 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ântheo chu n CSDL h ng i t ng ODMG
Trang 20ObjectStore 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 utrú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 (VirtualMemory 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 , chophé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ácquan 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
Trang 21Ch ng 3 Xây D ng CSDL H ng i T ng
3.1 nh Ngh a Các i T ng Trong CSDL B ng ODL
Ngôn ng nh ngh a i t ng (Object Difinition Language - ODL) c s
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 ngkhô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 c cho trong Hình 3
d ng các bi u di n này, l c CSDL Qu n lý H c t p c xây d ng nh trongHình 4
Student(Class)Class:
(Interface)
Relationships:
N:N 1:N 1:1
Inheritance: Interface
Inheritacne (:)
Class Inheritance(extends)
Hình 3: Kí pháp ho cho bi u di n l c ODL
Trang 22d ng ODL, nh ngh a giao di n c a các l p i t ng trong CSDL Qu n
lý H c t p có d ng nh sau:
class Person
(extent all_Person)
{
attribute NameObj Name;
attribute BirthdayObj Birthday;
attribute char Gender;
attribute AddressObj Address;
attribute char Phone;
attribute char Email;
attribute char StudentID;
relationship Class belongToClass inverse Class::hasStudents;
relationship Set<Mark> hasMarks inverse Mark::ofStudent;
Person
TeacherClass
Department
Student
memberOfDep belongToDep
hasClasses hasTeachers
hasStudents
belongToClass
hasMarks ofStudent
hasMarks ofMark
hasSubjects
teachedInClass
is_a is_a
hasTeachers teachSubject
Hình 4: L c CSDL Qu n lý H c t p
Name
Birthday Address
Trang 23attribute 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 NameObj Name;
attribute char Description;
attribute int Unit;
relationship Set<Mark> hasMark inverse Mark::ofSubject relationship Set<Class> teachedInClass inverse Class::hasSubject relationship Set<Teacher> hasTeachers inverse Teacher::teachSubject }
Trang 24class Mark
(extent all_Marks)
{
attribute int Mark1;
attribute int Mark2;
relationship Set<Mark> hasMark inverse Mark::ofSubject relationship Set<Class> teachedInClass inverse Class::hasSubject relationship Set<Teacher> hasTeachers inverse Teacher::teachSubject }
3.2 Thi t K CSDL H ng i T ng B ng ObjectStore Database Designer
ObjectStore PSE Pro cung c p ch ng trình ObjectStore Database Designercho phép thi t k các i t ng d ng các ký pháp ho , giúp thi t k nhanh các i
Trang 25thi t k m t l p i t ng trong ObjectStore Database Designer, s d ngnút ho c menu Class\Add t o m t l p i t ng m i Nh p tên c a l ptrong ô 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
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 ing…) 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
Trang 26thi t k m t ph ng th c c a m t i t ng, trong ph n Properties c a i
d ng ObjectStore Database Designer, các i t ng c a CSDL Qu n Lý
c T p c thi t k nh trong hình sau:
Trang 28Vi c thi t l p quan h m t chi u trong ObjectStore t ng t vi c thi t
p m t thành viên d li u cho i t ng có quan h , và ki u c a thành viên d
li u là l p i t ng c quan h , ho c là m t con tr , m t t p h p con tr ,hay m t vector n l p i t ng ó N u thành viên d li u có ki u là m t l p
i t ng khác, hay i t ng này ch a m t d li u là m t i t ng khác, thì
i t ng c a l p ó chính là m t i t ng ph c h p - Composite Object.Trong ObjectStore, các quan h m t chi u d ng các con tr hay vector trongObjectStore không c m b o toàn v n tham chi u
Ví d : M t i t ng Class có m t thành viên d li u Monitor là m t
i t ng Student N u ch thi t l p quan h m t chi u t l p Class n l pStudent, quan h thu c có d ng nh hình sau:
Trang 29Hình 10: Thi t k quan h M t chi u
Ví d khác: m t ng i có các thu c tính là Name, Birthday và Address,
u coi các thu c tính này c ng là các i t ng, khi ó, các l p i t ng
ng ng là NameObj, BirthdayObj, AddressObj và l p Person s có quan h
t chi u n các l p này nh trong Hình 11 Vi c t o các quan h t ng t
vi c t o thành viên d li u c a l p Person có ki u là m t i t ng khác, do ó
i t ng Person là m t i t ng ph c h p
Trang 30Hình 11: Thi t k quan h m t chi u
v Quan h hai chi u (Bidirectional Relationship):
Trong ObjectStore Database Designer, quan h hai chi u c t o ttrang Properties\Relationship\Add Bidirectional c a m t i t ng tham giaquan h Các quan h c n c thi t l p các giá tr , nh s l ng tham gia c acác l p i t ng (m t-m t, m t-nhi u, nhi u-m t, nhi u-nhi u), l p ngu n,thu c tính c a l p ngu n, l p ích, thu c tính c a l p ích Ngoài ra, n u m t
p i t ng tham gia quan h v i s l ng nhi u, thì l p i t ng có quan
ng c l i ph i thi t l p ki u ch a (Container Type) i v i các i t ng
a l p này Các ki u ch a có th là os_Array, os_Bag, os_Collection, os_List,os_Set Trong l c thi t k , ki u c a các thành viên d li u trong quan hhai chi u là os_relation
Ví d : l p i t ng Class có quan h hai chi u v i l p Student, ki u
quan h là m t-nhi u Thành viên d li u c a l p Class là hasStudents, ki u
ch a là m t t p os_Set các i t ng Student, thành viên d li u c a l p
Trang 31Student là belongToClass Khi ó quan h hai chi u gi a hai l p i t ng
c thi t l p nh trong hình sau:
Hình 12: Thi t k quan h Hai chi u
u ý, ObjectStore Database Designer h tr vi c bi u di n các quan
i t ng d i d ng các kí pháp OMT (Object Modeling Technique) vàUML D u tròn tr ng và en trong OMT t ng ng v i s l ng tham gia là
t và nhi u trong bi u di n UML
t ví d khác cho vi c thi t k quan h hai chi u là quan h nhi u nhi u gi a l p Teacher và l p Department: thành viên d li u c a l p Teacher
-là memberOfDep ch a m t t p các i t ng Department, và thành viên d li u
hasTeachers a l p Department ch a m t t p các i t ng Teacher Quan h
c mô t nh trong hình sau:
Trang 32Hình 13: Thi t l p quan h hai chi u
d ng ObjectStore Database Designer, thi t k các quan h gi a các l p i
ng trong CSDL Qu n Lý H c T p có d ng nh sau:
Trang 33Hình 14: Thi t k quan h trong CSDL Qu n lý H c t p
Sau khi quá trình thi t k hoàn thành, mã ngu n các l p i t ng c n ccài t và biên d ch trong ngôn ng l p trình h ng i t ng xây d ng các i
ng th c thi trong CSDL
3.3 Cài t C S D Li u H ng i T ng
3.3.1 Sinh mã các l p i t ng trong CSDL
Các i t ng th c thi trong CSDL chính là các i t ng d ng mã th c thi
a ngôn ng l p trình h ng i t ng, ã c biên d ch t mã ngu n c a các l p
i t ng xây d ng mã ngu n c a các l p i t ng, có th th c hi n sinh mã(generate) t l c thi t k CSDL trong ObjectStore Database Designer, ho c có th
vi t mã tr c ti p cho các l p i t ng trong ngôn ng l p trình Trong CSDL Qu n lý
c t p, mã ngu n các l p i t ng s c sinh tr c ti p t l c thi t k , d i
ng ngôn ng l p trình C++
Trang 34ObjectStore cung c p m t Component Wizard cho phép sinh mã các l p i
ng t s thi t k trong ObjectStore Database Designer, c nhúng trong môi
tr ng Microsoft Visual C++ T VC++, t o m i m t Project d ng PSE ComponentWizard for C++ c cung c p b i ObjectStore nh minh ho trong hình sau:
Hình 15: ObjectStore PSE Pro Component Wizard
Component Wizard cho phép th c hi n các b c sinh mã các l p ing:
v c 1: L a ch n thi t k c a CSDL, và các l p s c sinh mã.
Các i t ng ã c thi t k s c Component Wizard chuy n i thànhcác i t ng d i d ng ngôn ng l p trình v i y tên, các thành viên d
li u, các ph ng th c và các quan h (Hình 16)
v c 2: thi t l p tên Root và ki u m r ng t ng ng c a các l p.
Component Wizard cho phép l a ch n m t tên Root cho m i l p trong l c thi t k , và ch nh ki u m r ng c a Root M t Root c a m t l p là m t mvào CSDL (Entry Point), ch a t p t t c các i t ng c a l p t ng ng trongCSDL Vi c truy c p n các i t ng c a m t l p trong CSDL có th c
th c hi n thông qua vi c duy t các thành viên trong Root c a l p ó Ki u m
Trang 35ng c a Root có th là các ki u os_Array, os_Bag, os_Collection,os_Dictionary, os_List, os_Set Ví d trong CSDL Qu n lý H c t p, các Root
ó các ng d ng có th c vi t trong môi tr ng Microsoft Visual Basic, truy
xu t, thao tác các i t ng trong CSDL thông qua các ActiveX c a i t ng
li u (Hình 18)
Hình 16: M thi t k CSDL Hình 17: Thi t l p Root
Trang 36t thúc PSE Component Wizard, Project c sinh ra bao g m các th vi nliên k t ng (DLL), mã ngu n các l p i t ng trong CSDL, và các giao di nActiveX c a ObjectStore (OSAX Interface) cho các l p i t ng (Hình 19).
3.3.2 Giao di n các l p i t ng trong CSDL
Sau ây là giao di n minh ho c a các l p i t ng trong CSDL Qu n lý H cp:
Hình 18: L a ch n ki u d án Hình 19: Các thành ph n mã c sinh
Trang 37Hình 20: Minh ho giao di n các l p i t ng trong VC++
p Student (Sinh viên):
class OS_DB_EXT_CLASS Student : public Person
{
public:
Student( int bAddToRoot = 0);
Student(char * _StudentID, char * _Gender, char * _Phone, char * _Email,
Trang 38os_relationship_m_1(Student,hasMarks,Mark,ofStudent,os_Set<Mark*>) hasMarks; os_Set<Mark*> * get_hasMarks(){return &hasMarks.getvalue();};
};
p Teacher (Giáo viên):
class OS_DB_EXT_CLASS Teacher : public Person
{
public:
Teacher( int bAddToRoot = 0);
Teacher(char * _TeacherID, char * _Rank, char * _Gender, char * _Phone,
char * _Email, int bAddToRoot = 0);
Person( int bAddToRoot = 0);
Person(char * _Gender, char * _Phone, char * _Email, int bAddToRoot = 0); virtual ~Person();