Bài giảng Cơ sở dữ liệu nâng cao: Chương 2 Tổng quan Cơ sở dữ liệu hướng đối tượng cung cấp cho người học những kiến thức như: Giới thiệu; Mô hình dữ liệu; Cơ sở dữ liệu hướng đối tượng; Các hệ quản trị Cơ sở dữ liệu hướng đối tượng; Ưu điểm của Cơ sở dữ liệu hướng đối tượng; Chuyển đổi từ mô hình đối tượng sang mô hình quan hệ; Phân tích, thiết kế Cơ sở dữ liệu hướng đối tượng với UML.
Trang 1Bài giảng
CƠ SỞ DỮ LIỆU
NÂNG CAO
Số tc: 2; LT: 20; Btập: 10 GV: Nguyễn Thị Mỹ Dung Khối lớp: Đại học L2
1 Chương 2: CSDL Hướng đối tượng
Trang 2NỘI DUNG MÔN HỌC
Chương 1 Tổng quan CSDL phân tán (4)
Chương 2 Tổng quan CSDL hướng đối tượng
Chương 3 Cơ bản về Oracle (4)
7 Chương 7: Truy vấn trong CSDL HĐT (4)
Chương 2: CSDL Hướng đối tượng
Trang 3V Ƣu điểm của CSDL HĐT
VI Chuyển đổi từ mô hình đối tƣợng sang mô
hình quan hệ
VII Phân tích, thiết kế CSDL HĐT với UML
3 Chương 2: CSDL Hướng đối tượng
Trang 44
I Giới thiệu
Các khái niệm của hướng đối tượng bao gồm:
Định danh đối tượng (OID); Nạp chồng (Overriding); Viết đè (Overloading); Đa hình (Polymorphism); Liên kết động (Dynamic binding); Đối tượng phức (complex object)
Định danh đối tượng (OID: Object Identifier):
Trong RDBMS: OID= khóa chính Trong OODBMS: khoá chính không dùng làm OID, vì: khoá chính chỉ duy nhất trong 1 quan hệ, không phải trên toàn hệ thống; khoá chính được chọn từ các thuộc tính phụ thuộc vào trạng thái của đối tượng
Chương 2: CSDL Hướng đối tượng
Trang 55
Định danh đối tượng (tt)
Cần phân biệt 2 trường hợp:
2 đối tượng là một (identical): cùng OID
2 đối tượng bằng nhau (equal): khác OID, nhưng trị các thuộc tính bằng nhau:
Bằng cạn (shallow equality): khi loại bỏ hết các
tham chiếu (khoá ngoài) đến các đối tượng khác
Bằng sâu (deep equality): khi tất cả các đối
tượng được tham chiếu đến cũng bằng nhau
Chương 2: CSDL Hướng đối tượng
Trang 6Chương 2: CSDL Hướng đối tượng
Trang 77
Giới thiệu (tt)
Viết đè (Overloading)
Là khái niệm tổng quát hơn overriding
Cho phép tên một phương thức được dùng lại trong một hoặc nhiều định nghĩa cho lớp
Có thể thay đổi trong định nghĩa phương thức:
Các tham số: về số lượng tham số, kiểu tham số, kiểu trả về
Làm đơn giản hoá trình ứng dụng: cho phép ngữ cảnh được xác định ý nghĩa nào thích đáng nhất tại một thời điểm
Chương 2: CSDL Hướng đối tượng
Trang 8Về sự bao hàm (inclusion polymorphism): một phương thức trong lớp cha được thừa kê trong lớp con
Về tham số, hay còn gọi về khuôn dạng chung (parametric polymorphism/ genericity): dùng các kiểu như các tham số, để định ra các template
Chương 2: CSDL Hướng đối tượng
Trang 99
Giới thiệu (tt)
Liên kết động (Dynamic binding)
Gắn kết (binding)= quá trình chọn phương thức thích hợp, dựa trên kiểu của đối tượng
Quá trình gắn kết động/ gắn kết trễ (dynamic binding /late binding): việc xác định kiểu đối tượng được trì hoãn đến lúc khai thác chương trình, chứ không phải ngay khi biên dịch
Chương 2: CSDL Hướng đối tượng
Trang 1010
Giới thiệu (tt)
Đối tượng phức (complex object)
Là đối tượng gồm các đối tượng con, hoặc các thành tố khác
Đối tượng được chứa sẽ được kiểm soát theo 2 cách:
Được bao gói bên trong đối tượng phức, là một
thành phần của đối tượng phức, chỉ được truy cập thông qua phương thức của đối tượng phức
Họăc, tồn tại độ clập ngoài đối tượng phức, và
chỉ có OID của nó được đặt trong đối tượng phức
Chương 2: CSDL Hướng đối tượng
Trang 113 Tính bao gói 7 DML phải đầy đủ về tính toán
4 Kiểu và lớp 8 Tập các kiểu dữ liệu phải mở rộng
được
Các đặc tính thuộc hướng đối tượng
Trang 12Giới thiệu (tt)
9 Có tính bền vững dữ liệu 12 Phải phục hồi được từ
các sự cố phần cứng và phần mềm
10 Phải kiểm soát được
Các đặc tính thuộc hướng đối tượng
Trang 1313
Ví dụ mô hình đối tƣợng
SVien
Ten Lop Nganh
LapTKB() InBangDiem()
Diem
DiemTH DiemLT DiemPrj SuaDiem()
HPhan
Ten SLuong 0 *
Trang 14void set_makh(char * bmakh);
void set_tenkh(char * btenkh);
};
Chương 2: CSDL Hướng đối tượng
Trang 15II Mô hình dữ liệu
Complex Object
Model
Object-Oriented Databases
Trang 16 Quan hệ (relational): 1980 - nay
Hướng đối tượng (object-oriented): 1990 - nay
Đối tượng - quan hệ (object-relational): 1990 -
Trang 17 Nhu nhu cầu giảm chi phí, bài toán ngày một phức tạp
và các chức năng hướng tới một mục tiêu là vượt lên trong môi trường cạnh tranh gay gắt ngày nay
Từ quan điểm của công nghệ, xuất hiện áp lực thúc đẩy
việc áp dụng các công nghệ hướng đối tượng, nguyên tắc và phương pháp tiếp cận trong suốt chu trình phát triển phần mềm
Mục tiêu là cung cấp một dòng mới của cơ sở dữ liệu,
được thiết kế và tối ưu hóa để lưu trữ và thao tác trên các đối tượng
Tại sao phải xây dựng mô hình đối tượng
Trang 181 Khái niệm
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
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
Thuộc tính khoá có thể được sử dụng để xác định các bộ dữ liệu ở những bảng khác được gọi là khoá
ngoại (foreign key)
III Cơ sở dữ liệu đối tượng
Trang 19Mục đích của CSDLHĐT là để quản trị hiệu quả những kiểu dữ liệu phức hợp như âm thanh,
khắc phục những hạn chế của CSDL quan hệ
Trang 20CSDL đối tƣợng (tt)
2 Kiến trúc của CSDL đối tượng
CSDL đối tượng được tối ưu hóa cho truy cập điều hướng và điều phối các đối tượng giữa các máy chủ cơ sở
dữ liệu Server và Client
Client-server architecture of an ODBMS
Trang 21Một chương trình (đối tượng) có thể trao đổi với các đối tượng khác (phần mềm khác) bằng cách gửi
và nhận thông điệp (message) Các phương thức được cung cấp bởi các đối tượng sẽ xác định một tập thông điệp cần trao đổi với nhau ĐT 1
ĐT 2
ĐT 3
Trang 22CSDL đối tƣợng (3 tt)
b Kế thừa (Inheritance) và sử dụng lại (Reuse)
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, 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ột đố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 đại diện cho mội đối tượng của lớp con
Quan hệ kế thừa tuân theo qui luật 100%, nghĩa là các đối tượng của lớp con đều có tất cả các mối quan hệ giống như đối tượng của lớp cha đối với các lớp khác
Trang 23CSDL đối tƣợng (3 tt)
Có 2 loại kế thừa cơ bản:
Kế thừa đơn (Single Inheritance)
Trang 24CSDL đối tƣợng (3 tt)
c Đa trị ( Polymorphism )
Đa trị hay tương ứng bội là khái niệm rất mạnh của toán học: một thông điệp (lời gọi hàm) có nhiều nội dung thực hiện khác nhau, mỗi đối tượng nhận được sẽ thực hiện theo ngữ cảnh riêng
Khái niệm này liên quan chặt chẽ với khái niệm kế thừa đã nêu Các phương thức của các lớp dẫn xuất (lớp
kế thừa) có thể định nghĩa lại (viết đè – Overriding) những phương thức của lớp cha
Trong một lớp, có thể có những phương thức cùng tên (name) nhưng cho phép định nghĩa nhiều nội dung thực hiện khác nhau theo cơ chế nạp chồng (Overloading)
Để thực hiện được những khái niệm trên thì ngôn ngữ lập trình phải hỗ trợ liên kết động
Trang 25Shape
paint()
Rectangle
paint() paint(Point x)
Trang 26Object-Oriented Databases (OODB) =
Object Orientation + Database Capabilities
Trang 27IV Các hệ quản trị CSDLĐT
Hệ quản trị CSDLĐT là mở rộng sử dụng ngôn ngữ
lập trình hướng đối tượng:
Đảm bảo tính nhất quán dữ liệu (Persistent data)
Điều khiển sự truy cập tương tranh (Concurrency
Control)
Cho phép truy vấn kết hợp (Associative Queries)
Khôi phục dữ liệu (Data Recovery), v.v
Việc lựa chọn hệ quản trị dữ liệu CSDLĐT phụ
thuộc vào ba yếu tố chính:
Nhu cầu nghiệp vụ
Đòi hỏi hiệu năng cao
Dữ liệu phức tạp
Trang 28• Informix: Illustra (Informix-Universal Server)
Trang 29V Ƣu điểm của các CSDL ĐT
ĐT có khả năng lưu trữ các kiểu phức hợp, kiểu được định nghĩa bởi NSD, các lớp và thao tác trên chúng một cách dễ
dàng
phần mềm
hiện cả những ràng buộc không cấu trúc để chương trình phải thoả mãn khi nó thực hiện trong CSDL Một CSDLHĐT
có thể dẫn về một CSDLQH được chuẩn hoá
Trang 30Ƣu điểm (tt)
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ệ QT CSDL thay cho những đoạn chương trình của
NSD
độc lập có thể 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ất làm thuận tiện hơn cho việc tìm hiểu và tích hợp thông tin
Trang 31Nhược điểm của các hệ QTCSDL HĐT
Thiếu cơ sở lý thuyết và chuẩn hoá Các hệ CSDL QH được thiết kế và xây dựng dựa trê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 đặt nhưng thiếu cơ sở lý thuyết hình thức Hậu quả là các sản phẩm QTCSDL HĐT rất khác nhau và gây ra nhiều trở ngại cho quá trình phát triển ứng dụng khi không muốn phụ thuộc vào các hãng sản xuất phần mềm hệ 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ỏ, tham chiếu lạ
Khó mở rộng logic Các sản phẩm hiện nay đều không có sự độc lập dữ liệu cần thiết và chưa có các quan sát (view) CSDL tương tự như các hệ QTCSDL QH
Chưa hỗ trợ các siêu (meta) ứng dụng Một số hệ QTCSDL HĐT dựa vào C++ không thực hiện được liên kết động, liên kết lúc thực hiện, mà chỉ cung cấp liên kết tĩnh, liên kết lúc dịch chương trình ứng dụng Hạn chế này là do hạn chế của ngôn ngữ C++ sử dụng những khai báo về kiểu để sinh mã chương trình tối ưu trong quá trình biên dịch và sau đó huỷ bỏ các khai báo đó Ngược lại, hầu hết các CSDL QH và những hệ QTCSDL HĐT dựa vào Smallalk hỗ trợ cho cả liên kết tĩnh
và liên kết động
Trang 32Nhƣợc điểm (tt)
Khó mở rộng logic Các sản phẩm hiện nay đều không
có sự độc lập dữ liệu cần thiết và chưa có các quan sát (view) CSDL tương tự như các hệ QTCSDL QH
Chưa hỗ trợ các siêu (meta) ứng dụng Một số hệ QTCSDL HĐT dựa vào C++ không thực hiện được liên kết động, liên kết lúc thực hiện, mà chỉ cung cấp liên kết tĩnh, liên kết lúc dịch chương trình ứng dụng Hạn chế này là do hạn chế của ngôn ngữ C++ sử dụng những khai báo về kiểu để sinh mã chương trình tối ưu trong quá trình biên dịch và sau đó huỷ bỏ các khai báo đó Ngược lại, hầu hết các CSDL QH và những hệ QTCSDL HĐT dựa vào Smallalk hỗ trợ cho
cả liên kết tĩnh và liên kết động
Trang 33Hệ QTCSDL HĐT thích hợp với những ứng dụng mới:
Những ứng dụng thiết kế công nghệ Các hệ QTCSDL HĐT rất phù hợp cho những chương trình thiết kế ứng dụng, như thiết kế với sự trợ giúp máy tí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úp của máy tính (CASE: Computer-Aided Software Engineering )
Các ứng dụng đa phương tiện (Multimedia) như hệ Jasmine Các hệ QTCSDL HĐT rất thích hợp cho những ứng dụng đa phương tiện với những đồ hoạ, audio, video phức hợp
Trang 34Ứng dụng mới (tt)
Các cơ sở tri thức Các luật của các hệ chuyên gia rất khó lưu trữ trong cá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ật xem tính phi mâu thuẫn và dư thừa của
hệ thống có bị vi phạm hay không Hệ QTCSDL HĐT có thể hỗ trợ để thực hiện công việc trên ở mức thấp
nhập cần thiết vào các dịch vụ mức thấp
hợp để tạo ra những phần mềm nhúng vào các thiết bị điện, các thiết bị điều khiển, v.v
Trang 35VI Chuyển đổi từ mô hình đối tƣợng sang mô
hình quan hệ
Có một số cách thức thực hiện:
Một trong các cách sử dụng phổ biến là là định nghĩa một bảng cho mỗi lớp, trong đó mỗi cột trong bảng đại diện cho một thuộc tính của lớp (đơn trị, hoặc đa trị)
Employee_Table
Trang 36Chuyển đổi… (tt)
Tất cả các thuộc tính của Employee được lưu trong
bảng Employee
Những thuộc tính trên cùng với các thuộc tính bổ
sung của HourlyEmployee sẽ được copy để lưu bảng HourlyEmployee
Tương tự đối với bảng SalariedEmployee
Trang 37Chuyển đổi… (tt)
Nhận xét :
Việc chuyển mô hình đối tượng về quan hệ khi có
kế thừa sẽ phải copy các thuộc tính của lớp cha sang lưu vào lớp con nên không bảo đảm được các dạng chuẩn dữ liệu
Một khi các sơ đồ cần thiết đã được định nghĩa mã
chuyển đổi từ đối tượng sang quan hệ được ghi
Mã này là cần thiết để có một đối tượng, khi nó được tạo ra và xử lý trong các ngôn ngữ lập trình
và loại bỏ cấu trúc (deconstruct) để biểu diễn chúng theo yêu cầu của cơ sở dữ liệu
Trang 38Chuyển đổi… (tt)
Ngoài ra, khi cần tìm các đối tượng
HourlyEmployee trong CSDL thì phải kết nối các bảng HourlyEmployee và Employee Như vậy sẽ tốn kém thời gian
Vấn đề quan trọng nữa là khi cập nhật thông tin,
vì có nhiều mối quan hệ giữa các bảng thực thể nên độ phức tạp sẽ càng tăng
Trang 39Chuyển đổi … (tt)
Mỗi tập thực thể của mô hình ER chuyển đổi thành một lớp đối tượng có cùng tên và cùng tập thuộc tính Các thuộc tính đa trị và phức hợp của mô hình ER được chuyển thành các thuộc tính đa trị (sử
dụng từ khoá set) và phức hợp (sử dụng từ khoá
tuple) của mô hình hướng đối tượng
Việc xác định các phương thức cho mỗi lớp đối tượng được thực hiện sau đó bởi người thiết kế hệ thống CSDL
Trang 40Quy tắc 1 (Quy tắc chuyển đổi mối quan hệ is-a)
Nếu tập thực thể A là có mối quan hệ is-a với tập thực thể B thỡ lớp A sẽ kế thừa tất cả các thuộc tính trong lớp B (tức: lớp A là lớp con của lớp B)
luong tuoi
Các quy tắc
Trang 41Quy tắc 2 (Quy tắc chuyển đổi mối quan hệ nhị nguyên không có thuộc tính)
Nếu 2 tập thực thể A và B có mối quan hệ R thì mỗi lớp tương ứng A và B sẽ được bổ sung thêm thuộc tính mối quan hệ R (khai báo thuộc tính đa trị/đơn trị là tuỳ thuộc vào bản số liên quan) Cụ thể:
Xét hai trường hợp sau:
* Trường hợp 1: Nếu chỉ số cực đại của cung nối A và R là 1, thì
thuộc tính R trong lớp A sẽ được khai báo:
<Tên thuộc tính R>: <Lớp B>;
* Trường hợp 2: Nếu chỉ số cực đại của cung nối A và R là n, thì,
thuộc tính R trong lớp A sẽ được khai báo:
<Tên thuộc tính R>: set(<Lớp B>);
Các quy tắc
Trang 42Mô hình quan hệ
TRUONGKHOA(id_tk, hoten, tuoi)
KHOA(id_k, tenkhoa, sodienthoai,
Trang 43Ví dụ: (Mối quan hệ 1-nhiều)
Tenkhoa: String;
Sodienthoai: String;
Thuoc: set(GIAOVIEN); End KHOA
Mô hình quan hệ
GIAOVIEN(id_gv, hoten, tuoi, id_k)
KHOA(id_k, tenkhoa, sodienthoai)
Trang 44Ví dụ: (Mối quan hệ nhiều-nhiều)
Mô hình hướng đối tượng
Mô hình ER
Mô hình quan hệ
GIAOVIEN(id_gv, hoten, tuoi)
MON(id_m, tenmon, sotiet)
Trang 45Nếu mối quan hệ R của hai tập thực thể A1 và A2 có kèm các thuộc tính, khi đó, ngoài 2 lớp A1 và A2 tương ứng, ta cần bổ sung thêm một lớp mới C đóng vai trò trung gian Cụ thể:
Lớp C bao gồm các thuộc tính sau:
Các thuộc tính của mối quan hệ R
Hai thuộc tính có khai báo: