Cơ sở dữ liệu quan hệ

Một phần của tài liệu giáo trình ngôn ngữ hóa thống nhất uml (Trang 171 - 195)

- 17

8.1.1 Cơ sở dữ liệu quan hệ

Một CSDL quan hệ, viết tắt là CSDLQH, là một CSDL trong đó dữ liệu được

quan sát dưới dạng các bảng (table). Một hệ QTCSDL quan hệ quản lý các bảng dữ liệu vàcác cấutrúc kếthợpnhằmlàm tăngkhảnăng thựcthi củacácbảng.Cácdạng

chuẩn (Normal Forms) là những nguyên tắc chỉ đạo cho những người thiết kế CSDLQH nhằm làm tăng tính nhất quán củadữ liệu. Khi các bảng thoả mãn những dạngchuẩnbậccaothìdữliệuđượclưutrữtrongchúngsẽđảmbảochínhxáchơn.

Môhìnhquanhệcónhữngđặcđiểmchính:

- 153 -

1. Mô hình đơn giản (Simple model): CSDL là tập các đối tượng trong thế giới thựcđượclưutrữdướidạngbảng.

2. Độc lập với dữ liệu (Data independency):

+Môtảmôhìnhđộc lậpvớiphươngphápcàiđặtvậtlýcủadữliệu +Dữliệukhôngphụthuộcvàocấutrúclogiccủahệthống.

3. Dữ liệu được định nghĩa và truy vấn là phi thủ tục (Non-procedural inquiry

language).

Như chúngtađãbiết,cácCSDLQH đãvàđangđược sửdụng rấthiệuquảtrong nhiều bài toán ứng dụng với những chi phí khá lớn và nhiều ngườiđã có nhiều kinh nghiệm trongthiếtkếvàcàiđặtcácứngdụngtheomôhìnhnày.Tuynhiênnócũngcó nhiềuhạnchế.

1. Khôngmô hìnhđượcnhữnghệ thốnglớn phức tạp,nhất lànhững hệ thốngđa phượngtiện(multimedia).

+Cáckiểuvàcấutrúcdữliệuyếuvàbịhạnchế,

+Rấtkhóthểhiệnđượccácmốiquanhệgiữacácthànhphầndữliệu. 2. Môitrườngpháttriểnvàquản lýchươngtrìnhlàyếu:

+Khôngtínhtoán,điềuphốiđượcmốiquanhệgiữangônngữlậptrìnhvàngôn ngữCSDL.

+ Khôngcó nhữngkhả năngmạnh để tạo lập và không có các chức năng che giấuđểđảmbảoan toàn,anninhdữliệutrongcáchệthốngthôngtin.

8.1.2Cơsởdữliệuhướngđốitượng([5],[14])

Một CSDL hướng đối tượng, viết tắt là CSDL HĐT, được xem như là một kho

bền vữngcác đối tượngđược tạo ra bởimột ngôn ngữ lập trình, hay một hệ quản trị CSDL HĐT. Với một ngôn ngữ lập trình bất kỳ, các đốitượng sẽngừng tồn tại (kết thúc)khichươngtrìnhứngdụngkếtthúc,nhưngtrongCSDLHĐT,cácđốitượngduy trìởbênngoàiphạm vithựchiệncủachươngtrình.Hệ QTCSDL HĐTquảnlýdữliệu, quản lýmãchươngtrìnhvà cáccấutrúckếthợpnhằmthiếtlậpmộtCSDLHĐT.

Khác với cáchệ QT CSDL quan hệ, các hệQTCSDL HĐT khác nhau rất nhiều về cú pháp và các khả năng ứng dụng. Tổ chức chuẩn hoá việc quản lý dữ liệu đối tượngODMG (Object Data Management Group)cố gắngtìm cáchgiảiquyết sựkhác biệt đóbằng cáchthống nhấtđưa ranhững kỹthuật môhìnhhoá đốitượng OMT [7] hayngônngữmôhìnhhoá thốngnhấtUML([1],[2]).

Câuhỏiđặtralà tạisao lạicần CSDLĐT?Đểtrảlờichocâuhỏitrên, tahãytìm hiểuthêmmộtsốđiểmđặctrưngcủacácCSDLĐTkhácsovớiCSDLQH:

