Theo hướng tiếp cận này, OODB mang những đặc trưng nhưđã được trình bày ở trên, ngoài ra nó còn mang thêm một số đặc trưng khác nữanhư : Khả năng mở rộng Extensibility: hệ thống được thi
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Lương Văn Dũng
Đỗ Văn Khang
TÌM HIỂU CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG
Báo cáo môn cơ sở dữ liệu nâng cao
HÀ NỘI -2012
Trang 2M c l c ục lục ục lục
Lời mở đầu 1
Chương 1 Cơ sở dữ liệu hướng đối tượng 2
1 Giới thiệu phương pháp tiếp cận hướng đối tượng 2
1.1 Các khái niệm 2
2 Cơ sở dữ liệu hướng đối tượng 4
2.1 Giới thiệu chung 4
2.2 Các đặc trưng trong cơ sở dữ liệu hướng đối tượng 4
2.3 Quản lý lưu trữu dữ liệu 6
2.4 So sánh cơ sở dữ liệu hướng đối tượng và cơ sở dữ liệu quan hệ 6
Chương 2 Mô hình đối tượng 8
2.1 Giới thiệu 8
2.2 Types: Specifications and Implementation 9
2.2.1 Subtyping và kế thừa hành vi 10
2.2.2 Kế thừa trạng thái 11
2.2.3 Keys 12
2.3 Objects 12
2.3.1 Object creation 12
2.3.2 Object identifiers 12
2.3.3 Object names 13
2.3.4 Object lifetimes 13
2.3.5 Collection objects 13
2.4 Literals 14
2.4.1 Literal types 14
2.4.2 Copying literals 15
2.4.3 Comparing literals 15
Trang 32.4.4 Literal equivalence 15
2.5 Mô hình dựa trên trạng thái đối tượng (Modeling State - Properties) 16
2.5.1 Attribute 16
2.5.2 Relationships 16
Chương 3 Thiết kế cơ sở dữ liệu hướng đối tượng 17
3.1 Thiết kế khái niệm (UML) 17
3.2 Thiết kế lược đồ tiêu chuẩn 18
3.3 Xây dựng cơ sở dữ liệu hướng đối tượng 19
Trang 5Lời mở đầu
Cơ sở dữ liệu là một thành phần không thể thiếu trong việc phát triển các ứngdụng phục vụ cho các bài toán khác nhau Và, cơ sở dữ liệu được sử dụng ở đây chủ yếu
là cơ sở dữ liệu quan hệ Tuy nhiên, hệ cơ sở dữ liệu quan hệ không đáp ứng được một
số bài toán mang tính chất phức tạp như các ứng dụng dùng trong thiết kế, sản xuất côngnghiệp (CAD/CAM và CIM), các thí nghiệm khoa học, viễn thông, hay multimedia, GIS.Các ứng dụng này có tính chất phức tạp hơn, thời gian thực thi transaction lâu, kiểu dữliệu lưu trữ Và cơ sở dữ liệu hướng đối tượng ra đời được xem là phù hợp để đáp ứngnhững nhu cầu của các loại ứng dụng này Việc tiếp cận hướng đối tượng sẽ tạo ra tínhlinh động để xử lý một số yêu cầu mà không bị hạn chế bởi các kiểu dữ liệu và ngôn ngữtruy vấn có sẵn trong hệ cơ sở dữ liệu quan hệ
Trang 6Chương 1 Cơ sở dữ liệu hướng đối tượng
1 Giới thiệu phương pháp tiếp cận hướng đối tượng
1.1 Các khái niệm
Khái niệm về một đối tượng là khái niệm được sinh ra từ việc nhận thức
thực tế Một đối tượng có các đặc tính sau:
Mang tên duy nhất, không thay đổi
lý mới của đối tượng Hoặc có thể sử dụng biến số kiểu Long Integer làm OID, sau
đó sử dụng hàm băm để ánh xạ giá trị OID đến địa chỉ vật lý của đối tượng
Lớp đối tượng: một lớp đối tượng có giao diện và miền riêng của nó Giao
diện của đối tượng là cái mà các đối tượng khác có thể nhìn thấy được
Giao diện của đối tượng bao gồm 2 thành phần:
Thuộc tính của lớp: trong một chừng mực nào đó, các thuộctính của lớp được coi là tương đương với các thuộc tính của quan hệ Thông quathuộc tính của lớp, người ta có thể thể hiện các liên kết giữa các đối tượng Tronglớp, không có hạn chế gì về cách thức cấu trúc đối tượng hay cách liên kết thuộctính với nhau Các thuộc tính có thể là một đối tượng, dùng để tạo đối tượng phứctạp hơn Người ta không xử lý trực tiếp các giá trị thuộc tính của đối tượng mà xử
lý thông qua phương pháp liên kết với lớp đối tượng
Phương thức gắn kết đối tượng: các thông báo được chuyểndến lớp đối tượng nhờ phương thức gắn kết đối tượng Chúng thường có dạng làcác phép toán, các hàm với các tham số khác nhau Các đối tượng trong lớp có thểđược truy cập thông qua phương thức và các tham số cần cho phương thức này
Miền của lớp đối tượng là phần xác định lớp, nhưng không hiện ra cho đối
tượng khác thấy Miền này có thể bao gồm thông tin chi tiết về cấu trúc của lớpđối tượng Trong chương trình, người ta có thể cài đặt che giấu các giá trị, ngày cảviệc che giấu các liên kết cũng như các thông báo Việc bảo vệ thông tin làm việc
Trang 7bên trong cùng với các giá trị đối tượng trước các sử dụng thông thường được gọi
là che giấu thông tin
Một khái niệm quan trong nữa là bao bọc, có nghĩa là mọi vấn đề về đối
tượng được nhận biết thông qua định nghĩa lớp đối tượng Người ta truy cập kháiniệm nhờ giao diện và xác định các hành vị thông việc xác định lớp
1.1.1 Tính kế thừa (Inheritance)
Khái niệm kế thừa là một khái niệm quan trọng trong hướng tiếp cận hướngđối tượng Người ta thường sử dụng thuật ngữ này khi chỉ định lớp đối tượng nàytiếp thu, kế thừa các thuộc tính của lớp đối tượng khác Tuy nhiên, mỗi lớp con cóthể mang một số thuộc tính hay phương thức riêng Một lớp có thể kế thừa từnhiều lớp khác nhau Điều này làm cho việc xây dựng các lớp dữ liệu cho hệ thống
sẽ dễ dàng hơn và sử dụng lại các lớp dữ liệu đã có khi tạo ra lớp dữ liệu mới
1.1.2 Tính đóng gói (Encapsulation)
Đây là một cơ chế được kế thừa từ ngôn ngữ lập trình hướng đối tượng.Tính đóng gói được xem là lớp vỏ bọc bảo vệ các mã lệnh bên trong và tránh sựtruy cập tùy tiện từ các mã lệnh khác Việc truy cập sẽ được điều khiển một cáchchặt chẽ thông qua các phương thức được định nghĩa trước Các phương thức nàyđược các đối tượng khác nhìn thấy, tuy nhiên các dữ liệu và cách thực hiện thìđược ẩn giấu bên trong đối tượng và trong suốt với các đối tượng khác
1.1.3 Tính đa hình (Polymorphism )
Đây là đặc điểm cho phép một đối tượng có thể được sử dụng cho nhiều đốitượng khác nhau, thông qua việc thực thi phương thức bên trong Điều này sẽ làmgiảm độ phức tạp của chương trình
1.1.4 Tính trừu tượng (Abstraction)
Một đối tượng chỉ mang những đặc điểm cần thiết nhưng lại không mangnhững chi tiết cụ thể bên trong nó Đối tượng này được tạo ra để mang những đặctính tổng quát nhưng bản thân nó không mang ý nghĩa hay đầy đủ ý nghĩa để cóthể tạo ra một đối tượng cụ thể từ nó
1.1.5 Đối tượng phức hợp (Complex Objects)
Đối tượng phức hợp được xây dựng từ những kiểu đối tượng đơn giản hơnbằng cách sử dụng lại chúng Các đối tượng đơn giản là những đối tượng kiểu như
số nguyên, ký tự, chuỗi, hay logic… Có nhiều đối tượng phức tạp như: tuples,sets, bags, lists, arrays
1.1.6 Nạp chồng, ghi đè và liên kết muộn (Overriding, overloading and late binding)
Trang 8Overriding là việc định nghĩa lại một phương thức nào đó từ đối tượng cơsở.
Overloading: sử dụng cùng một phương thức nhưng lại có cách thức thựcthi khác nhau, và cho ra kết quả khác nhau trong các chương trình ứng dụng
Một chức năng mới trong OODB, hệ thống có thể không có ràng buộc tênphương thức thực thi cho các chương trình biên dịch Qua đó, tên của phương thức
sẽ được dịch trong thời gian chạy chương trình Và việc dịch chậm này được gọi làliên kết muộn
2 Cơ sở dữ liệu hướng đối tượng
2.1 Giới thiệu chung
Các CSDL quan hệ, theo các bảng chiếm tỷ lệ cao, khoảng 70%, trên thịtrường phần mềm ứng dụng Các dữ liệu được xử lý thuộc loại số, ký tự Còn lạicác dữ liệu phức tạp như văn bản, đồ hoạ, bản đồ, hình ảnh, dữ liệu nhiều chiều vàcác dữ liệu động như chương trình, mô phỏng quá trình…trong CAD, văn phònghọc, hệ chuyên gia…thì người ta không chỉ dùng CSDL quan hệ mà giải quyếtđược Mô hình đối tượng hay mô hình hướng đối tượng rất đa dạng Nó gồmnhững mạng ngữ nghĩa và các ngôn ngữ lập trình hướng đối tượng Chúng chophép mô hình hoá những đối tượng phức tạp có được trong các thủ tục xử lý
Dù có nhiều ngôn ngữ hướng đối tượng, đa số các CSDL hướng đối tượngdựa trên C++, lựa chọn này là do tính hiệu quả và thông dụng của C++ Thực tếcho thấy CSDL hướng đối tượng có những ưu điểm:
Cho phép xét các liên kết đối tượng dưới dạng các phép lưu trữ vớicác đối tượng
Các đối tượng được dùng chung giữa nhiều người sử dụng
Khả năng phát tiển kho tri thức bằng cách thêm mới các đối tượng
và các phép xử lý kèm theo
Phát triển hệ quản trị CSDL dựa trên việc xử lý các đối tượng phứctạp, giao diện chương tình, đối tượng động và trừu tượng
2.2 Các đặc trưng trong cơ sở dữ liệu hướng đối tượng
Các đặc trưng trong cơ sở dữ liệu hướng đối tượng được tách làm ba nhómchính sau:
Đặc trưng mang tính bắt buộc (Mandatory)Đặc trưng mang tính tùy chọn (Optional)Đặc trưng mang tính mở (Open)
Đặc trưng mang tính bắt buộc (Mandatory): đây là những đặc trưng mà ở
hệ OODB nào cũng phải đáp ứng được OODB được xây dựng dựa trên nền tảng
Trang 9của ngôn ngữ lập trình hướng đối tượng, nên nó mang những đặc trưng vốn có ởloại ngôn ngữ này Theo hướng tiếp cận này, OODB mang những đặc trưng như
đã được trình bày ở trên, ngoài ra nó còn mang thêm một số đặc trưng khác nữanhư :
Khả năng mở rộng (Extensibility): hệ thống được thiết lập các kiểu
dữ liệu có sẵn, người sử dụng dựa vào đó có thể tự định nghĩa ra kiểu dữ liệu mới,khi sử dụng kiểu dữ liệu mới này thì hệ thống sẽ không có sự phân biệt với kiểu
dữ liệu cơ bản vốn có
Khả năng bảo toàn (Persistence): cho phép hệ thống bảo toàn dữ
liệu trong quá trình thực hiện, đối tượng có thể được sử dụng cùng lúc bởi quátrình khác, và cung cấp khả năng tái sử dụng
Tính toán đầy đủ (Computationally complete): ngưởi sử dụng có thể
thực hiện bất ký chức năng tính toán nào, bằng cách sử dụng các DML của hệthống
Quản lý lưu trữ thứ cấp (Secondary storage management): dữ liệu
được hệ thống quản lý để truy cấp nhanh và dễ dàng hơn Việc lưu trữ dữ liệuđược sử dụng bởi các kỹ thuật khác nhau như: phân nhóm dữ liệu, đánh chỉ mục,tối ưu hóa truy vấn, tạo bộ đệm dữ liệu và lựa chọn đường truy cập Những kỹthuật này là trong suốt với người sử dụng
Truy cập đồng thời (Concurrency) hệ thống cung cấp cùng lúc cho
nhiều người sử dụng cùng truy cập tới một dữ liệu.Hệ thống cũng quản lý việc xảy
ra các lỗi hệ thống hay chưa hoàn thành các transaction
Phục hồi (Recovery) tính năng này cung cấp khả năng khôi phục lại
trạng thái ban đầu nến hệ thống bị lỗi phần cứng hoặc phần mềm
Ngôn ngữ truy vấn (Ad Hoc Query Facility): một hệ OODB phải
cung cấp ngôn ngữ để thực hiện truy vấn dữ liệu Một ngôn ngữ truy vấn phải đảmbảo ba tiêu chí sau đây: (i) nên có cấp độ (high level) (ii) tính hiệu quả, xây dựngcác truy vấn tối ưu, (iii) ứng dụng độc lập, có thể hoạt động trên bất kỳ cơ sở dữliệu hướng đối tượng nào
Đặc trưng mang tính tùy chọn (Optional): những đặc trưng này mang tính
chất để cải thiện hệ thống, nhưng ko bắt buộc phải có trong hệ thống Một số đặctrưng này có tính chất hướng đối tượng như đa kế thừa Các tính năng khác là tínhnăng của cơ sở quan hệ Tuy nhiện được cải thiện nhằm vào mục đích mới phục
vụ những ứng dụng như CAD/CAM, CASE, văn phòng tự động Chúng bao gồmnhững đặc tính như : đa kế thừa (có thể có nhiều giải pháp để đối phó với vấn đềgiải quyết xung đột); kiểu checking và inferencing (type checking sẽ được thực
Trang 10hiện trong thời gian biên dịch, số lượng type inferencing được để mở đối với nhàthiết kế hệ thống), phân tán (đặc tính này trực giao với tính hướng đối tượng của
hệ thống, qua đó hệ thống có thể được phân tán hoặc không), thiết kế transaction(hệ OODB hỗ trợ nhiều kiểu thiết kế transaction dài hoặc lồng nhau), versions(trong các ứng dụng mới như CAD/CAM và CASE liên quan tới hoạt động thiết
kế và yêu cầu hình thức của versioning)…
Đặc trưng mang tính mở (Open) đặc trưng này liên quan tới vấn đề lập
trình và thể hiện hệ thống Có rất nhiều sự lựa chọn khi thiết kế để cải thiện môhình để xây dựng lên một hệ thống tốt, nó bao gồm các lựa chọn: hệ thống; lậptrình mô hình; thể hiện hệ thống và đồng nhất
2.3 Quản lý lưu trữu dữ liệu
Việc lưu trữ dữ liệu được sử dụng bởi các kỹ thuật khác nhau như: phânnhóm dữ liệu, đánh chỉ mục, tối ưu hóa truy vấn, tạo bộ đệm dữ liệu và lựa chọnđường truy cập Mỗi đối tượng có một OID duy nhất và được định nghĩa là mộtlớp con của một lớp cơ sở, sử dụng tính kế thừa để xác định các thuộc tính Bản đồ
bộ nhớ ảo được sử dụng cho việc lưu trữ và quản lý các đối tượng Việc truyền dữliệu được thực hiện trên cơ sở mỗi đối tượng hoặc trên cơ sở một trang
2.4 So sánh cơ sở dữ liệu hướng đối tượng và cơ sở dữ liệu quan hệ
Một đối tượng cơ sở dữ liệu có cấu trúc phức tạp, các mối quan hệ giữa các
dữ liệu là trực tiếp, không liên quan tới các hàng, các cột nhưng trong cơ sở dữliệu quan hệ, điều này làm cho chúng phù hợp với các ứng dụng xử lý dữ liệu rấtphức tạp Đối tượng có nhiều mối quan hệ và được truy cập bằng cách sử dụngcon trỏ Con trỏ liên kết các đối tượng với nhau để thiết lập các mối quan hệ Mộtđiểm mạnh của hệ OODB là nó có thể được lập trình với sự khác biệt về thủ tục
mà không ảnh hưởng đến toàn bộ hệ thống Điều này rất hữu ích cho những mốiquan hệ dữ liệu không rõ ràng hoặc cần phải thay đổi các mối quan hệ để đáp ứngcác yêu cầu mới
Điểm mạnh của hệ OODB:
Đối tượng không cần phải khởi tạo và hủy điều này sẽ tiết kiệm thời gianlập trình và thời gian để xử lý
Giảm việc phân trang
Dễ dàng chuyển hướng
Kiểm soát đồng thời tốt hơn – phân cấp các đối tượng
Mô hình dữ liệu được dựa trên thế giới thực
Hoạt động tốt với các kiến trúc phân tán
Trang 11Tốn ít công lập trình với các ứng dụng hướng đối tượng.
Điểm yếu của hệ OODB:
Hiệu quả thấp hơn khi dữ liệu đơn giản và các mối quan hệ đơn giản
Bảng quan hệ đơn giản
Các ràng buộc cuối sẽ làm giảm tốc độ truy cập
Có nhiều công cụ cho người sử dụng RDBMS + tiêu chuẩn cho RDBMS ổnđịnh hơn nên hệ OODB ít có khả năng được yêu cầu sử dụng nếu ứng dụng đókhông đặc thù
Trang 12Chương 2 Mô hình đối tượng
2.1 Giới thiệu
Mô hình đối tượng là chiến lược tổ chức các hệ thống như là tuyển tập các đốitượng tương tác, phối hợp với nhau về dữ liệu và các hành vi ứng xử Trong đó, đốitượng là thể hiện của một đại diện một lớp Lớp là một mô tả về một nhóm đối tượng cónhững tính chất giống nhau, có cùng mối liên quan với các đối tượng khác và có chungngữ nghĩa với hệ thống Theo đó, các đối tượng thể hiện thông tin về trạng thái của đốitượng, còn các phương thức được xem như là đặc tính mô tả hành vi của chúng Thuộctính và phương thức của đối tượng là một trong những khái niệm trung tâm của mô hình
cơ sở dữ liệu hướng đối tượng
Cấu trúc của một mô hình đối tượng, cấu trúc này được hỗ trợ bởi một hệ quản trị
cơ sở dữ liệu hướng đối tương:
Các mô hình nguyên thủy cơ bản là object và literal Mỗi object thì có một
giá trị định danh duy nhất Một literal thì không có định danh cụ thể nào
Object và literal có thể được phân theo kiểu (types) Tất cả các yếu tố của
một type nhất định có chung một trạng thái (cùng properties), chung hành vi (cùngoperations) Một đối tượng thình thoảng được gọi là một thể hiện của type của nó
Các trạng thái của đối tượng được định nghĩa bởi các giá trị mang trongmột bộ proper-ties Các tính chất này có thể là thuộc tính của chính nó hoặc thể hiện mốiquan hệ với một hoặc nhiều đối tượng khác Thông thường, các giá trị này có thể thay đổitheo thời gian
Các hành vi của một đối tượng được xác định bởi tập hợp các hoạt động cóthể được thực hiện bởi đối tượng đó
Một hệ quản trị cơ sở dữ liệu hướng đối tượng lưu trữ các đối tượng, chúngđược sử dụng bởi nhiều người dùng và nhiều ứng dụng khác nhau Một hệ quản trị cơ sở
dữ liệu hướng đối tượng được xây dựng trên một lược đồ (schema), lược đồ này đượcđịnh nghĩa bởi ngôn ngữ định nghĩa đối tượng (object definition language) và có chứanhữn thể hiện của các types được định nghĩa trong lược đồ đó
Trang 13Mô hình đối tượng trong hệ quản trị cơ sở dữ liệu hướng đối tượng cụ thể đượcđịnh nghĩa bởi các object, literal, types, thuộc tính, mối quan hệ Các nhà phát triển ứngdụng dựa trên hệ quản trị cơ sở dữ liệu hướng đối tượng sử dụng cấu trúc đó để xây dựng
mô hình đối tượng cho các ứng dụng của mình Mô hình đối tượng của ứng dụng quyđịnh một type đặc biệt như :Tài liệu, tác giả, nhà xuất bản, chương, và các hoạt động vàtính chất của mỗi type đặc biệt đó Mô hình đối tượng chứa đựng ngữ nghĩa phong phúhơn đáng kể so với mô hình quan hệ, bằng cách chỉ ra mối quan hệ và hành vi của đốitượng một cách rõ ràng
2.2 Types: Specifications and Implementation
Có hai khía cạnh để định nghĩa một type Một type có một đặc tả (specification)bên ngoài và một hoặc nhiều cách triển khai (implementation) Đặc tả bên ngoài của type
sẽ xác định đặc điểm của type Ngược lại với đặc tả, việc triển khai sẽ được thực hiện bêntrong nội tại của đối tượng Việc triển khai này đối với type được xác định bởi một ngônngữ cụ thể
Một đặc tả bên ngoài của một type bao gồm việc miêu tả các hành vi trừu tượng(abstract), các trường hợp ngoại lệ (exception), các thuộc tính có thể được nhìn thấy bởingười dùng type đó Một giao diện (interface) là một đặc tả chỉ có hành vi trừu tượng củamột kiểu đối tượng trừu tượng Một class là một đặc tả xác định hành vi trừu tượng vàtrạng thái trừu tượng của một kiểu đối tượng Một class là một mở rộng của giao diện vớicác thông tin được định nghĩa trong lược đồ hệ quản trị cơ sở dữ liệu hướng đối tượng.Một literal chỉ xác định trạng thái trừu tượng của kiểu literal Hình 2.1 mô tả một kiểuđặc tả