Giáo trình Cơ sở dữ liệu hướng đối tượng

1. Lịch sử phát triển của Cơ sở dữ liệu hướng đối tượng

Các loại cấu trúc cơ sở dữ liệu và mối liên hệ giữa chúng đóng vai trò rất lớn

trong việc xác định tính hiệu quả của hệ quản trị cơ sở dữ liệu. Vì vậy, thiết kế

cơ sở dữ liệu trở thành hoạt động chính trong môi trường cơ sở dữ liệu.

Việc thiết kế cơ sở dữ liệu được thực hiện đơn giản hơn nhiều khi ta sử dụng

các mô hình. Các mô hình là sự trừu tượng đơn giản của các sự kiện trong thế

giới thực. Các trừu tượng như vậy cho phép ta khảo sát các đặc điểm của các

thực thể và các mối liên hệ được tạo ra giữa các thực thể đó. Việc thiết kế các

mô hình tốt sẽ đưa ra các cơ sở dữ liệu tốt và trên cơ sở đó sẽ có các ứng dụng

tốt. Ngược lại, mô hình không tốt sẽ đưa đến thiết kế cơ sở dữ liệu tồi và dẫn

đến các ứng dụng không đúng.

Một mô hình cơ sở dữ liệu là một tập hợp các khái niệm dùng để biểu diễn

các cấu trúc của cơ sở dữ liệu. Cấu trúc của một cơ sở dữ liệu là các kiểu dữ

liệu, các mối liên kết và các ràng buộc phải tuân theo trên các dữ liệu. Nhiều mô

hình còn có thêm một tập hợp các phép toán cơ bản để đặc tả các thao tác trên

cơ sở dữ liệu.

Các loại mô hình cơ sở dữ liệu:

- Các mô hình dữ liệu bậc cao hoặc mô hình dữ liệu mức quan niệm cung

cấp các khái niệm gắn liền với cách cảm nhận dữ liệu của nhiều người sử

dụng.

- Các mô hình dữ liệu bậc thấp hoặc các mô hình dữ liệu vật lý cung cấp

các khái niệm mô tả chi tiết về việc dữ liệu được lưu trữ trong máy tính

như thế nào.

- Các mô hình dữ liệu thể hiện (mô hình dữ liệu mức logic), chúng cung

cấp những khái niệm mà người sử dụng có thể hiểu được và không xa với

cách tổ chức dữ liệu bên trong máy tính.2

Trong một mô hình dữ liệu cần phải phân biệt rõ giữa mô tả của cơ sở dữ liệu

và bản thân cơ sở dữ liệu.

Sau đây, chúng ta sẽ điểm qua lịch sử phát triển của các mô hình cơ sở dữ

liệu:

- Vào những năm sáu mươi, thế hệ đầu tiên của cơ sở dữ liệu ra đời dưới

dạng mô hình thực thể kết hợp (Entity Relationship Model), mô hình

mạng (Network Model) và mô hình phân cấp (Hierachical Model).

- Vào những năm bảy mươi, thế hệ thứ hai của cơ sở dữ liệu ra đời. Đó là

mô hình dữ liệu quan hệ (Relational Data Model) do EF. Codd phát minh.

Mô hình này có cấu trúc logic chặt chẽ. Đây là mô hình đã và đang được

sử dụng rộng khắp trong công tác quản lý trên phạm vi toàn cầu. Việc

nghiên cứu mô hình dữ liệu quan hệ nhằm vào lý thuyết chuẩn hoá các

quan hệ và là một công cụ quan trọng trong việc phân tích thiết kế các hệ

cơ sở dữ liệu hiện nay. Mục đích của nghiên cứu này nhằm bỏ đi các phần

tử không bình thường của quan hệ khi thực hiện các phép cập nhật, loại

bỏ các phần tử dư thừa.

- Sang thập kỷ tám mươi, mô hình cơ sở dữ liệu thứ ba ra đời, đó là mô

hình cơ sở dữ liệu hướng đối tượng (Object Oriented Data Model), mô

hình cơ sở dữ liệu phân tán, mô hình cơ sở dữ liệu suy diễn,