Hỗ trợ những kiểu dữ liệu được định nghĩa bởi NSD.CSDLĐTcókhảnăng

lưu trữ các kiểu phức hợp, kiểu được định nghĩa bởi NSD như các lớp và thao táctrên chúngmộtcách dễdàng. Trongkhi CSDLquan hệlưutrữ các giátrị số vàký tựnhưdữliệu, còntrong CSDLHĐT làđốitượng baogồm

- 154 -

thêm cả dữ liệu ảnh (images), tín hiệu (signal), hay hình ảnh động. Trong một đối tượng,dữ liệu và hàm (thao tác) được bao gói thành một cấu trúc đượcgọilàlớp.

Cung cấp một mẫu hình phát triển CSDL cho cả phân tích, thiết kế và cài

đặt ứng dụng.Bạnkhôngphảichuyểntừmẫuhìnhnàysangmẫuhìnhkhác

nhưtrongquátrìnhpháttriểnphầnmềm.

Cải tiến đáng kể về chất lượng dữ liệu.Tacóthểđưaranhiềuràngbuộcvào

cấutrúcdữliệu.Môhìnhcònchophépthểhiệncảnhững ràngbuộcphicấu trúc để chương trình phải thoả mãn khi nó thực hiện trong CSDL. Vấn đề kháquan trọngđặtralàcó thểchuyểnmột CSDLQHcóthểchuyển về một CSDLHĐT[(13)].

Tốc độ phát triển phần mềm nhanh hơn. Cấu trúc CSDL nhất quán và rõ

ràng, giúp cho lập trình ứng dụng trở nên đơn giản và nhanh hơn. Những người phát triểnứng dụng có kinh nghiệm thườngsửdụng nhữngcâu lệnh rấtmạnhcủacáchệQTCSDLthaychonhữngđoạnchươngtrìnhcủaNSD.

Tích hợp dễ dàng.Việctíchhợpnhiềuhệthốngđộclậpvớinhauvàomộthệ

thống ứng dụng có thể giảm bớtsự sao chép dữ liệu của con ngườivà mở rộng phạm vi những câu truy vấn có thể trả lời được. Mô hình hướng đối tượng cung cấp cách biểu diễn thống nhất làm thuận tiện hơn cho việc tìm hiểu vàtíchhợp thôngtin.

8.2 CáchệquảntrịCSDL hướngđốitượng

Hệ QTCSDL HĐT quản lý dữ liệu, mã chương trình và các cấu trúc kết hợp nhằm thiết lậpmộtCSDL HĐT.NhiềuhệQTCSDL HĐT đượcxâydựngcócú pháp, và những khả năngrất khác nhau.Mộtsố hệQTCSDL HĐT phổbiến trên thị trường như: ObjectStore (www.odi.com), GemStore (www.gemstore.com), Objectivity (www.Objectivity.com), O2 (www.ardensoftawre.com), Jasmine (www.cai.com), Versant(www.versant.com)vàPOET(www.poet.com).

8.2.1CácđặctrưngcủahệquảntrịCSDLHĐT

Tacó thểdễ dàngcài đặtcácmô hìnhđối tượng OMT hayUMLbằng những hệ QTCSDL HĐT. Những hệ QTCSDL HĐT cho phépbiểu diễn trực tiếp cho các lớp, thuộc tính,phươngthứcvà quanhệ kế thừatừ cácmô hình đốitượng, từ cácbiểu đồ lớp,mộtsốhệcũngđãhỗtrợ càiđặtnhữngquanhệnhịnguyên.Trongcácchươngsau chúng ta sẽ thảo luận những vấn đề về cài đặt các mô hình UML bằng hệ QTCSDL

HĐT.

Hệ QTCSDL HĐT được phát triển là do sự kém cỏi của các hệ QTCSDL QH trong việctrảlờinhữngcâutruyvấnliênquan đếnđối tượngvàođối tượng.Ngoàira, kiểu dữliệu củacácCSDLQH còn quáđơn giảnđốivới nhiềuứng dụnghiệnthờivà SQL còn khá lúng túng trong việc kết hợp với các ngôn ngữ lập trình. Ngược lại, hệ QTCSDL HĐT hỗ trợ rất nhiều kiểu dữ liệu phong phú và thông thường là kết hợp chặt chẽ với ít nhấtmột ngôn ngữ lập trình.Các hệ QTCSDL HĐT thực hiện nhanh

