Tuy nhiên với sự phát triển nhanh chóng của CNTT,CSDL quan hệ đã dần bộc lộ những yếu điểm và nhiều hạn chế, đặc biệt là trong việcxây dựng các ứng dụng cơ dữ liệu phức tạp, dữ liệu đa c
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
PHẠM THỊ CHANH
TỐI ƯU HÓA TRUY VẤN CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG
Ngành: CÔNG NGHỆ THÔNG TIN
Chuyên ngành : HỆ THỐNG THÔNG TIN
Mã số: 60480104
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC : PGS TS ĐOÀN VĂN BAN
HÀ NỘI – 2014
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan, kết quả của luận văn hoàn toàn là kết quả của tự bản thân tôi tìm hiểu, nghiên cứu Các tài liệu tham khảo đƣợc trích dẫn và chú thích đầy đủ.
Tác giả
Phạm Thị Chanh
Trang 4LỜI CẢM ƠN
Lời đầu tiên của luận văn em xin gửi lời cảm ơn chân thành nhất đến PGS.TSĐoàn Văn Ban, người đã trực tiếp hướng dẫn, giúp đỡ và tạo mọi điều kiện thuận lợicho em từ lúc tìm hiểu, định hướng cũng như tìm kiếm tài liệu trong lĩnh vực cơ sở
dữ liệu hướng đối tượng cho đến lúc hoàn thành luận văn
Em xin gửi lời cám ơn sâu sắc đến tất cả các thầy cô giáo đã dạy dỗ và truyềnđạt những kinh nghiệm quý báu cho chúng em trong suốt hai năm cao học ở trườngĐại học Công nghệ - Đại học Quốc gia Hà nội
Cuối cùng, em xin biểu thị sự biết ơn tới những người thân trong gia đình vàbạn bè đã ưu ái, giúp đỡ, động viên, khích lệ để em hoàn thành luận văn này
Hà nội, ngày … , tháng … , năm 2014
Trang 5DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
(Object Database Management Group)
Trang 6DANH MỤC CÁC THUẬT NGỮ
Biến thể hiện dựa trên giá
trị Biến thể hiện lớp Đối
Specific typesBag
General typesObject schemasInheritance relationshipAggregation relationshipClass hierarchy
Class composition hierarchy Overloading method
Derived-attribute method Metaclass/Superclass Subclass
Nested queryObject-Oriented ModelEntity
OverridingLate bindingSingle attribute Single-valued attribute
Multivalued attribute Composite attribute Polymorphism Encapsulation Multipleinheritance
Trang 7DANH MỤC CÁC HÌNH VẼ
Hình 1.1 Sự phát triển của các mô hình dữ liệu
Hình 1.2 Mô hình dữ liệu hướng đối tượng nguyên mẫu
Hình 1.3 Kế thừa đơn
Hình 1.4 Kế thừa bội từ hai lớp khác nhau và có lớp cơ sở chung
Hình 1.5 Kế thừa bội không có lớp cơ sở chung
Hình 1.6 Sự phân cấp các kiểu trong OQL
Hình 1.7 Lược đồ CSDL Quản lý Nhân viên
Hình 2.1 Siêu đồ thị H
Hình 2.2 Siêu đồ thị kết nối đối tượng của ví dụ 2.1
Hình 2.3 Siêu đồ thị kết nối của ví dụ 2.2
Hình 2.4 Siêu đồ thị kết nối của ví dụ 2.3
Hình 2.5 Siêu đồ thị kết nối của ví dụ 2.4
Hình 3.1 Lược đồ CSDL Quản lý Nhân sự
Hình 3.2 Form luận văn
Hình 3.3 Kết quả truy vấn 1
Hình 3.4 Kết quả truy vấn 2
Hình 3.5 Kết quả truy vấn 3
Trang 8DANH MỤC CÁC BẢNG, BIỂU ĐỒ
Bảng 2.1 Kết quả ƣớc lƣợng siêu cạnh của ví dụ 2.3
Bảng 2.2 Kết quả ƣớc lƣợng khi áp dụng thuật toán 2.5 Tinh chỉnh siêu đồ thị của ví dụ 2.3
Bảng 2.3 Kết quả ƣớc lƣợng siêu cạnh của ví dụ 2.4
Bảng 2.4 Kết quả ƣớc lƣợng khi áp dụng thuật toán 2.5 Tinh chỉnh siêu đồ thị của ví dụ 2.4
Biều đồ 3.1 So sánh thời gian thực hiện truy vấn 1
Biều đồ 3.2 So sánh thời gian thực hiện truy vấn 2
Biều đồ 3.3 So sánh thời gian thực hiện truy vấn 3
Trang 9LỜI MỞ ĐẦU
Chúng ta đang sống trong một thời đại mới, thời đại của Công nghệ thông tin(CNTT) Công nghệ thông tin ngày một phát triển và trở thành một nhu cầu không thểthiếu trong mọi lĩnh vực của đời sống xã hội CNTT là ngành quản lý công nghệ và mở
ra nhiều lĩnh vực khác nhau như phần mềm máy tính, phần cứng máy tính, ngôn ngữ lậptrình, ….Và cơ sở dữ liệu cũng là một lĩnh vực quan trọng của Công
nghệ thông tin Từ khi ra đời cho đến nay, những nghiên cứu về Cơ sở dữ liệu(CSDL) đã không ngừng phát triển và ngày càng trở nên cần thiết trong các ứng dụng
về CNTT
CSDL đã trở thành một bộ phận chủ yếu không thể thiếu trong hầu hết các hệthống thông tin Hiện nay, các hệ thống thông tin hay các CSDL đều chủ yếu sử dụngmột kiểu CSDL truyền thống đó là CSDL quan hệ, một trong những CSDL đã đượcphát triển và ứng dụng rộng rãi Tuy nhiên với sự phát triển nhanh chóng của CNTT,CSDL quan hệ đã dần bộc lộ những yếu điểm và nhiều hạn chế, đặc biệt là trong việcxây dựng các ứng dụng cơ dữ liệu phức tạp, dữ liệu đa chiều, dữ liệu có nhiều mốiquan hệ, hay các dữ liệu đa phương tiện như: hình ảnh, âm thanh, video,…
Ngày nay, phương pháp hướng đối tượng được sử dụng rất phổ biến trong lĩnhvực phát triển phần mềm, vì cho phép lập trình viên tạo ra các đối tượng trong codetrừu tượng hóa các đối tượng thực tế trong cuộc sống Trong thế giới thực, đối tượng
là thực thể tồn tại như con người, xe, máy tính,…Trong ngôn ngữ lập trình, đốitượng có thể là màn hình, điều khiển,…Kỹ thuật hướng đối tượng là kỹ thuật nhằmvào sự tương tác giữa các đối tượng Mỗi đối tượng có những thuộc tính (thông tinlưu trữ), những phương thức xác định các chức năng của đối tượng và các đối tượngchỉ được tạo ra và tồn tại trên bộ nhớ chính, còn việc lưu trữ và tương tác dữ liệudưới dạng các đối tượng trên bộ nhớ thứ cấp vẫn chủ yếu kế thừa từ mô hình quan hệtruyền thống Hiện đã có rất nhiều kết quả nghiên cứu, cho phép chuyển đổi qua lạigiữa các bảng trong mô hình quan hệ sang tập các đối tượng tương ứng Mặc dù kếthừa được tính năng mạnh của hướng đối tượng, nhưng việc chuyển đổi qua lại nàycàng làm cho mã lệnh của chương trình phức tạp thêm, đồng thời hiệu suất chươngtrình cũng giảm đi rõ rệt
CSDL hướng đối tượng là giải pháp cho những hạn chế của CSDL quan hệ TrongCSDL 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ên cho phép lưu trữ được các dạng dữ liệu phức tạp, lượng thông tin lớn, đachiều, đa quan hệ, hay có thể mở rộng lưu trữ các dữ liệu đa phương tiện như hình ảnh,
âm thanh, video Trên thế giới, một số hệ quản trị cơ sở dữ liệu hướng đối tượng đượcphát triển bởi các nhà phân phối sản phẩm thương mại, tại các phòng
Trang 10nghiên cứu công nghệ và các Viện Đại học như: Gemstone, ObjectStores, IRIS,Orion, Extra, Oracle, Db4o,… Một mô hình dữ liệu đối tượng chuẩn ODMG đãđược phát triển và dựa vào đó để thiết lập một số khái niệm cơ sở được gọi là môhình hạt nhân cho mô hình CSDL hướng đối tượng Mô hình hạt nhân đủ mạnh đểthỏa mãn nhiều đòi hỏi của các ứng dụng mới, hơn nữa còn được dùng làm cơ sở đểxác định những khác biệt chính giữa mô hình dữ liệu hướng đối tượng và các môhình dữ liệu truyền thống khác Hệ thống hướng đối tượng là tập các lớp đối tượng
có mối quan hệ với nhau, trao đổi thông tin với nhau để thực hiện những nhiệm vụđặt ra của bài toán ứng dụng trong thực tế
Một trong những hướng nghiên cứu quan trọng được đề cập trong các hệ thốngCSDL hướng đối tượng là tối ưu hoá truy vấn hướng đối tượng Với một câu truyvấn, sẽ tồn tại nhiều phương án mà hệ thống CSDL cho phép xử lý và đưa ra kết quảcuối cùng tương đương nhau, việc tối ưu hóa câu truy vấn sẽ cho chúng ta lựa chọnphương án nào có tổng thời gian thực hiện truy vấn hiệu quả hơn, tức là chọnphương án có chi phí ước lượng nhỏ nhất Hiện nay, các nhà nghiên cứu đã đề xuấtrất nhiều kỹ thuật tối ưu hoá truy vấn hướng đối tượng khả thi và đáp ứng được cácyêu cầu này như: Scott Lee Vanderberg (1993), J Fong (1997), C Ramanathan and J.Hodges (1997), Clement Yu, Yi Zhang, Weiyi Meng, Wom Kim, Gaoming Wang,
Tracy Pham and Son Daop (1997): Giới thiệu giải thuật chuyển đổi các truy vấn hướng đối tượng sang truy vấn quan hệ để tận dụng các kỹ thuật tối ưu hoá truy vấn
đã có trên mô hình quan hệ; Jia Liang Han (1998): “Optimizing Relational Queries in Connection Hypergraph: Nested Queries, Views, and Binding Propagations”; Ullman and Jeffrey D (1999), Lê Mạnh Thạnh và Hoàng Bảo Hùng (2009): Phương pháp tối
ưu hóa truy vấn đối tượng bằng các phép biến đổi biểu thức đại số đối tượng OQL;
Lê Mạnh Thạnh, Đoàn Văn Ban và Hoàng Bảo Hùng (2005): Phương pháp dùng ký pháp siêu đồ thị để biểu diễn và tối ưu hoá các truy vấn trong CSDL hướng đối tượng Tuy nhiên đối với các truy vấn lồng, khi phân tích ước lượng chi phí của biểu
thức đại số lồng thì việc định giá sẽ cho chi phí chưa đạt hiệu quả như mong muốn
Vì vậy, luận văn tập trung nghiên cứu việc làm phẳng các truy vấn con trong truy vấn
lồng nhờ phương pháp dùng ký pháp siêu đồ thị để biểu diễn và tối ưu hoá các truy vấn trong CSDL hướng đối tượng Từ đó, xây dựng thuật toán ước lượng chi phí xử
lý truy vấn đối tượng trên cơ sở ước lượng các siêu cạnh trong siêu đồ thị để đạtđược mức chi phí nhỏ hơn cho mỗi truy vấn Chính vì lý do trên mà tôi chọn đề tài
“TỐI ƯU HOÁ TRUY VẤN CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG” làm luận văn tốt nghiệp.
Mục tiêu của luận văn là nghiên cứu các mô hình CSDL hướng đối tượng để
giải bài toán tối ưu hóa truy vấn đối tượng Đây là vấn đề luôn được các nhà khoa
Trang 11học quan tâm nghiên cứu Trong khuôn khổ của luận văn, tôi tập trung nghiên cứuvào phương pháp tối ưu hóa truy vấn mà hay được sử dụng nhất đặc biệt là đối vớicác truy vấn lồng đó là sử dụng phương pháp siêu đồ thị Nghiên cứu các đặc trưngtrong mô hình dữ liệu hướng đối tượng; Tìm hiểu các kỹ thuật xử lý truy vấn, sự biểudiễn câu truy vấn bằng ngôn ngữ truy vấn đối tượng OQL; Giới thiệu ký pháp siêu đồthị [10] trong biểu diễn truy vấn Từ đó, sử dụng phương pháp này để tối ưu hóa truyvấn cho lớp các truy vấn lồng trong CSDL hướng đối tượng [3].
Với mục tiêu của luận văn như vậy, bố cục của luận văn gồm: phần mở đầu, bachương nội dung và phần kết luận
Chương 1: Giới thiệu các khái niệm, định nghĩa cơ bản như: lớp, đối tượng,
định danh đối tượng trong mô hình CSDL hướng đối tượng; kế đến, trình bày sự mởrộng ngữ nghĩa của mô hình như hệ thống phân cấp và quan hệ kế thừa Tìm hiểu kỹthuật xử lý truy vấn và các thay đổi so với kỹ thuật xử lý truy vấn quan hệ Để thựchiện được các câu truy vấn đối tượng một cách hiệu quả và tiếp tục nghiên cứu cácvấn đề về tối ưu hoá truy vấn trong các CSDL hướng đối tượng, ngôn ngữ truy vấnOQL là ngôn ngữ truy vấn được chọn giới thiệu trong chương này
Chương 2: Trình bày khái niệm siêu đồ thị kết nối đối tượng Sau đó sử dụng
ký pháp siêu đồ thị để biểu diễn truy vấn OQL Xây dựng giải thuật khởi tạo siêu đồ
thị trong các trường hợp truy vấn đối tượng đơn và lồng Đưa ra giải thuật ướclượng siêu cạnh cho các trường hợp tách biệt hay liên thông của các siêu đồ thị conhợp thành siêu đồ thị mà biểu diễn cho một truy vấn đối tượng lồng Cuối chương, là
mở rộng thuật toán tối ưu hóa truy vấn trên cơ sở xây dựng danh sách các bước thựcthi câu truy vấn theo quy tắc có thứ tự loại bỏ siêu cạnh
Chương 3: Giới thiệu về hệ quản trị CSDL đối tượng DB4O Phát biểu bài toán
quản lý nhân sự trong công ty, đó là bài toán được áp dụng trong các ví dụ cho thuậttoán tối ưu hóa truy vấn Đưa ra kết quả thực nghiệm cho bài toán tối ưu hóa truyvấn CSDL hướng đối tượng dựa trên siêu đồ thị Cuối cùng là kết luận và hướngphát triển của đề tài
Nội dung cơ bản của luận văn đã được trình bày, thảo luận tại xêmina khoa học
ở Bộ môn Hệ thống thông tin, khoa Công nghệ Thông tin, trường Đại học Công nghệ
- Đại học Quốc gia Hà nội
Trang 12Chương 1
MÔ HÌNH CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG
1.1.1 Mô hình dữ liệu
Các hệ thống quản trị cơ sở dữ liệu (CSDL) đầu tiên xuất hiện trước những năm
1970 Những hệ thống này được phát triển từ hệ thống các tệp tin (File Systems) để
hỗ trợ cho việc lưu trữ và xử lý số lượng lớn các dữ liệu Tuy nhiên, các nhà nghiêncứu trong lĩnh vực CSDL nhận thấy giá trị của dữ liệu cần được lưu trữ để xử lý, vàcác mô hình dựa trên dữ liệu cần được nghiên cứu để cải thiện độ tin cậy, đảm bảo anninh, an toàn dữ liệu và nâng cao hiệu quả của việc truy cập vào hệ thống
Mô hình dữ liệu cung cấp cách thức tổ chức các dữ liệu được lưu trữ theo cấutrúc đặc biệt hoặc theo các mối quan hệ sao cho việc truy cập và quản lý nhanhchóng, hiệu quả Nhiều mô hình CSDL như mô hình phân cấp (Hierarchical model),
mô hình mạng (Network model), mô hình quan hệ (Relational model), mô hìnhhướng đối tượng (Object-Oriented model) như Hình 1.1 đã xuất hiện và đóng vai tròquan trọng trong việc nghiên cứu phát triển các hệ thống quản trị CSDL (DataBaseManagement System)
File Systems
Network
Relational
Object-OrientedSystem
Object-Oriented Databases
Hình 1.1 Sự phát triển của các mô hình dữ liệu
[1] 1.1.2 Những hạn chế của cơ sở dữ liệu quan hệ
Mô hình CSDL quan hệ truyền thống được sử dụng nhiều nhưng chưa đáp ứngđược hết các yêu cầu của thực tế Mô hình quan hệ chỉ phù hợp cho những bài toán có
bộ dữ liệu nhỏ và không đáp ứng được cho những bài toán ở lĩnh vực ứng dụng mới,nhiều kiểu dữ liệu phức tạp Ví dụ, khi cần lưu trữ và xử lý một số lượng lớn dữ liệu, dữ
Trang 14liệu phải xử lý được các tính năng như: các kiểu dữ liệu phức tạp, đóng gói dữ liệu(Data Encapsulation) và cấu trúc dữ liệu trừu tượng, cùng với những phương phápmới để lập chỉ mục và truy vấn thông tin Phần lớn các hệ quản trị CSDL phổ biếnhiện nay trên thị trường là các hệ quản trị dữ liệu theo mô hình quan hệ Tuy nhiên,các hệ quản trị CSDL quan hệ có những hạn chế như sau [13,19]:
Hạn chế trong vấn đề biểu diễn thế giới thực (Real world): Các quan hệ
(relations) không đủ mạnh để thể hiện các thực thể (entities) trong thế giới thực Rấtkhó để mà biểu diễn được mối quan hệ kế thừa, mối quan hệ thành viên (IS-Arelationships) Ví dụ nhân viên là một người, trong ví dụ này, hệ quản trị CSDL quan
hệ phải định nghĩa 2 bảng là bảng Nguoi và bảng NhanVien, trong đó bảng NhanVien nhận được những thông tin từ lớp cha (superclass) Nguoi để kết nối lại.
Hạn chế về nạp chồng ngữ nghĩa (Semantic overloading): Thành phần chuẩn
trong mô hình quan hệ là quan hệ (relation) không đủ mạnh để biểu diễn cho dữ liệu
và các mối quan hệ phức tạp của dữ liệu Nó thường phải chia một đối tượng thànhmột số các quan hệ (bảng) và truy vấn tin thì phải thực hiện các phép: chiếu, chọn vàkết nối để tái cấu trúc các đối tượng đó
Chỉ biểu diễn những dữ liệu thuần nhất: Những hạn chế về kiểu dữ liệu trong
mô hình quan hệ làm nó không thể biểu diễn được các đối tượng trong thế giới thực
Một mục (item) bất kỳ trong một bộ dữ liệu (tuple) thực chất là phần giao nhau của
hàng với cột, nó phải là dữ liệu của một kiểu dữ liệu nguyên tố, bởi vì theo giả thuyết,
cả chiều ngang và chiều dọc đều phải có kiểu thuần nhất
Hệ thống khép kín: Những lĩnh vực ứng dụng còn tồn tại không thể bổ sung
được vào hệ thống sau khi phát triển hệ quản trị CSDL, như không thể bổ sung cáckiểu dữ liệu mới vào hệ thống Nhưng thực tế đòi hỏi các hệ quản trị CSDL phải hỗtrợ để xử lý những kiểu dữ liệu mới như kiểu hình ảnh (images), video, audio, …
Giới hạn các phép toán: Mô hình quan hệ có một tập cố định các phép toán
trong SQL Ngoài ra, không cho phép mở rộng hay bổ sung thêm những phép toánmới
Khó thực hiện truy vấn đệ qui: Các câu truy vấn đệ qui cực kỳ khó đặc tả và cài
đặt trong mô hình quan hệ Đây cũng chính là điểm yếu làm cho SQL không thựchiện được đầy đủ trong tính toán
Những trở ngại trong đối sánh: Mô hình quan hệ sử dụng những mô thức lập
trình hỗn hợp khác nhau, trong đó cho phép các dữ liệu với kiểu khác nhau và nhiều
vị trí khác nhau có thể được xử lý trong cùng một thời điểm
1.1.3 Mô hình dữ liệu hướng đối tượng
Trong số các mô hình dữ liệu hiện nay, mô hình dữ liệu đối tượng là mô hìnhđảm bảo tính mềm dẻo, tính linh hoạt, và tính “mở” của hệ thống Mô hình dữ liệu
Trang 15hướng đối tượng đang được phát triển một cách phổ dụng trong lĩnh vực phát triểnCSDL Được xây dựng theo cách tiếp cận hướng đối tượng nhằm khắc phục nhữnghạn chế của những mô hình dữ liệu truyền thống Mô hình dữ liệu hướng đối tượng
có các đặc trưng cơ bản sau [6, 13]:
- Thông tin được biểu diễn thành các đối tượng giống như các đối tượng trong lập trình hướng đối tượng Lớp bao gồm các thông tin:
+ Dữ liệu thuộc tính mô tả các đặc trưng của các thực thể (đối tượng)
+ Các phương thức mô tả hành vi ứng xử của đối tượng
+ Mối quan hệ giữa các lớp với nhau
- Mỗi đối tượng (thực thể) có một định danh ID để xác định duy nhất trong hệCSDL
- Các CSDL hướng đối tượng được thiết kế để làm việc tốt đối với những ngôn ngữ lập trình hướng đối tượng như: Java, C++, C#, Smalltalk,…
Mục đích của CSDL hướng đối tượng là để quản trị hiệu quả những kiểu dữ liệuphức hợp, dữ liệu đa phương tiện như âm thanh, hình ảnh, , nhằm khắc phụcnhững hạn chế của CSDL quan hệ Hình vẽ sau đây giới thiệu về mô hình dữ liệuhướng đối tượng nguyên mẫu
Các chức năng đặc biệt
- Phiên bản
- Sự tiến hoá lược đồ
Hình 1.2 Mô hình dữ liệu hướng đối tượng nguyên mẫu [13]
Trên cơ sở kế thừa và phát triển các điểm mạnh của CSDL quan hệ thì CSDLđối tượng đã bổ sung các tính chất mà CSDL quan hệ vẫn còn thiếu sót Cũng như hệthống CSDL truyền thống, hệ thống CSDL hướng đối tượng có tính bền vững, tínhchia sẻ dữ liệu, tính bảo mật, tính toàn vẹn và truy vấn dữ liệu Ngoài ra, CSDLhướng đối tượng còn có những ưu điểm khác như [13]:
Trang 16Hỗ trợ những kiểu dữ liệu được định nghĩa bởi người sử dụng: CSDL hướng
đối tượng có khả năng lưu trữ các kiểu phức hợp, kiểu được định nghĩa bởi người sửdụng, cho phép thao tác trong kiểu dữ liệu một cách dễ dàng
Cải tiến đáng kể về chất lượng dữ liệu: Ta có thể đưa ra nhiều ràng buộc vào
cấu trúc dữ liệu Mô hình còn cho phép thể hiện được cả những ràng buộc không cócấu trúc mà chương trình phải thoả mãn khi nó thực hiện trong hệ CSDL Một CSDLquan hệ được chuẩn hóa có thể xem như một trường hợp đặc biệt của CSDL hướngđối tượng
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ường sử dụng những câu lệnh rất mạnh của các hệ quảntrị CSDL thay cho những đoạn chương trình của người sử dụng
Tích hợp dữ liệu dễ dàng và tiện lợi: Việc tích hợp nhiều hệ thống độc lập có
thể làm giảm bớt sự sao chép dữ liệu của con người và mở rộng 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ấtlàm thuận tiện hơn cho việc tìm hiểu và tích hợp thông tin
Không cần các khóa chính (Primary Keys): người sử dụng hệ quản trị CSDL
quan hệ thường phải lo lắng về tính duy nhất để phân biệt các bộ dữ liệu và đảm bảorằng không có hai bộ dữ liệu có cùng giá trị của khóa chính để tránh xảy ra xung đột.Nhưng trong một hệ quản trị CSDL hướng đối tượng, việc xác định duy nhất của cácđối tượng được thực hiện bởi định danh đối tượng (OID) và người sử dụng khôngcần phải quan tâm về chúng
Một mô hình dữ liệu thống nhất: Một mô hình dữ liệu thông thường phải mô
hình hóa các thực thể, các mối quan hệ, các ràng buộc và các hoạt động thay đổi trạngthái của dữ liệu trong hệ thống Với hệ quản trị CSDL quan hệ ta không thể mô hìnhđược các hoạt động và không đưa ra được những quy tắc để làm thay đổi trạng tháicủa dữ liệu trong hệ thống, bởi vì điều này vượt quá phạm vi của cơ sở dữ liệu Vìvậy, các ứng dụng sử dụng hệ thống CSDL quan hệ thường sử dụng một sơ đồ quan
hệ - thực thể để mô hình các bộ phận tĩnh của hệ thống và một mô hình riêng biệt chocác hoạt động và hành vi của các thực thể trong ứng dụng Với hệ quản trị CSDLhướng đối tượng, không có sự tách biệt giữa các mô hình dữ liệu và mô hình ứngdụng để mô tả đầy đủ các đặc trưng, tính chất tĩnh cũng như hành vi ứng xử độngcủa các đối tượng Toàn bộ ứng dụng như vậy có thể được mô hình đầy đủ trong cácbiểu đồ UML
1.2 Các khái niệm cơ sở
1.2.1 Đối tượng, Định danh đối tượng và Lớp đối
tượng Đối tượng (Object)
Trang 17Đối tượng là một khái niệm cơ sở quan trọng nhất của cách tiếp cận hướng đốitượng Đối tượng là thực thể của hệ thống, của CSDL chỉ một người, một địa điểmhay một vật nào đó tồn tại trong thế giới thực Một thực thể bất kỳ trong thế giới thực
là một đối tượng Đối tượng trong thế giới thực được xác định duy nhất, chứa mộttậ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ả năng trao đổi thông tin với cácđối tượng khác
Ví dụ: Một đối tượng Nhân viên là một người đang làm việc cho một công tyhay doanh nghiệp nào đó, được xác định duy nhất trong thế giới thực, chứa một tậpnhất định các thông tin về Nhân viên đó như: mã nhân viên, họ tên, ngày sinh, nơisinh, lương, dự án mà nhân viên đang tham gia,…Một đối tượng Nhân viên có thể cócác quan hệ với các đối tượng khác, như quan hệ với đối tượng Phòng ban hay đốitượng Dự án mà nhân viên đó đang tham gia làm việc
Trong CSDL hướng đối tượng, các đối tượng trong thế giới thực được mô hìnhhóa, biểu diễn vào CSDL theo các đặc trưng của đối tượng và luôn duy trì sự tươngứng trực tiếp giữa các đối tượng trong CSDL với các đối tượng trong thế giới thực
Định danh đối tượng (OID: Object Identity)
Mộ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 Identity) hayOID Hệ thống CSDL hướng đối tượng cung cấp một định danh duy nhất cho mỗiđối tượng và được lưu trữ trong CSDL Định danh duy nhất này do hệ thống tự độngtạo ra và được gọi là định danh đối tượng Giá trị OID người dùng không nhìn thấyđược, nó được sử dụng bên trong hệ thống để xác định duy nhất một đối tượng vàdùng để tạo ra các tham chiếu bên trong đối tượng OID của mỗi đối tượng phải thỏamãn hai tính chất sau:
1. Giá trị OID của một đối tượng không được thay đổi trong CSDL hướng đốitượng Điều này đảm bảo tính duy nhất của mỗi đối tượng Do đó, một hệ thốngCSDL hướng đối tượng phải có cơ chế tạo ra các OID và đảm bảo tính bất biến
2. Mỗi giá trị OID chỉ được sử dụng duy nhất một lần; nghĩa là khi một đốitượng bị xóa đi từ CSDL thì OID của nó cũng không được gán cho đối tượng bất kỳnào khác
Định danh đối tượng OID khác với khóa chính của đối tượng Khóa 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
Ví dụ: Một Nhân viên được biểu diễn trong CSDL có một OID duy nhất, xácđịnh sự tương ứng Nhân viên đó trong thế giới thực Một Nhân viên khác trong thế
Trang 18giớ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ủaNhân viên trên, thậm trí cả khi Nhân viên trên bị xóa khỏi hệ thống Điều này đảmbảo sự tương ứng của CSDL với thế giới thực, tránh sự nhầm lẫn về các đối tượngđược biểu diễn trong CSDL.
thường được mô tả bằng từ khóa Class Ví dụ trong lược đồ quản lý nhân viên ta có
các lớp: NhanVien, PhongBan, DuAn …Trong đó, lớp Nhân viên mô tả cấu trúc
chung của các đối tượng Nhân viên, được khai báo như sau:
đó Các kiểu dữ liệu này có thể là các kiểu dữ liệu cơ bản như: kiểu số nguyên, sốthực, kiểu xâu ký tự…, hoặc các kiểu phức tạp do người dùng định nghĩa, các kiểuđối tượng hoặc cũng có thể là các con trỏ hay vector đến các kiểu dữ liệu đó
Thuộc tính có thể là thuộc tính đơn trị hoặc thuộc tính đa trị, thuộc tính đa trị
được khai báo bởi từ khóa set Ngoài ra một thuộc tính có thể là thuộc tính phức hợp,
được xác định từ tập các thuộc tính khác (sử dụng từ khóa tuple để khai báo) Ví dụ 1.1 Khai báo về các thuộc tính có trong lớp QuanLy
Trang 19luongcoban: double)
Class QuanLy inherits NhanSu
Type tuple ( chucvu: string;
phong: PhongBan;
duan: set( DuAn)) Trong ví dụ trên các thuộc tính hoten, giới tính, diachi… là các thuộc tính đơn trị, thuộc tính ngaysinh là thuộc tính phức hợp Còn thuộc tính duan là thuộc tính đa
trị, với ngữ nghĩa rằng mỗi đối tượng thuộc lớp QuanLy có thể tham gia vào nhiều dự
án khác nhau; nghĩa là mỗi đối tượng thuộc lớp QuanLy cho tương ứng một tập cácgiá trị OID của các đối tượng thuộc lớp DuAn
1.2.3 Các kiểu dữ liệu
Các khái niệm sau đây được sử dụng trong hầu hết các hệ CSDL hướng đốitượng, chẳng hạn như Gemstone, Orion, Ontos, O2, ObjectStore, ODMG Để thuậntiện trong trình bày, chúng ta sử dụng một số ký hiệu sau [4, 6, 21]:
T – tập hữu hạn các kiểu
L – tập các kiểu nguyên thuỷ như: byte, int, long, float, double, char, string và
boolean
Trang 20Att – tập tất cả thuộc tính của các đối tượng trong hệ
thống O – tập tất cả đối tượng và các đại lượng trong một
CSDL Class – tập các tên lớp
Tập Dom các giá trị nguyên thuỷ là hợp của tất cả các miền giá trị cơ sở của ngôn ngữ lập trình Các phần tử của Dom được gọi là hằng, trong đó nil là một hằng
đặc biệt biểu diễn giá trị không xác định
Tập Obj = {o1, o 2 , …} là tập vô hạn các định danh đối tượng (OID) và tập O id là
tập con các định danh đối tượng, O id ⊂ Obj Họ giá trị trên O id , ký hiệu Val(O id),được xác định như sau:
(i) Hằng nil ∈ Val(O id)
(ii) Nếu v ∈ Dom thì v ∈ Val(O id)
(iii) Nếu o ∈ O id thì o ∈ Val(O id)
(iv) Tập {vi | vi∈ Val(O id), (i = 1, , n)} ∈ Val(O id)
(v) Cho tập các giá trị {vi | vi∈ Val(O id), (i = 1, , n)} và tập các tên thuộc tínhrời nhau {Ai | Ai, Aj∈ Att, (i ≠ j ⇒ Ai≠ Aj), (i, j = 1, , n)} thì bộ [Ai : v1, , An : vn]
Val(O id)
Một đối tượng trong hệ thống thường được mô tả là một cặp (o, v), trong đó o
là định danh đối tượng và v là trạng thái hay bộ giá trị hiện thời của đối tượng Các
đối tượng cùng tính chất và hành vi được nhóm lại để tạo thành một lớp Mỗi lớp C
có một kiểu xác định, ký hiệu là σ(C) - kiểu của các đối tượng trong lớp Thuật ngữ
Class được sử dụng để mô tả định nghĩa kiểu của lớp các đối tượng Ví dụ 1.2: Cho
SoNV: set (NhanVien ))
Ta tiến hành biểu diễn một số đối tượng từ lược đồ CSDL đối tượng trên, trong
đó mỗi đối tượng là một cặp (o, v) Xét các đối tượng
Ob 3 =(o3, [hoten: “Trần Hùng”, gioitinh: false, luong: 5000000, phong: o5])
Trang 21Ob 4 =(o4, [hoten: “Minh Châu”, gioitinh: true, luong: 3500000, phong: o5])
Ob 5 =(o5, [tenphong: “Kinh Doanh”, truongphong: o1, SoNV: {o1, o2, o3, o4}]) Đối tượng Ob 1 theo định nghĩa trong lược đồ trên sẽ gồm định danh o1 và một bộ (tuple)
các giá trị: [hoten : “Nam Phong”, gioitinh : false, luong : 6000000, phong :
o5] Đối tượng Ob 5 có định danh là o5 và một giá trị bộ: [tenphong : “Kinh Doanh”,truongphong : o1, SoNV : {o1, o2, o3, o4}], trong đó, thuộc tính tenphong có giá trị nguyên thủy, thuộc tính truongphong tham chiếu đến đối tượng có định danh đối
tượng là o1, thuộc tính SoNV (số lượng nhân viên) có giá trị tập (set) tham chiếu đến
các đối tượng với các định danh đối tượng o1, o2, o3, o4
Trong mô hình dữ liệu quan hệ, so sánh bằng của các bộ trong quan hệ luôn dựatrên các giá trị của bộ, hai bộ bằng nhau nếu tất cả các thuộc tính khoá của hai bộ cócùng giá trị Tuy nhiên, trong mô hình CSDL hướng đối tượng cần phân biệt hai kháiniệm “đồng nhất” và “bằng nhau” của các đối tượng như trong thực tế Hai quan hệnày được định nghĩa như sau:
Định nghĩa 1.1: Cho hai đối tượng S1(o1, v1) và S2(o2, v2)
i. Đối tượng đồng nhất: Hai đối tượng S1 và S2 được gọi là đối tượng đồng nhất,
ký hiệu S1 = oidS2 nếu chúng có cùng định danh đối tượng, tức là S1.o1 = S2.o2
trị, ký hiệu S1 = vS2
- Nếu kiểu của đối tượng là nguyên thuỷ thì chúng phải có cùng giá trị
- Nếu kiểu của đối tượng là kiểu không nguyên thuỷ thì chúng phải có cùng sốcác tính chất và với mọi tính chất pi của S1 đều tồn tại tính chất pj của S2 bằngnhau về giá trị
Các kiểu dữ liệu
Các kiểu cơ sở bao gồm các kiểu chuẩn trong SQL như: integer, string, float,
char, double, ….và các kiểu do người dùng định nghĩa như lớp hoặc cấu trúc
Các kiểu tập hợp đây là các kiểu đặc trưng chỉ có ở truy vấn hướng đối tượng
như: set, bag, list, array chỉ đến một tập hợp các đối tượng
- Set: Với T là một kiểu bất kỳ, set(T) được định nghĩa là một kiểu tập hợp gồm
các phần tử phân biệt nhau có kiểu là T Ví dụ {1, 2, 5, 8, 9} là một thể hiện củaset(integer)
- Array: Với T là một kiểu bất kỳ và i có kiểu integer, array<T, i> là một dãy
gồm i phần tử có kiểu T Mỗi phần tử được gắn liền với một chỉ số
- Bag: Với T là một kiểu bất kỳ, bag(T) được định nghĩa như một kiểu tập hợp
gồm các phần tử thuộc kiểu T Khác với set, một phần tử trong bag có thể xuấthiện nhiều hơn một lần và không phân biệt thứ tự giữa chúng Ví dụ {1, 2, 2, 5}
là một thể hiện của bag(integer)
Trang 22- List: Với T là một kiểu bất kỳ, list(T) được định nghĩa như một kiểu danh sách
có 0 hoặc nhiều hơn một phần tử thuộc kiểu T Kiểu string là một kiểu đặc biệtcủa list (danh sách các ký tự)
Mỗi phần tử trong set được gắn liền với một sự kiện duy nhất, ngược lại trongbag các phần tử có thể lặp Với list giống như bag nhưng các sự kiện phải được sắpxếp đúng thứ tự Chẳng hạn {3, 5, 3} và {5, 3, 3} là khác nhau với list nhưng giốngnhau với bag
Trong CSDL hướng đối tượng lớp được xem như một kiểu dữ liệu đã được càiđặt, các thể hiện của nó là các đối tượng cụ thể Chẳng hạn kiểu integer có thể xem nhưmột lớp integer và các thể hiện như 1, 3, 5, …là các thể hiện của lớp integer đó
1.2.4 Hệ thống phân cấp và quan hệ kế thừa
Trong hệ thống CSDL hướng đối tượng, cho phép một lớp được kế thừa cácthuộc tính và phương thức từ một lớp cơ sở, tức là những lớp mới có thể mở rộng, kếthừa những lớp khác có sẵn (super-class) Ngoài những thuộc tính, phương thứcđược kế thừa, ta có thể bổ sung thêm những thuộc tính và phương thức mới để mô tảđúng những lớp các đối tượng của bài toán ứng dụng
Quan hệ kế thừa là quan hệ kiểu “thành viên” (“IS-A”), nghĩa là mội đối tượng
của lớp con cũng là đối tượng của lớp cha và ngược lại đối tượng của lớp cha đạidiện cho mội đối tượng của lớp con Các lớp trong mô hình hướng đối tượng có thểđược tổ chức theo một cấu trúc phân cấp ISA giữa các lớp đối tượng Cấu trúc phâncấp lớp bao gồm ba thành phần: (1) tập các lớp; (2) các kiểu liên quan đến các lớp;(3) đặc điểm của các quan hệ ISA giữa các lớp [11]
Một cách hình thức, cấu trúc phân cấp lớp ISA là một bộ ba (C,σ, ), trong đó, C
là tập hữu hạn tên các lớp, σ là ánh xạ từ C vào Types(C), là một quan hệ thứ tự bộphận trên tập các lớp C Thông thường thì quan hệ thứ tự bộ phận có tính phản xạ Tanói, lớp C2 là lớp con của lớp C1 hay nói cách khác lớp C2 kế thừa lớp C1 nếu kiểucủa lớp C2 là tổng quát hơn kiểu của lớp C1, ký hiệu là C2 C1 Chúng ta sử dụng quan
hệ kiểu con (≤) để biểu diễn một kiểu là tổng quát hơn kiểu khác [1, 2]
Định nghĩa 1.2 Cho (C, σ, ) là một cấu trúc phân cấp lớp, quan hệ kiểu con trên Types(C) là thứ tự bộ phận nhỏ nhất trên Types(C), ký hiệu ≤, thỏa mãn các điềukiện sau:
(i) Nếu c c‟ thì c ≤ c‟
(ii) Nếu τi ≤τi' (1≤ i ≤ n, n ≤ m ) thì bộ
[ A1 :τ1 , A2 :τ2 , , A n :τn , , A m :τm ] ≤[ A1 :τ1' , A2 :τ2' , , A n :τn' ]
(iii) Nếu τ ≤ τ' thì tập {τ}≤{τ'}
Trang 23Với mọi τ,τ≤any (any là lớp gốc của cây phân cấp)
Kế thừa bội từ những lớp phân biệt: Một lớp có thể kế thừa từ nhiều lớp cơ sở
khác nhau Ví dụ Lớp Person là cơ sở để tạo ra hai lớp con: Employee (Nhân viên)
và Manager (Nhà quản lý) Trong Công ty lại có những người vừa là nhân viên, vừa
là người phát triển Những người đó chính là các đối tượng của lớp PartTimeWorker
kế thừa từ hai lớp con Employee và Manager như Hình 1.4.
Person
+salary: int +readInfo()
Trang 24Kế thừa bội không có lớp cơ sở chung: Kế thừa bội như Hình 1.4 là kế thừa có
lớp cơ sở chung là lớp Person Chúng ta có thể tạo ra lớp kế thừa bội từ nhiều lớp mà
chúng lại không có lớp cơ sở chung Loại kế thừa này thường xuất hiện khi ta muốn phatrộn một số chức năng của các lớp thư viện khác nhau Ví dụ trong Hình 1.5, mỗi đối
tượng của lớp SearchTree (cây tìm kiếm) có thể là đối tượng của lớp MoveSubtree (cây con các nước đi) hoặc của lớp PossibleMove (lớp các nước có thể chọn) Bản thân lớp
MoveSubtree lại có thể chứa các SearchTree nhỏ hơn Mỗi nước đi của lớp Move lại có
thể là nước đi có thể (PossibleMove) hoặc lớp các nước đi hiện thời (ActualMove) Lớp
PossibleMove kế thừa hành vi chung của lớp Move và lớp SearchTree.
Mục đích của xử lý truy vấn là tìm một phương án thực thi trong số tất cả cácphương án tương đương (cho cùng một kết quả) nhưng giảm thiểu thời gian xử lý,giảm vùng nhớ trung gian, sử dụng ít tài nguyên hay là với chi phí nhỏ nhất Trong hệthống CSDL, chi phí của tiến trình xử lý truy vấn được tính với công thức:
Total_cost = IO_cost + CPU_cost Trong đó, IO_cost là chi phí vào/ra do việc truyền dữ liệu giữa bộ nhớ chính và
bộ nhớ thứ cấp (thường là đĩa từ) và CPU_cost là chi phí tính toán trong tiến trình xử
lý truy vấn Người ta tập trung nghiên cứu trên chi phí IO_cost và bỏ qua chi phí CPU_cost Điều này sở dĩ như vậy là vì mỗi ứng dụng CSDL lớn với số lượng khổng
lồ các truy xuất dữ liệu thì sự tham gia của chi phí CPU_cost vào tổng chi phí Total_cost sẽ không có ý nghĩa.
Chi phí xử lý truy vấn trên các lớp
Trang 25Việc phân tích tổng chi phí IO_Cost được thực hiện theo ba thành phần là chiphí nạp của lớp sưu tập (IO_Load), chi phí ước lượng tân từ (IO_Eval) và chi phíkết xuất kết quả(IO_Build) được xem xét trong hai trường hợp: giả thiết bộ nhớ xử
lý đủ lớn và bộ nhớ nhỏ
Việc phân tích tổng chi phí IO_Cost được thực hiện theo ba thành phần: chi phí
nạp của lớp sưu tập (IO_Load), chi phí ước lượng tân từ (IO_Eval) và chi phí kết xuất kết quả (IO_Build).
Tổng chi phí vào/ra của việc xử lý truy vấn chứa ba thành phần:
Total_IO = IO_Load + IO_Eval + IO_Build Với IO_Load là số các trang truy xuất để nạp các đối tượng thuộc lớp gốc, là lớp bắt đầu duyệt theo biểu thức đường dẫn, IO_Eval là số trang truy xuất để “đi qua” biểu thức đường dẫn theo phân cấp lớp hợp thành và IO_Build là số trang truy
xuất để tạo ra kết quả Để duyệt lớp bắt đầu theo biểu thức đường dẫn, trước hếtngười ta sẽ nạp các đối tượng trong lớp gốc Có hai phương án duyệt các đối tượng:(a) duyệt tuần tự; (b) duyệt theo chỉ mục Hai phương án này có sự khác biệt về công
thức chi phí đối với thành phần IO_Load Nhưng các phương án duyệt để nạp các
đối tượng thuộc lớp gốc không làm ảnh hưởng đến các chi phí duyệt đường dẫn
trong các lớp khác Vì vậy, chi phí IO_Eval và IO_Build cũng không ảnh hưởng gì
khi chọn một trong hai phương án trên
Mộ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ư việc thành công của hệquản trị CSDL quan hệ là đã xây dựng được một chuẩn SQL cho phé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à rất cầnthiết, quan trọng và mang lại nhiều lợi ích
Việc xây dựng chuẩn CSDL hướng đối tượng có tác dụng là định ra một cấutrúc chung cho tất cả các hệ thống, do đó người sử dụng sẽ dễ dàng hơn trong việcthao tác hệ thống cũng như bảo trì, chuyển đổi và nâng cấp hệ thống Mặt khác,chuẩn CSDL cho phép sự tương thích giữa nhiều hệ thống khác nhau, tức là cácchươ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 trong các hệ thống khác nhau
ODMG (Object Database Management Group) là một trong những chuẩn CSDLhướ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 đề xuất một số chuẩn cho mô hìnhCSDL đối tượng và được chỉnh sửa thành phiên bản 1.1 vào năm 1994, phiên bản2.0 vào năm 1997, là một mô hình hướng đối tượng dựa trên mô hình đối tượng hạtnhân chuẩn
Trang 26Chuẩn mới nhất là ODMG 3.0 (1999) định nghĩa một cách linh hoạt các đặc tảcho việc lưu trữ những đối tượng bền vững ODMG 3.0 được thiết kế để các ứngdụng dễ chuyển đổi, cho phép phát triển ứng dụng dựa vào CSDL, đối tượng vàchuẩn ngôn ngữ lập trình (OMG, SQL-92, …) hiện thời, đảm bảo việc lưu trữ đốitượng là đơn giản và chương trình dễ chuyển đổi [13].
Ý tưởng cơ sở của việc xây dựng các chuẩn ODMG là khá đơn giản Một mặt,việc thiết kế hệ thống dữ liệu không dựa vào mô hình hiện có như mô hình quan hệ,
mà nó phải được xây dựng theo luận thuyết hướng đối tượng Mặt khác, tự bản thânngôn ngữ truy vấn không được hỗ trợ và thiết kế hệ thống cũng phụ thuộc nhiều vàongôn ngữ lập trình như C++, Smalltalk, Java ODMG 3.0 gồm 4 thành phần đặc tảchính đó là [14]
Mô hình đối tượng (Object Model): Mô hình dữ liệu chung được hỗ trợ cho cài
đặt các chuẩn ODMG được xây dựng dựa vào mô hình đối tượng của OMG
Ngôn ngữ định nghĩa đối tượng - ODL (Object Definition Language): Là ngôn
ngữ đặc tả được sử dụng để định nghĩa các kiểu đối tượng phù hợp với mô hình đốitượng của ODMG
Ngôn ngữ truy vấn đối tượng - OQL (Object Query Language) Đây là ngôn ngữ
khai báo phi thủ tục được sử dụng để truy vấn và cập nhật đối tượng SQL-92 được
sử dụng như là cơ sở cho OQL
Ràng buộc ngôn ngữ (Language Binding) như: C++, Smalltalk, Java Những
ngôn ngữ này được gọi là ngôn ngữ thao tác đối tượng OML (Object ManipulationLanguage)
1.4.1 Mô hình đối tượng của ODMG
Trong CSDL hướng đối tượng, đối tượng (Object) và hằng ký tự (literal) là cácthành phần cơ bản nhất của mô hình đối tượng Trong đó, mỗi đối tượng có địnhdanh nhận biết đối tượng và giá trị, trong khi hằng ký tự chỉ có giá trị mà không cóđịnh danh Giá trị của đối tượng có thể có cấu trúc phức tạp và có thể thay đổi Tuynhiên giá trị của hằng ký tự là cố định và không thay đổi, có thể có kiểu cấu trúc [14]
Ví dụ, lớp NhanVien sẽ tạo ra đối tượng NhanVien có định danh được hệ thống tạo
ra, còn những dữ liệu nguyên thuỷ như giá trị 20 kiểu int (nguyên thuỷ) là literal sẽ
không có định danh
Các đối tượng và các hằng ký tự có thể được phân loại theo các kiểu khác nhau.
Nghĩa là mỗi đối tượng hay mỗi hằng ký tự sẽ thuộc về một kiểu Một đối tượng làmột thể hiện kiểu của nó, mọi thể hiện (instance) của cùng một kiểu sẽ có cùng tậpcác thuộc tính và các hành vi (beharvior)
Trạng thái của đối tượng được xác định bởi tập các giá trị đặc tính của nó Các đặc
tính có thể là các thuộc tính hoặc các mỗi quan hệ của bản thân đối tượng với một
Trang 27hoặc nhiều đối tượng khác Trạng thái của đối tượng có thể thay đổi trong quá trìnhtồn tại của nó.
Hành vi của đối tượng được định nghĩa là các hoạt động, có thể được thực hiện
trên chính đối tượng hoặc bằng cách nhận, gửi thông điệp từ các đối tượng khác Tùytheo trạng thái của mình mà đáp ứng của đối tượng đối với một thông điệp có thểkhác nhau ở các thời điểm khác nhau Mỗi phương thức được xác định bằng địnhdanh của nó Mỗi định danh bao gồm danh sách các tham số vào, danh sách tham số
ra và kiểu trả về
Hệ thống quản trị CSDL đối tượng (ODMS) lưu trữ các đối tượng, cho phépchia sẻ cho nhiều người sử dụng và nhiều chương trình ứng dụng ODMS được xâydựng theo lược đồ đối tượng đã được định nghĩa trong ODL và thoả mãn các mốiràng buộc về kiểu của lược đồ
Mô hình đối tượng của ODMG xác định: đối tượng, hằng ký tự, kiểu, thao tác,thuộc tính, quan hệ, … Người phát triển ứng dụng sẽ sử dụng những cấu trúc nàytrong mô hình đối tượng của ODMG để xây dựng mô hình đối tượng cho hệ thốngứng dụng của mình Mô hình đối tượng của chương trình ứng dụng chính là lược đồ(logic) của hệ quản trị CSDL đối tượng (ODMS) Mô hình đối tượng của ODMGđịnh nghĩa cơ sở các chức năng của ODMS
1.4.2 Ngôn ngữ định nghĩa đối tượng ODL
Ngôn ngữ định nghĩa đối tượng ODL (Object Definition Language) là một ngônngữ đặc tả được dùng để định nghĩa các kiểu đối tượng theo ngữ nghĩa của mô hìnhđối tượng ODMG [13] và độc lập với các ngôn ngữ lập trình Nó được dùng để tạo
ra các đặc tả đối tượng, đó là lớp và giao diện Mục đích chính của ODL là:
- Hỗ trợ để thiết lập các cấu trúc ngữ nghĩa của mô hình đối tượng ODMG
- Không phải là một ngôn ngữ lập trình đầy đủ mà là ngôn ngữ định nghĩa đặc
tả đối tượng
- Độc lập với các ngôn ngữ lập trình (Language – Independent)
- Tương thích với ngôn ngữ định nghĩa giao diện IDL (Interface Definition Language) của OMG
- Có thể phát triển mở rộng, không chỉ đối với các chức năng trong tương lai
Trang 281.4.3 Ngôn ngữ truy vấn đối tượng OQL
Trong các hệ thống CSDL hướng đối tượng, các câu truy vấn hướng đối tượngOQL (Object Query Language) được biểu diễn giống như trong SQL [14], [19], [20].OQL là một ngôn ngữ truy vấn CSDL hướng đối tượng được đề xuất trong ODMG-
93. OQL cung cấp một môi trường phong phú để truy vấn CSDL đối tượng một cáchhiệu quả, kể cả những cơ sở mức cao đối với các tập đối tượng OQL là ngôn ngữtruy vấn không đưa ra môi trường lập trình đầy đủ cho các tính toán phức tạp Vìvậy, để tăng khả năng tính toán cho OQL cần phải liên kết với các ngôn ngữ lập trìnhkhác
OQL được dùng để mô tả truy vấn và các thao tác của đối tượng; Ngôn ngữđịnh nghĩa đối tượng (ODL): sử dụng mã OQL để định nghĩa giao diện với các kiểuđối tượng; Các ngôn ngữ lập trình khác như C++, Smalltalk và Java được dùng đểcài đặt các phương thức và các chương trình ứng dụng Đồng thời có thể nhúng cáccâu lệnh OQL trong các thao tác theo mô hình CSDL hướng đối tượng
OQL được thiết kế theo hướng phát triển kế thừa, đó là thiết kế một ngôn ngữ mớiđầy đủ dựa trên SQL - ngôn ngữ chuẩn của CSDL quan hệ Thiết kế của OQL ở dạnghàm, kết quả của truy vấn có kiểu, điều này cho phép kết quả của truy vấn này là đầu vàocủa một truy vấn khác, vì vậy các truy vấn phức tạp có thể được xây dựng bằng OQL.Bằng cách tích hợp các tính năng của SQL, OQL xây dựng trên nền tảng của CSDL quan
hệ Mục đích của mô hình ODMG là duy trì một mức độ tương thích giữa kỹ thuậtCSDL hướng đối tượng và kỹ thuật CSDL đối tượng quan hệ bằng cách tích hợp cáctính năng của phiên bản tiếp theo SQL trong phiên bản mới của OQL
1.4.3.1. OQL lõi
OQL là ngôn ngữ truy vấn đối tượng được ODMG xây dựng để hỗ trợ mô hình
dữ liệu đối tượng chuẩn [14], [19]
Văn phạm của OQL có các qui tắc dẫn
Trang 29[group by (l: q, …, l: q)]
[having q]
[order by (q asc|desc, …, q asc|desc)]
Định nghĩa kiểu: Trong OQL ta có thể đặt tên các định nghĩa theo cú pháp
d ::= define x as q
| define x(x: σ, …, σ) as q
Trong đó b, f, i, c, s là các giá trị boolean, float, int, char và String tương ứng, x
là tập đếm được các định danh, l là tập đếm được các nhãn (set of labels), và C tập
đếm được tên gọi các lớp, unop và binop là tập các phép toán 1-ngôi, 2-ngôi
Các phép toán một ngôi unop = {first, last, max, min, avg, sum, count,
distinct, listtoset, element, flatten, abs, not, -}
Các phép toán hai ngôi binop = {and, or, intersect, union, except, =, !=, <, >,
<=, >=, + -, *, /, ||, mod}
1.4.3.2 Các kiểu dữ liệu trong OQL
Lược đồ suy dẫn kiểu trong ngôn ngữ truy vấn OQL
Hệ thống các kiểu dữ liệu nguyên thuỷ và các kiểu dữ liệu suy dẫn gắn với phâncấp kiểu được giới thiệu trong hình 1.6 Trên cây phân cấp, chúng ta nhận thấy rằng
các kiểu tổng quát là các nút nằm ở nút nhánh trên cây, các kiểu này sẽ không được
sử dụng trong các lược đồ CSDL (khai báo hình thức) Kiểu được gọi là kiểu đặc trưng, nếu nó được suy dẫn từ các kiểu hệ thống, tất cả các nút lá trong hình 1.6 là
các kiểu đặc trưng
Siêu kiểu Any
Kiểu phi thủ tục Kiểu hàm
Kiểu nguyên thuỷ Kiểu cấu trúc Kiểu sưu tập
boolean Kiểu có thứ tự class struct set/bag list/array
string int/float char set bag list aray
int float
Hình 1.6 Sự phân cấp các kiểu trong OQL
Trang 301.4.3.3 Truy vấn Select … From … Where
Cú pháp của khối lệnh trọng tâm Select trong OQL được qui định như sau
[19] Select [distinct] <Danh sách kết quả>
From <Danh sách lớp/sưu tập lớp>
Where <Biểu thức điều kiện>
[Group by <Các thuộc tính phân nhóm>]
[Having <Điều kiện lọc>]
[Order by (<Khoá sắp xếp> asc|desc, …)]
Trong đó, từ khoá distinct nếu sử dụng thì kết quả của truy vấn có kiểu tập đối tượng phân biệt Mệnh đề group by phân nhóm trên lớp sưu tập, các đối tượng
được nhóm theo giá trị của các thuộc tính phân nhóm Mỗi cấu trúc của nhóm chứa
một nhóm các thuộc tính và nhóm các đối tượng có cùng giá trị Mệnh đề order by
sắp thứ tự các đối tượng trong lớp sưu tập kết quả
Để truy nhập các đặc trưng của đối tượng ta sử dụng tên của đối tượng kết hợpvới tên các đặc trưng của đối tượng (thuộc tính, mối quan hệ và các phép toán) đểtruy nhập vào các thành phần của một đối tượng hoặc các đặc tính liên quan đến nó.Kiểu miền của một thuộc tính của một lớp có thể là một lớp khác Điều này quy địnhviệc đi từ các đối tượng của một lớp đến các đối tượng của một lớp khác thông quacác liên kết hợp thành
Sử dụng lược đồ CSDL quản lý nhân viên được biểu diễn trong Hình 1.7 minhhoạ cho các ví dụ về các dạng thức biểu diễn của truy vấn OQL
NhanSu
+maso : string +hoten : string +ngaysinh : string +diachi : string +SNCT : int +Luongcoban : double
NhanVien
+nql : QuanLy +phong : PhongBan +duan : DuAn
NV_BienChe
Trang 31Hình 1.7 Lược đồ CSDL Quản lý Nhân viên
Trang 32Ví dụ 1.3 Cho biết tên của các nhân viên biên chế thuộc phòng do trưởng phòng là
“Nam” quản lý
Select s.hoten
From NV_BienChe as s
Where s.PhongBan.truongphong.hoten = “Nam”
Cấu trúc như s.PhongBan.truongphong.hoten gọi là biểu thức đường dẫn Vìmỗi đối tượng có một OID, thuộc tính OID do hệ thống xác định đối với mỗi lớp Do
đó một biểu thức đường dẫn có thể xem xét như một ký hiệu viết tắt đối với việc
biểu diễn một dãy các phép nối Chẳng hạn, mệnh đề Where ở ví dụ trên có thể viết
tương đương như sau:
“s.PhongBan = PhongBan.OID and PhongBan.truongphong = PhongBan.OID andPhongBan.Hoten = „Nam”
một điều kiện cho trước.
(iii) unique – kiểm tra tính duy nhất của các đối tượng trong lớp sưu tập.
(some hay any) hay với mọi (all) cho các đối tượng thuộc (in) trong một lớp sưu tập
(vi) set inclusion – các phép toán so sánh bao hàm {<, <=, >, >=} áp dụng với
Các lớp sưu tập để kiểm tra sự bao hàm của một lớp sưu tập này và lớp kia
Cú pháp của truy vấn có lượng từ forall, exists và in là:
<Truy vấn> ::= forall <Truy vấn> in <Truy vấn> : <Truy vấn>
| exists <Tên> in <Truy vấn> : <Truy vấn>
| exists | unique (<Truy vấn>)
| <Truy vấn> <Phép toán so sánh> [some | any | all] <Truy vấn>
Các vị từ trong truy vấn CSDL hướng đối tượng có thể được thiết lập bằng cách sử
dụng các thuộc tính tập hợp và phép toán thành viên in Một số ví dụ về lượng từ.
Trang 33Truy vấn trên có thể được viết lại bằng cách sử dụng lượng từ EXISTS như sau:
Ví dụ 1.5: Select k.hoten
From NhanVien as e
Where e EXISTS diachi = “Hà Nội”
Lượng từ với mọi forall có thể được áp dụng cho các thuộc tính tập đối với các
dạng vị từ Đường dẫn không chứa thuộc tính tập hợp gọi là đơn trị, ngược lại gọi làgiá trị - tập Các vị từ có thể sử dụng trong các biểu thức đường dẫn
Ví dụ 1.6 Biểu thức đường dẫn có thể có nhiều hơn một lượng từ với sự kết hợp
giữa exist và forall.
Select e.phongban
From PhongBan as e
Where e EXISTS phongban.forall DU_AN.tenduan = “ Bảo trì”
1.4.3.5 Biến tham chiếu
Biến vùng mô tả cho một biểu thức đường dẫn có thuộc tính cuối cùng là một
thuộc tính phức được gọi là biến tham chiếu Người ta sử dụng các biến vùng biểu
diễn cho các đối tượng của lớp trong một biểu thức đường dẫn
Ví dụ 1.7: Select s.tenphong
From PhongBan as s, s.duan as f
Where s.ngansach < f.chiphi
Trong đó, f là một biết tham chiếu đến các đối tượng thuộc lớp PhongBan.
Ví dụ trên có thể được viết tương đương như sau:
Select s.tenphong
From PhongBan as s
Where s.ngansach < s.duan.chiphi
1.4.3.6 Phương thức tham chiếu
Phương thức trong truy vấn OQL được thể hiện qua hai dạng Dạng thứ nhất là
phương thức thuộc tính – suy dẫn, sử dụng để tính giá trị cho mỗi đối tượng trong lớp
mà phương thức tác động Phương thức thuộc tính – suy dẫn có thể được sử dụng giống
như một thuộc tính trong truy vấn Dạng thứ hai là phương thức tân từ, trả về một giá trị
kiểu boolean đối với mỗi đối tượng trong lớp Ví dụ, ta có phương thức “VienDaiHoc() :
Boolean” trên lớp DaiHoc, phương thức này trả về giá trị true nếu Đại học có trên 5 trường thành viên hoặc trên 30.000 sinh viên và false nếu ngược lại.
1.4.3.7 Kết xuất một cấu trúc
Mô hình dữ liệu hướng đối tượng cho phép sử dụng các đối tượng có cấu trúc tập,danh sách và bộ để thiết lập các đối tượng phức từ các đối tượng đơn Ngôn ngữ truyvấn OQL cho phép thiết lập các giá trị phức trong kết quả trả về của một truy vấn
Trang 34bằng việc dùng các phép toán thiết lập kiểu đối tượng phức ở mệnh đề Select với cúpháp:
<Truy vấn>::= struct ([<Định danh>:<Truy vấn> [, <Định danh>:<Truy vấn> ] *] )
|set | bag | list | array ([<Truy vấn> [,<Truy vấn>]*] )
Ví dụ 1.8.
Baotri: select c
from s.DuAn as c where c.tenduan = “Bảo trì”)
1.5.1 Phép toán đối tượng
Mỗi đối tượng được biểu diễn như một bộ ba (OID, Tên lớp, Giá trị), OID là định danh của đối tượng, Tên lớp là kiểu của đối tượng và Giá trị của đối tượng do
người sử dụng định nghĩa thường là kiểu bộ Có ba phép toán đối tượng:
- Chiếu lấy định danh (πO): phép toán πO nhận vào một đối tượng và trả về địnhdanh của đối tượng
- Chiều lấy giá trị (πV): phép toán πV nhận vào một đối tượng và trả về giá trị của đối tượng
- Chiếu lấy đối tượng (πD): phép toán πD nhận vào một định danh đối tượng và trả về đối tượng có định danh tương ứng
Trang 35- Phép toán hợp: set_union.
- Phép toán hiệu: set_diff.
- Phép toán chọn trên tập hợp σsλs.f(): phép toán nhận vào một tập (thường là mộttập đối tượng) và trả về một tập (đối tượng) sao cho mỗi phần tử ở tập kết quả
đều thoả mãn điều kiện mô tả trong công thức f.
Ví dụ: cho A = {2, 6, 4, 9}, σsλs.s > 5 (A) = {6, 9} Ký hiệu “λ” trong “λs” được
dùng như một biến đếm các phần tử trong tập đã cho Với tập đã cho là một lớp, s là
một biến thể hiện lớp
- Phép toán làm phẳng tập set_flat(): phép toán set_flat nhận vào một tập các tập
và trả về một tập chứa phần hợp của các tập lồng nhau Ví dụ, set_flat({1, 2, 3},
λ π (h o ten ,tu o i) ( πV ( S )) (NhanVien)
1.5.4 Phép toán bag “túi”
Các phép toán trên kiểu dữ liệu bag gồm có: thiết lập bag, hợp, hiệu, chọn, làm phẳng, áp dụng hàm trên bag: bag(), bag_union(), bag_diff(), σbλs.f (), bag_flat(),
loại bỏ các trùng lặp trong “túi”
1.5.5 Phép toán trên danh sách
Thiết lập danh sách, lấy phần tử đầu tiên, lấy phần tử cuối cùng, ghép danh
sách, chọn, làm phẳng, áp dụng hàm: list(), first(), last(), list_cat(), σlλs.f (), list_flat(), list_applyλs.e ().
1.5.6 Phép toán trên mảng
- Thiết lập mảng, ghép mảng, áp dụng: array(), array_cat(), array_ applyλs.e().
- Trích xuất phần tử πi() : phép toán này trả về phần tử thứ i trong mảng đã cho.
- Chiếu mảng πi,j(), j > i: phép toán trả về một mảng con chứa các phần tử có chỉ
số từ i đến j của mảng đã cho.
UML là ngôn ngữ mô hình hóa, ngôn ngữ đặc tả và ngôn ngữ xây dựng mô hìnhtrong quá trình phát triển phần mềm, đặc biệt là trong phân tích và thiết kế hệ thốnghướng đối tượng Chương 1 trình bày các khái niệm cơ bản như đối tượng, định danh
Trang 36đối tượng, lớp, kiểu và quan trong nhất là quan hệ kế thừa Giới thiệu về ngôn ngữtruy vấn CSDL hướng đối tượng OQL và đại số đối tượng để viết lại các truy vấn đốitượng dưới dạng các biểu thức đại số Ngôn ngữ truy vấn hướng đối tượng OQLcung cấp khá nhiều kiểu dữ liệu thích hợp trong mô hình CSDL hướng đối tượng,đảm bảo cho sự đặc tả các đối tượng phức một cách phong phú và linh hoạt Đó lànhững kiến thức cần thiết để phục vụ cho các chương sau Ta thấy rằng CSDL hướngđối tượng tập chung xử lý về dữ liệu, nhằm làm cho chương trình trở nên linh hoạt,tin cậy và dễ phát triển Hơn thế tính đột phá của cơ sở dữ liệu hướng đối tượng làchúng cho phép người thiết kế đặc tả cấu trúc của các đối tượng cùng với cácphương thức thực hiện trên đối tượng đó.
Trang 37Chương 2 TỐI ƯU HÓA TRUY VẤN CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI
TƯỢNG2.1 Giới thiệu
Khi thực thi một truy vấn, có thể có nhiều phương án mà hệ thống CSDL chophép xử lý Các phương án đều có kết quả cuối cùng là tương đương về kết quả tínhtoán nhưng khác nhau về chi phí thực hiện, tức là tổng thời gian cần để thực hiện mộttruy vấn Lựa chọn phương án nào để có tổng thời gian thực hiện truy vấn là nhỏnhất Như vậy, vấn đề cần quan tâm là làm sao cực tiểu tần suất sử dụng của CPU, bộnhớ, chi phí vào/ra và các nguồn tài nguyên về lĩnh vực truyền thông Với kỹ thuậtphần cứng hiện nay việc tối ưu thực thi một truy vấn chỉ còn là vấn đề làm cực tiểuthời gian trả lời của truy vấn, trong khi đó các hệ thống lại chịu sự chi phối chính ởthời gian trao đổi vào/ ra Do đó, chúng ta cần lựa chọn phương án nào để có tổngthời gian thực hiện là nhỏ nhất? Để giải quyết vấn đề đó, chúng ta cần dùng cácphương pháp để tối ưu hoá truy vấn trong các hệ thống quản trị CSDL
Trong những năm gần đây vấn đề tối ưu hoá truy vấn hướng đối tượng đượcnhiều nhà nghiên cứu quan tâm, các kỹ thuật tối ưu hoá truy vấn được phát triển cótính kế thừa từ mô hình CSDL quan hệ như dựa vào sự chuyển đổi lược đồ CSDLhướng đối tượng sang lược đồ quan hệ nhúng, thực hiện phương pháp biên dịch truyvấn đối tượng OQL về truy vấn quan hệ SQL Việc sử dụng CSDL quan hệ nhúnglàm nền trong lưu trữ vật lý và các thao tác dữ liệu được thực hiện qua giao diệnhướng đối tượng là giải pháp ứng dụng phù hợp cho một số hệ thống CSDL đốitượng – quan hệ Bên cạnh đó, để giải quyết cho một lớp các truy vấn đối tượngkhông lồng, có thể sử dụng phương pháp tối ưu truy vấn dựa trên tập luật biến đổiđại số đối tượng được áp dụng cho các mô hình dữ liệu hướng đối tượng có hỗ trợtập luật Phương pháp này xử lý cho lớp các truy vấn trên các kiểu đối tượng phứcnhư kiểu túi, đa tập, danh sách, bộ, …v.v, nhưng khi thực hiện trên các lớp sưu tập,các biểu thức đại số đối tượng lồng thì nó chi phí ước lượng và các phương án thựcthi truy vấn chưa hiệu quả Vì vậy, cần phải nghiên cứu các phương pháp, đề xuấtcác kỹ thuật tối ưu hóa truy vấn phù hợp cho các truy vấn đối tượng lồng
Đối với tối ưu hóa các truy vấn lồng trong CSDL hướng đối tượng đã đượcCluet, S [27] đề xuất theo cách tiếp cận hai bước Bước đầu tiên, được gọi là tối ưuhóa trên cơ sở phụ thuộc: biến đổi các truy vấn ở mức ngôn ngữ nhằm thực hiện cácbiểu thức con chung và các truy vấn con độc lập một cách hiệu quả hơn Các truy vấn
đã biến đổi được biên dịch thành các biểu thức đại số lồng nhau Sự định giá các
Trang 38vòng lặp lồng nhau có thể không hiệu quả Vì vậy, ở bước hai xử lý cho các truy vấncon lồng trong giai đoạn “làm phẳng” các biểu thức đại số lồng nhau giúp cho phépđịnh giá hiệu quả hơn Trong luận văn, tập chung nghiên cứu cách tiếp cận phươngpháp biểu diễn các truy vấn lồng bằng siêu đồ thị kết nối Xuất phát từ ý tưởng biểudiễn và tối ưu hóa các truy vấn bằng siêu đồ thị của J.D Ullman [12] và Han [16] trênngôn ngữ QUEL/SQL, Chúng tôi nghiên cứu mở rộng thuật toán tối ưu hóa câu truyvấn Wong-Youssefi trong ngôn ngữ truy vấn OQL trên CSDL hướng đối tượng vàđưa ra phương pháp ước lượng chi phí phụ thuộc tỷ số giữa số các đối tượng củalớp bắt đầu trong biểu thức đường dẫn và tổng số các đối tượng của lớp, dựa trênmối quan hệ nhiều - nhiều giữa các lớp Tỷ số này là một trong những tham số lựachọn trong quá trình thiết kế CSDL.
2.1.1 Siêu đồ thị kết nối
Siêu đồ thị là sự tổng quát hóa của một đồ thị, trong đó một cạnh có thể nối với
bất kỳ đỉnh nào Về mặt hình thức, một siêu đồ thị H là một cặp H = (V, E) chứa một
tập các đỉnh V và tập các siêu cạnh E Trong đó, tập đỉnh V tương ứng với tập cácmục dữ liệu (hay gọi là thuộc tính), và mỗi siêu cạnh e ∈ E tương ứng với một tậpcác mục dữ liệu có liên quan với nhau (lớp, điều kiện) Khái niệm siêu đồ thị là sự
mở rộng của một đồ thị mà mỗi siêu cạnh của nó được kết nối từ tập các đỉnh Ta cósiêu đồ thị được thể hiện như trong hình 2.1 sau [9]:
2.1.2 Siêu đồ thị kết nối đối tượng
Trước hết, một cách hình thức ta xét định nghĩa của khái niệm siêu đồ thị kếtnối đối tượng như sau [6, 12, 16]
Trang 39Định nghĩa 2.1: Siêu đồ thị kết nối đối tượng là một bộ sáu:
H = (C H , V H , E H , L H , S H , lb H ), trong đó:
(iii) L H : là tập hữu hạn các nhãn.
các siêu cạnh biểu diễn các lớp đối tượng và các thành phần của truy vấn
Từ định nghĩa 2.1 (trong các phần sau, siêu đồ thị kết nối đối tượng được gọitắt là siêu đồ thị), truy vấn OQL được biểu diễn bằng ký pháp siêu đồ thị như sau:
tập các thuộc tính thuộc các lớp tham gia truy vấn Mỗi thuộc tính của lớp C i được biểu thị bằng một nút Nếu hai lớp C i và C j đều có cùng một số các thuộctính kế thừa từ một siêu lớp nào đó, hoặc chúng cùng kế thừa tất cả các thuộctính từ một siêu lớp, ta tạo riêng cho các thuộc tính này các nút khác nhau
- Các siêu cạnh của siêu đồ thị được tạo thành từ các biểu thức điều kiện và các
lớp C i Xét biểu thức điều kiện trong mệnh đề Where, các biểu thức điều kiện
+ A Φ B, Φ ∈ {is, in, union, diff, forall, exists,…}
+ Đối với mỗi lớp C i, có một siêu cạnh chứa tất cả các nút là các thuộc tính của
C i , ta gọi là siêu cạnh đối tượng và được vẽ bằng một đường liền nét khép kín bao
quanh tất cả các nút của siêu cạnh Gán nhãn là tên của lớp
+ Điều kiện có dạng (2.1) trong siêu đồ thị, được gán nhãn nút là “A = a”
+ Biểu thức điều kiện có dạng “A = B” (dạng 2.2), với A, B là các thuộc tínhtrong hai lớp (có thể cùng là những thuộc tính được kế thừa từ một siêu lớp nào đó),thì chúng ta “trộn” các nút A và B lại với nhau đặt nhãn chung là tên của một trong
Trang 40hai thuộc tính.
+ Với biểu thức điều kiện dạng (2.3) hay (2.4), chúng ta sẽ tạo ra một siêu cạnh
chứa các thuộc tính có mặt trong biểu thức Những siêu cạnh này được gọi là siêu cạnh điều kiện và chúng được biểu thị bằng đường nét chấm khép kín.
- Nếu có hai điều kiện trên cùng một tập thuộc tính, ta phải đặt nhãn riêng cho mỗi siêu cạnh để có thể phân biệt được chúng
- Các thuộc tính trong mệnh đề Select được bao trong một đường liền nét khép
kín và gán nhãn là “head ”, gọi là siêu cạnh đỉnh Siêu cạnh đỉnh tương ứng với
một lớp kết quả của truy vấn
phép toán { IS, IN, UNION, FORALL, EXIST, ….} của các truy vấn con lồng
nhau, được vẽ bằng đường nét rời khép kín bao quanh các thuộc tính có liênquan Các siêu cạnh kết nhập được gán nhãn tương ứng với tên các phép toán
Truy vấn đơn trong OQL chỉ có một khối Select … From … Where (SFW);
nhưng truy vấn lồng có nhiều hơn một khối SFW Truy vấn lồng biểu diễn bằng mộtsiêu đồ thị được xây dựng từ các siêu đồ thị của các khối SFW đơn và liên kết vớinhau qua các siêu cạnh kết nhập
Ví dụ 2.1: Xét siêu đồ thị kết nối đối tượng biểu diễn truy vấn