1. Trang chủ
  2. » Công Nghệ Thông Tin

Cơ Sở Dữ Liệu Hướng Đối Tượng

77 569 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 77
Dung lượng 2,88 MB
File đính kèm CSDLobject.rar (3 MB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

http://phuongdongict.net

Trang 2

Ch 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 3

3.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 4

Ch 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 5

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 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 6

Ch 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 7

Cá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 8

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á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 9

thu 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 10

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 (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 11

Ví 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 12

p 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 13

2.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 14

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 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 15

quan 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 16

ki 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 17

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 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 18

float 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 19

2.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 20

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 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 21

Ch 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 22

d 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 23

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 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 24

class 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 25

thi 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 26

thi 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 28

Vi 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 29

Hì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 30

Hì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 31

Student 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 32

Hì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 33

Hì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 34

ObjectStore 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 35

ng 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 36

t 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 37

Hì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 38

os_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();

Ngày đăng: 27/03/2017, 10:58

HÌNH ẢNH LIÊN QUAN

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: - Cơ Sở Dữ Liệu Hướng Đối Tượng
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: (Trang 6)
Hình 4: L c   CSDL Qu n lý H c t p - Cơ Sở Dữ Liệu Hướng Đối Tượng
Hình 4 L c CSDL Qu n lý H c t p (Trang 22)
Hình 6: T o l p và thành viên d  li u - Cơ Sở Dữ Liệu Hướng Đối Tượng
Hình 6 T o l p và thành viên d li u (Trang 25)
Hình 7: T o các ph ng th c l p - Cơ Sở Dữ Liệu Hướng Đối Tượng
Hình 7 T o các ph ng th c l p (Trang 26)
Hình 10: Thi t k  quan h  M t chi u - Cơ Sở Dữ Liệu Hướng Đối Tượng
Hình 10 Thi t k quan h M t chi u (Trang 29)
Hình 11: Thi t k  quan h  m t chi u - Cơ Sở Dữ Liệu Hướng Đối Tượng
Hình 11 Thi t k quan h m t chi u (Trang 30)
Hình 12: Thi t k  quan h  Hai chi u - Cơ Sở Dữ Liệu Hướng Đối Tượng
Hình 12 Thi t k quan h Hai chi u (Trang 31)
Hình 13: Thi t l p quan h  hai chi u - Cơ Sở Dữ Liệu Hướng Đối Tượng
Hình 13 Thi t l p quan h hai chi u (Trang 32)
Hình 14: Thi t k  quan h  trong CSDL Qu n lý H c t p - Cơ Sở Dữ Liệu Hướng Đối Tượng
Hình 14 Thi t k quan h trong CSDL Qu n lý H c t p (Trang 33)
Hình 15: ObjectStore PSE Pro Component Wizard - Cơ Sở Dữ Liệu Hướng Đối Tượng
Hình 15 ObjectStore PSE Pro Component Wizard (Trang 34)
Hình 20: Minh ho  giao di n các l p  i t ng trong VC++ - Cơ Sở Dữ Liệu Hướng Đối Tượng
Hình 20 Minh ho giao di n các l p i t ng trong VC++ (Trang 37)
Hình 23: Tham chi u  n các thành ph n ActiveX c a CSDL - Cơ Sở Dữ Liệu Hướng Đối Tượng
Hình 23 Tham chi u n các thành ph n ActiveX c a CSDL (Trang 50)
Hình 24: T o giao di n t ng tác v i  i t ng Student - Cơ Sở Dữ Liệu Hướng Đối Tượng
Hình 24 T o giao di n t ng tác v i i t ng Student (Trang 51)
Hình 29: Thi t l p quan h  hai chi u, ki m tra chi u ng c l i - Cơ Sở Dữ Liệu Hướng Đối Tượng
Hình 29 Thi t l p quan h hai chi u, ki m tra chi u ng c l i (Trang 61)
Hình 30: Thi t l p và ki m tra các quan h - Cơ Sở Dữ Liệu Hướng Đối Tượng
Hình 30 Thi t l p và ki m tra các quan h (Trang 62)

TỪ KHÓA LIÊN QUAN

w