-155-

hơn những ứng dụng điều khiển từ cácđối tượngvào các đối tượng, hỗ trợ kế thừa, quản lýđịnhdanhđốitượngvànhiềutínhchấtkhác.

Tuynhiên,cáchệQTCSDLHĐTcũngcónhữngyếuđiểm[5]sau:

Thiếu cơ sở lý thuyết và chuẩn hoá.CáchệCSDLQH đượcthiếtkế vàxây

dựng dựatrên môhình đại số quan hệrất chuẩn mực, trong khi các hệ QT CSDL HĐTđược càiđặtnhưng thiếu cơ sởlýthuyếthình thức. Hậuquả là cácsảnphẩmQTCSDLHĐTrấtkhácnhauvàgâyranhiều trởngạichoquá trình pháttriển ứngdụng khikhôngmuốn phụthuộc vào cáchãng sảnxuất phầnmềmhệthống.

Có thể sửa đổi làm sai lệch CSDL. Một số hệ QTCSDL HĐT thực hiện

trong không gian của tiến trình ứng dụng, kết quả là CSDL có thể là chủ điểm dẫn đến vi phạm tính an ninh hoặc dữ liệu bị sửa đổi bởi những con trỏ,thamchiếulạ.

Không có khả năng mở rộng logic. Cácsảnphẩmhiệnnayđềukhôngcósự

độc lậpdữliệu cầnthiếtvàchưacócácquansát(view)CSDLtươngtựnhư cáchệQTCSDLQH.

Chưa hỗ trợ các siêu (meta) ứng dụng. Mộtsố hệ QTCSDL HĐT dựa vào

C++ khôngthựchiệnđược liênkếtđộng,liênkếtlúcthựchiện,màchỉcung cấpliênkếttĩnh,liênkếtlúcdịchchươngtrìnhứngdụng.Hạn chếnàylàdo hạn chế của ngôn ngữ. C++ sử dụng những khai báo về kiểu để sinh mã chươngtrình tốiưutrongquátrình biêndịchvàsauđó huỷbỏ cáckhaibáo đó.Ngược lại, hầuhết cácCSDL QH vànhững hệQTCSDL HĐTdựa vào Smallalkhỗtrợchocảliênkếttĩnhvàliênkếtđộng.

Nói chung,cáchệQTCSDLHĐTcónhữngưuđiểmnhưcủa CSDLHĐTđãnêu trên, các CSDL HĐT là giải pháp thích hợp để khắc phục những yếu điểm của CSDLQH.CáchệQTCSDLHĐTlàthíchhợphơnđốivớinhữngứngdụngmới,như:

Những ứng dụng thiết kế công nghệ.CáchệQTCSDLHĐTrấtphù hợpcho

nhữngchươngtrình thiếtkếứngdụng,nhưthiếtkếvớisựtrợgiúpmáytính (CAD: Computer-Aided Design), chế tạo với sự trợ giúp của máy tính (CAM: Computer-Aided Manufacturing), chế tạo tích hợp với máy tính (CIM: Computer-Integrated Manufacturing), và kỹ nghệ phần mềm với sự trợ giúpcủamáytính(CASE: Computer-Aided Software Engineering).

Các ứng dụng đa phương tiện (Multimedia). Các hệ QTCSDL HĐT rất

videophứchợp.

Các cơ sở tri thức. Cácluật củacáchệ chuyêngia rấtkhólưutrữ trongcác

hệ CSDL QH. Mỗi khi cómột luật mới cần bổ sung thìphải kiểm tra toàn bộcơsởluậtxemtínhphimâuthuẫnvàdưthừacủahệthốngcóbịviphạm haykhông.HệQTCSDLHĐTcóthểhỗtrợ đểthựchiện côngviệctrênkhá hiệuquả.

-156-

Những ứng dụng đòi hỏi xử lý phân tán và tương tranh. Hệ QTCSDL cho

phépthựchiệnnhữngtruynhậpcầnthiếtvào cácdịchvụmứcthấp.

Các phần mềm nhúng. Hệ QTCSDL HĐT thích hợp để tạo ra những phần

mềmnhúngvàocácthiếtbịđiện,cácthiếtbịđiềukhiển,v.v.