Giáo trình Cơ sở dữ liệu hướng đối tượng trang 1

Trang 1

Giáo trình Cơ sở dữ liệu hướng đối tượng trang 2

Trang 2

Giáo trình Cơ sở dữ liệu hướng đối tượng trang 3

Trang 3

Giáo trình Cơ sở dữ liệu hướng đối tượng trang 4

Trang 4

Giáo trình Cơ sở dữ liệu hướng đối tượng trang 5

Trang 5

Giáo trình Cơ sở dữ liệu hướng đối tượng trang 6

Trang 6

Giáo trình Cơ sở dữ liệu hướng đối tượng trang 7

Trang 7

Giáo trình Cơ sở dữ liệu hướng đối tượng trang 8

Trang 8

Giáo trình Cơ sở dữ liệu hướng đối tượng trang 9

Trang 9

Giáo trình Cơ sở dữ liệu hướng đối tượng trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 56 trang xuanhieu 5940
Bạn đang xem 10 trang mẫu của tài liệu "Giáo trình Cơ sở dữ liệu hướng đối tượng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Giáo trình Cơ sở dữ liệu hướng đối tượng

Giáo trình Cơ sở dữ liệu hướng đối tượng
replicate, 
 Objects 
 delete (incl. cascaded) 
 Messaging TCP/IP 
Transparency 
 - Primitive types 
 - Strings 
 Language - Arrays 
 constructs - Multi-dimensional arrays 
 - Inner classes 
 - Java/C# collections 
 31 
 - Classes without public constructors 
 - .NET structs 
 - Blobs (stored outside of DB file) 
 - Without deriving from a specific base class. 
 - Without implementing a specific interface. 
 Non-Intrusive 
 - Without modifications to source code. 
 - Without implementing Serializable. 
 Private Fields Storable 
 File I/O Pluggable 
 - Pluggable 
 Reflector 
 - Generic 
 Aliases Class aliasing for class-to-class mappings 
Query Languages / APIs 
 - Native Queries (NQ) 
 Object oriented - Query By Example (QbE) 
 - S.O.D.A. 
 SQL Via replication to many relational databases 
 XML With Third-Party products (e.g., Xstream) 
Modes / Concurrency 
 Operation - Local 
 Modes - Client/Server 
 Threads Multiple 
 32 
 Transactions Multiple, parallel 
 Semaphores Available 
 Read-Only 
 Available 
 Mode 
 Scalability and Performance 
 Performance benchmark Up to 55x faster than Hibernate/MySQL 
 - Stores 200,000 objects/second 
 Examples of Scalability 
 - Stores 300,000 objects on a PDA 
 In Memory Mode Available 
 Client-side Single-process execution available 
 Server-side Server-side query execution available 
 DB-aware Collections Available 
 Object Caching Available 
 Pagination erver-side cursors (lazy queries) 
 - BTree field indexes 
 Indexing 
 - BTree query processor 
3.2. Các loại lớp trong hệ thống đối tượng của DB4o 
 Class Types :Một hệ thống hướng đối tượng được xây dựng từ những lớp có 
ảnh hưởng và tương tác với nhau. Một số thực thể class trong hệ thống mà bao 
gồm các thực thể trừu tượng hóa trong thế giới thực và những lớp khác thì đảm 
nhiệm vai trò khác trong hệ thống. Các loại class được chia thành : 
  Entity classes: Đây là mô hình thực thể hay dữ liệu trong hệ thống. 
 33 
  Boundary classes : Đây thực chất cung cấp các giao diện để tương tác giữa 
 hệ thống với môi trường bên ngoài, thông thường là giao diện người dùng, 
 giao diện có thể là các GUI Component hay web page. 
  Control classes : Lớp điều khiển những luồng trong hệ thống, điển hình là 
 đưa đầu vào từ giao diện người dùng và sử dụng những lớp thực thể để 
 thực hiện ‘business logic’ và lần lượt cung cấp giao diện với kết quả mà 
 người dùng sử dụng trả lại. 
3.3. Object Indentity 
 Trong cơ sở dữ liệu đối tượng và quan hệ đưa nhưng cách tiếp cận khác về 