8.2.2Giớithiệu vềhệObjectStore

Khác với các CSDLQH, trọng tậm của các chương trình ứng dụng với ObjectStorelà thaotáctrên cácđốitượng. ObjectStorecónhữngđặc trưngchínhnhư sau:

1. Hỗ trợ mô hình đối tượng

ObjectStorehỗtrợtấtcảcáckháiniệmcủamôhìnhđốitượng:

Lớp:Đốitượngvàlớplànhữngkháiniệm trungtâmcủa ObjectStore.Đốitượng hiệnhữutronghệthốngdựavàođịnhdanh.

Các thuộc tính:ObjectStore chophép ánh xạtrựctiếp cácthuộctính vàonhững

cấu trúcxácđịnhcủa ngônngữ lậptrình. Đốivớinhững thuộctínhdẫnxuất, ObjectStorekhônghỗtrợ trựctiếpmàbạnphảiviếtchươngtrìnhđểxácđịnh nhữngthuộctínhđó.

Các phương thức:ObjectStore cung cấpnhững khả năng dịch khá hiệu quả các

phươngthức(hàm)sangmãchương trìnhthựchiệnđược.

Các quan hệ kết hợp: ObjectStore hỗ trợ những quan hệ kết hợp nhị nguyên,

không hỗ trợ những khái niệm nâng cao như các thuộc tính liên kết (link

attributes), lớpkếthợp(association classes).

Kế thừa:ObjectStorehỗtrợcảkếthừađơnvàkếthừabội.

2. Đối tượng bền vững và tạm thời

Đối tượngở trongcác ứng dụngcủa ObjectStorecó thể làbền vững (persistent) hoặc tạm thời (transient). Đối tượng bền vững là đối tượng được lưu trong CSDL và có thể trảiquanhiều ứngdụngkhácnhau. Đối tượng tạm thờilàđối tượng chỉtồn tại trongbộnhớ vàbịbiếnmấtkhiứngdụng kếtthúc. Nhưthế,đốitượngtạm thờilàđối tượnglậptrình thôngthường. Mộtlớpcó thểcó cảđốitượng bềnvững lẫnnhữngđối tượngtạmthời.

CSDL của ObjectStore liên kết các đối tượng bằng các con trỏ bền vững và các tham chiếu (reference). Tham chiếu của ObjectStore không giống như tham chiếu trong C++.Nó làlớpđượctham sốhoá (parameterized class) củaObjectStore, có thể

sử dụng như là con trỏ, nhưng cho phép viết đè đểhạn chế sự tham chiếu trong các CSDLvàtrongcácgiaodịch.

Bạn có thể truy cập các đối tượng tạm thời khi muốn sửdụng những đối tượng lậptrìnhkháchaysửdụngcáctruyvấncủaObjectStore.Cóthểtruycậpđốitượngbền vữngthôngqua gốccủaCSDL(database roots)hoặccáccâutruyvấn.

- 157 -

Loạicontrỏ Contrỏ hợplýkhi

Con trỏ tạm thời trỏ tới đối tượng tạmthời

Chỉkhichươngtrìnhthựchiện

Contrỏtạmthờitrỏtớiđốitượng bền vững

Hợp lệ cho một giao tác hoặc trong khoảng thời gian chạy của một ứng dụng.

Con trỏ bền vững trỏ tới đối tượng bềnvữngtrongcùngmộtCSDL

Luônluônhợplý

Con trỏ bền vững trỏ tới đối tượng bềnvữngtrongcácCSDLkhácnhau

Hợp lý cho một giao tác hoặc nhiều giao tác phụ thuộc vào sự lựa chọn trongứngdụng

Con trỏ bền vững trỏ tới đối tượng tạmthời

Hợplýcho một giaotác. Phảigán giá trịnull chocon trỏhoặcchuyển nó về đối tượngbền vữngtrướckhi giaotác đượcuỷthác.

Bạn có thể tạora nhữngđối tượngbền vữngbằng cáccơ chế của C++ (trongbộ nhớtĩnh,ởStackhaytrênHeap).

Nói chung, tất cảcáctính chấtcủa cáckiểuđều cóthể ápdụng cho cảđối tượng bền vữngvàtạmthời,kểcảquanhệkếthừa.Tuynhiên,tacũngphảituântheomộtsố qui tắc khi sửdụng các con trỏ và tham chiếu tới cácđối tượng trongmột hay nhiều CSDL.