ý tưởng indentity. Indentity xác định những thực thể được phân biệt với một 
thực thể khác. Trong cơ sở dữ liệu quan hệ, thì thực thể được indentity bởi khóa 
chính và khóa ngoại của dữ liệu. Những mối quan hệ được sử dụng trong những 
câu truy vấn như yêu cầu join giữa hai table với nhau. Indentity phụ thuộc vào 
giá trị của trường khóa. 
 Trong sư tương phản thì một OODBMS lưu trữ một định danh đối tượng 
OID bên trong mỗi đối tượng. OID xác định một đối tượng duy nhất trong 
OODBMS và cũng được dùng để chỉ tham chiếu tới một đối tượng khác tham 
chiếu tới đối tượng đó.OID thông thường là một số và không được hiển thị đối 
với người sử dụng và cơ sở dữ liệu. 
 Hình 4.2 mô tả hai đối tượng được lưu trữ trong cơ sở dữ liệu db4o, dùng 
công cụ objectManager để duyệt dưới dạng đồ thị. Cả hai đối tượng là những 
thể hiện của một lớp person đã được gán OIDs 306 và 1877 tương ứng. OID 
này được gán bởi chương trình cơ sở dữ liệu khi đối tượng đó được lưu vào cơ 
sở dữ liệu. Trong db4o thì OID là một con trỏ vật lý trỏ tới database file. 
 Ở đây ta có một nhận định rằng, OID không liên quan tới bất kỳ một thuộc 
tính nào của đối tượng hay tới class của đối tượng. Có hai vấn đề liên quan tới 
nó: 
  Hai đối tượng có thể phân biệt hoàn toàn dù rằng tất cả các thuộc tính của 
 nó đều giống nhau nhưng chúng có OID hoàn toàn khác nhau, dễ dàng tạo 
 34 
 ra được hai đối tượng với các thuộc tính đồng nhất. Với db4o ta không thể 
 định nghĩa key để đảm bảo tính duy nhất trong hệ thống, cái này thì ứng 
 dụng sẽ quản lý. 
 Một đối tượng được duy trì cùng với đối tượng thậm chí khi trạng thái của 
 nó nhận giá trị mới hoàn toàn. 
 Hình 4.2: Db4o database với hai objects, được view bởi ObjectManager 
 Hình 4.3: Ví dụ databse db4o với tất cả các thuộc tính thay đổi 
 35 
 Hình 4.4. Hai đối tượng person với các thuộc tính 
3.4. Lược đồ cơ sở dữ liệu trong db4o (database schema) 
 Bây giờ ta có thể nhìn thấy nội dung của một cơ sở dữ liệu đối tượng lưu 
trữ một đối tượng person rất đơn giản. Để làm được điều này một thì một 
database schema được định nghĩa hỗ trợ việc lưu trữ dữ liệu. Database schema 
là một cấu trúc của một hệ thống cơ sở dữ liệu. Phần này sẽ mô tả những object 
trong database schema và một số khía cạnh khác nữa. 
 Properties và Relationships: Trong cơ sở dữ liệu quan hệ thì schema được 
định nghĩa là các table và quan hệ giữa các table. Trong cơ sở dữ liệu hướng đối 
tượng thì schema được định nghĩa bởi các classes và các thuộc tính của class và 
quan hệ giữa các đối tượng. 
 Database schema dùng để định nghĩa ngôn ngữ dữ liệu (DDL). Trong cơ 
sở dữ liệu quan hệ thì việc sử dụng DDL như cú pháp tạo table như CREATE 
TABLE để định nghĩa cấu trúc của table . Cũng giống như vậy cơ sở dữ liệu đối 
tượng sử dụng ngôn ngữ định nghĩa đối tượng (ODL) để mô tả cấu trúc của đối 
tượng, nó là một phần trong tiêu chuẩn của ODMG. Ví dụ một databas schema 
sử dụng ODL định nghĩa như sau : 
 class Person 
 { 
 attribute string name; 
 36 
 attribute string dob; 
 attribute string phoneNumber; 
 } 
 Chú ý rằng mặc dù định nghĩa lớp này trông hơi tương tự như định nghĩa 