Thư viện lớp là thành phần quan trọng của môi trường phát triển phần mềm hướngđốitượng,trongđócáclớp Collection làquantrọngnhất.

Một Collection làmột đối tượng kết nhập từ nhữngđối tượng khác.Những đối

tượngnàycóthể làđối tượngnguyên thuỷhoặc lạilàtuyển tập nhỏ hơn.ObjectStore hỗ trợ cảnhững tuyển tậpthuần nhất (các phần tửcó kiểu cùng loại) vànhững tuyển tậpkhôngthuầnnhất(cácphầntửcónhiềukiểukhácnhau).

Các Collection được sửdụng cho nhiều mục đích khác nhau. Ta cóthể sử dụng

Collectionđểthểhiện,càiđặtcácquanhệkếthợp.ObjectStorechophéptruyvấntrên

các Collection.Cóthểsử dụng Collectionđể càiđặtnhững thành phầnđiều khiểncác

đốitượng.ObjectStorehỗtrợnhữnglớp Collectionsau:

Set:tuyển tập khôngđược sắp thứ tự và không lặp lại các đối tượng. Chỉ chèn đượcmộtđối tượngvào Setkhitrongđó khôngcó đốitượngđó. Cóthểtruy cậpcácđốitượnglặplạitheothứtựbấtkỳ.

Bag:tuyển tậpkhôngđược sắpthứtựnhưngđượcphéplặplạicácđốitượng.Có thể chèn thêmmộtđối tượngvào Bag. Lấyratừ Bag mộtđối tượnglàgiảm

-158-

đimột lầnxuấthiện củađốitượng đó.Có thểtruycập đếncácđốitượng lặp lạitheothứtựxácđịnh.

List: tuyển tậpđược sắpthứ tựvàđượcphép lặp lạicácđốitượng. Chèn thêm, lấyramộtđốitượng từListđượcthựchiệnởnhữngvịtríxácđịnh củaList.

Cóthểtruycậpđếncácđốitượnglặplạitheothứtựxácđịnh.

Array: tuyển tậpđược chỉ sốhoá, đượcsắp thứ tựvà đượcphép lặp lại cácđối tượng. Khi một đối tượng mảng được tạo lập, tất cả các phần tử của nó là Null. Nhữngphép toán cơbản nhưđọc /ghi đều đượcthựchiện ởnhững vị trí được chỉ số hoá của mảng. Kích thước của mảng làkhông thayđổi. Các đốitượngcủamảngđượctruycậplặplạitheochỉsố.

Dictionary:tuyểntậpkhôngđượcsắpthứtựvàđượcphép lặplạicácđốitượng. Từ điển (Dictionary) khác với những lớptrước đó (Bag) ởchỗ nócho phép liên kếtkhoá với mỗiphần tử. Khoá có thểlàmộtgiá trịcủa contrỏ vàkiểu nàođó trongC++.Chènthêm, lấyramộtđối tượngtừDictionaryđược thực hiện thông qua khoá (key) được gán với các đối tượng. Có thể truy cập đến cácđốitượnglặplạitheothứtựbấtkỳ.

ObjectStorehỗtrợcácphéptoántrêntậphợpđốivớicáclớptuyểntập:hợp,giao,

hiệuvàtuyểntậpcon.

4. Một số đặc tính khác của ObjectStore

ObjectStore có cả những tính năng như các CSDL truyền thống và CSDL phát triển.

+ Khả năng thực hiện đồng thời(concurrency). ObjectStorecó thểđọc/ghi từngtrang trên đĩa (disc page). Cơ chế khoá trang (page locking) là rất hiệu quả của ObjectStore.Tuynhiên,đốivớimộtsốứngdụng,khoátrangcũnghạnchếkhảnăng thựchiệnđồngthờihơnsovớikhoáđốitượng.

+ Khôi phục những phần bị phá vỡ (Crash Decovery).ObjectStore có khảnăng phục hồi dữ liệu và khôiphục những phần việc đãbịđổ vỡcủa phần mềm, máytính và

Một phần của tài liệu giáo trình ngôn ngữ hóa thống nhất uml (Trang 171 - 195)

Tải bản đầy đủ (DOCX)

(195 trang)
w