một lớp trong java hay C#, nó không thực sự chỉ ra là của bất kỳ ngôn ngữ lập 
trình hướng đối tượng nào cả. Nó đơn giản là dùng để định nghĩa một database 
schema. Để truy cập cơ sở dữ liệu từ một ứng dụng thì cần phải sử dụng một 
ngôn ngữ lập trình hướng đối tượng để binding mà cơ sở dữ liệu maps vào các 
class của ngôn ngữ java hay C# và cho phép thực hiện các thao tác và query. 
3.5. Object Relationships 
 Mô hình dữ liệu đối tượng về cơ bản thì cũng như object model, vì thế các 
mối quan hệ của đối tượng được duy trì. 
 Storing OIDs to Represent Relationships những mối quan hệ giữa các đối 
tượng được lưu vào bộ nhớ memory và được duy trì bởi các đối tượng tham 
chiếu tới nhau. Một đối tượng được lưu trữ và cơ sở dữ liệu hướng đối tượng thì 
đối tượng tượng đó luôn được tham chiếu sẵn, vì thế những đối tượng này được 
duy trì những mối quan hệ bằng cách lưu trữ OID của bất kỳ đối tượng nào liên 
quan hay tham chiếu tới đối tượng đó. 
 Trong hình 3.x mô tả một đối tượng được lưu trữ, nó được minh họa dưới 
dạng đồ thị đối tượng (object graph). Có ba đối tượng person và hai đối tượng 
address ,hình 3.x cho thấy một cơ sở dữ liệu db4o chứa năm đối tượng 
này.Phạm vi của class person là ba đối tượng còn phạm vi của class address chỉ 
có hai đối tượng. Đối tượng person ở đây lưu trữ thêm một thuộc tính bổ sung 
đó là thuộc tính address,thuộc tính này sẽ tham chiếu đến đối tượng có trong cơ 
sở dữ liệu và hơn nữa nó là một ký tự giống như các thuộc tính khác 
 37 
 Hình 4.5: Một số object graph của objects 
 Hình 4.6: Các đối tượng trong database db4o 
 Inverse Relationships : Nếu ta nhìn vào đối tượng address thì làm sao ta 
có thể biết được person nào sống ở đó, điều đó là không thể, vì những đối tượng 
address không cất giữ OID tham chiếu đến đối tượng person . Mặt khác nếu ta 
 38 
tìm địa chỉ của một person nào đó thì hoàn toàn có thể xác định được là do đối 
tượng person lưu trữ OID của đối tượn address 
 Hình 4.7: Các đối tượng liên quan trong quan hệ ngược 
 Hình 4.8: Object graph của objects trong quan hệ ngược 
 39 
 Defining the Relationships : Ta có thể dùng ODL để định nghĩa những mối 
quan hệ bên trong một mô hình cơ sở dữ liệu ODMG. ODL định nghĩa mối quan 
hệ ngược lại để giám sát việc thi hành sự toàn vẹn mối quan hệ. Hình 3.x định 
nghĩa class person và address. 
 class Person 
 { 
 attribute string name; 
 attribute string dob; 
 attribute string phoneNumber; 
 relationship Address address 
 inverse Address :: person; 
 } 
 class Address 
 { 
 attribute string street; 
 attribute string city; 
 attribute string country; 
 relationship Person person 
 inverse Person :: address; 
 } 
 Hình 4.9: Định nghĩa class Person và Address trong ODL 
 Có nghĩa là đối tượng person có quan hệ tới đối tượng address và quan hệ 
giữa hai đối tượng này có tên là address, và mối quan hệ ngược address tới 
person 
 Integrity : như chúng ta đã thấy ODL yêu cầu những mối quan hệ ngược để 
giúp đỡ đảm bảo sự toàn vẹn mối quan hệ, tương tự đối với cơ sở dữ liệu quan 
hệ là việc tạo khóa ngoại để tham chiếu tới các entity khác, ràng buộc toàn vẹn ở 
đây là có thể một person không thể không có address 
3.6. Các kiểu quan hệ của đối tượng 
 Trong phần này sẽ trình bày đến mối quan hệ của đối tượng trong ODB 
đó là quan hệ one-to-many và many-to-many hay aggregation và inheritance. 
 40 
 Quan hệ one-to-many : khi lưu trữ một đối tượng thì vấn đề thường liên 
quan tới tập hợp các đối tượng các đối tượng, chẳng hạn như một manager có 
nhiều employee. Trong ODL thì định nghĩa mối quan hệ một nhiều được mô tả 
như hình dưới đây. 
 Class Manager{ 
 attribute string name; 
 attribute string department; 
 relationship set employees 
 inverse Employee :: manager; 
 } 
 class Employee 
 { 
 attribute string name; 
 attribute string dob; 
 attribute string phoneNumber; 
 relationship Manager manager 
 inverse Manager :: employees; 
 } 
 Hình 4.10: Định nghĩa clas Manager và Employee trong ODL 
 Với db4o, những định nghĩa lớp trong lược đồ ODB có thể có hay không 
các mối quan hệ ngược lại. 
 41 
 Hình 4.11: Quan hệ One-to-many 
 Hình 4.12: Object graph trong quan hệ one-to-many 
 Quan hệ many-to-many :Một mối quan hệ many-to-many được sinh ra nếu 
như employee có thể có nhiều project và ngược lại trong project có thể có nhiều 
employee khi đó quan hệ many-to-many được sinh ra. Kiểu mối quan hệ này chỉ 
 42 
khả dĩ trong một cơ sở dữ liệu quan hệ nếu như hai bảng join với nhau, và được 
thẳng thắn hơn trong cơ sở dữ liệu hướng đối tượng. Mỗi một đối tượng đơn đều 
được cất giữ bởi một OID để xác định cho các đối tượng liên quan. Trong OQL 
mối quan hệ many-to-many được mô tả như hình sau : 
 class Project 
 { 
 attribute string name; 
 attribute string costCode; 
 relationship set employees 
 inverse Employee :: projects; 
 } 
 class Employee 
 { 
 attribute string name; 
 attribute string dob; 
 attribute string phoneNumber; 
 relationship set projects 
 inverse Project :: employees; 
 } 
 Hình 4.13: Định nghĩa class Project và Employee trong ODL 
 Với db4o thì những định nghĩa lớp là thành phần cấu tạo lên lược đồ ODB. 
Trong trường hợp này mối quan hệ ngược lại trở nên rất hữu ích, nhưng đó là sự 
chính xác không cần thiết. Với ví dụ này nếu như ta cần tìm employee trong 
project và không một project nào có employee thì khi đó không cần đối tượng 
employee lưu trữ OID để tham chiếu tới đối tượng project. Vì vậy trong quan hệ 
many-to-many thì đối tượng project cần lưu trữ OID để tham chiếu tới đối tượng 
employee và đối tượng employee cũng vậy. 
 43 
Hình 4.14: Minh họa object graph với quan hệ many-to-many 
 44 
 Hình 4.15: Quan hệ Many-to-many sử dụng mối quan hệ ngược 
4. Truy vấn dữ liệu đối tượng trực tiếp bằng tool hoặc dos 
 Có thể truy vấn dữ liệu đối tượng trực tiếp bằng tool hoặc thông qua lệnh 
DOS 
 45 
 BÀI 5: TÍCH HỢP DỮ LIỆU HƯỚNG ĐỐI TƯỢNG TRÊN MÔI 
 TRƯỜNG PHÁT TRIỂN ỨNG DỤNG .NET 
1. Cài đặt tích hợp môi trường 
 Để giảm gánh nặng thao tác trên nhiều ngôn ngữ khác nhau và cải thiện 
năng suất lập trình, Microsoft đã phát triển giải pháp tích hợp dữ liệu cho .NET 
Framework có tên gọi là LINQ (Language Integrated Query), đây là thư viện mở 
rộng cho các ngôn ngữ lập trình C# và Visual Basic.NET (có thể mở rộng cho 
các ngôn ngữ khác) cung cấp khả năng truy vấn trực tiếp dữ liệu Object, cơ sở 
dữ liệu và XML. 
 Điểm mạnh của LINQ là “viết truy vấn cho rất nhiều các đối tượng dữ 
liệu”, từ cơ sở dữ liệu, XML, Data Object  thậm chí là viết truy vấn cho một 
biến mảng đã tạo ra trước đó. Vì thế ta có các khái niệm như là LinQ to SQL, 
LinQ to XML,. 
 Các thành phần của LINQ 
 Hình 5.1: Kiến trúc của LINQ trong .NET Framework 3.5 
 46 
 LINQ to Objects 
 “LINQ to Objects” ở đây có nghĩa là nói đến cách sử dụng LINQ đối với 
các đối tượng Collection mà đã được thực thi giao diện IEnumerable hoặc 
IEnumerable tức những Collection có thể “liệt kê” ra được. Đây là trường 
hợp sử dụng đơn giản nhất của LINQ khi làm việc với dữ liệu. 
 LINQ to SQL 
 LINQ to SQL là một phiên bản hiện thực hóa của O/RM (object relational 
mapping) có bên trong .NET Framework 3.5, nó cho phép bạn mô hình hóa một 
cơ sở dữ liệu dùng các lớp .NET. Sau đó bạn có thể truy vấn cơ sở dữ liệu dùng 
LINQ, cũng như cập nhật/thêm/xóa dữ liệu từ đó. 
 LINQ to SQL hỗ trợ đầy đủ transaction, view và các stored procedure (SP). 
Nó cũng cung cấp một cách dễ dàng để thêm khả năng kiểm tra tính hợp lệ của 
dữ liệu và các quy tắc vào trong mô hình dữ liệu của bạn. 
 LINQ to XML 
 Sử dụng LINQ với mục đích truy vấn file XML và tiện lợi truy vấn hơn 
nhiều so với việc dùng XmlDocument, Xpath và Xquery như trước kia. 
 LINQ to Datasets 
 DataSet trong ADO.NET là một bước phát triển lớn trong việc phát triển 
ứng dụng cơ sở dữ liệu đa hệ. Khi lấy và chỉnh sửa dữ liệu, duy trì liên tục kết 
nối tới Data Source trong khi chờ user (người dùng) yêu cầu thì rõ ràng là tốn tài 
nguyên máy rất nhiều. 
 DataSet giúp ích ở đây rất lớn. Vì DataSet cho phép lưu trữ dữ liệu và 
chỉnh sửa tại ‘local cache’, hay gọi là offline mode. Có thể xem xét và xử lý 
thông tin trong khi ngắt kết nối. Sau khi chỉnh sửa và xem xong thì tạo một kết 
nối và update dữ liệu từ local vào Data Source. 
 Dữ liệu trong DataSet được lưu trữ dưới dạng một Collection các Tables và 
bạn cần phải xử lý thông qua các lớp DataTable (DataRow và DataColumn). 
 47 
 Hình 5.2: Kiến trúc DataSet 
 LINQ to DataSet cho phép người lập trình sử dụng DataSets như một 
nguồn dữ liệu bình thường bằng các cú pháp truy vấn căn bản của LINQ 
2. Cài đặt mô hình dữ liệu hướng đối tượng bằng ngôn ngữ .Net (Visual, 
 C#) 
 Kết nối đến CSDL 
 - View -> Server Explorer 
 - Kích phải chuột lên DataConnection -> Add Connection 
 Hình 5.3: Kết nối đến cơ sở dữ liệu 
 48 
Tạo ra mô hình dữ liệu LINQ TO SQL 
 Hình 5.4: Tạo mô hình LinQ to SQL 
 49 
3. Biên dịch lược đồ (diagram) 
 Mô hình ánh xạ 
 Hình 5.5: Mô hình ánh xạ LinQ to SQL 
4. Xây dựng ứng dụng cho phép truy xuất dữ liệu đối tượng 
 Hiệu chỉnh đường kết nối trong file web.config: 
 50 
Các thành phần của lớp DataContext: 
 51 
Các truy vấn: 
 52 

File đính kèm:

  • pdfgiao_trinh_co_so_du_lieu_huong_doi_tuong.pdf