You are on page 1of 35

Giới thiệu

Hệ CSDL quan hệ - đối tượng

Nội dung

Hệ CSDL quan hệ - Đối tượng Oracle


(ORDB - Object-relational database)

1 Giới thiệu

2 Hệ CSDL quan hệ - đối tượng


Kiểu - TYPE
Bảng TABLE
Định danh

Phạm Thị Ngọc Diễm OODB


Giới thiệu
Hệ CSDL quan hệ - đối tượng

Giới thiệu Mô hình quan hệ đối tượng

Mở rộng của mô hình quan hệ bằng cách thêm các khái niệm
để lấp đầy các lỗ hỏng của mô hình quan hệ.
Việc xây dựng các đối tượng phức tạp bằng cách sử dụng
nhiều bảng => rất tốn kém vì dùng nhiều phép kết nối.
Để tránh kết nối, mô hình quan hệ - đối tượng cho phép:
Tham chiếu : cho phép cài đặt các cấu trúc phức.
Thuộc tính đa trị (danh sách, tập hợp, mảng)
Sử dụng tham chiếu làm cho việc sử dụng các dữ liệu kích
thước lớn như hình ảnh, âm thanh được dễ dàng.
Tương thích : các chức năng được thực thi trong mô hình
quan hệ cũng được thực thi trong mô hình quan hệ đối tượng.
Chuẩn SQL 3 cho mô hình quan hệ - đối tượng.

Phạm Thị Ngọc Diễm OODB


Giới thiệu
Hệ CSDL quan hệ - đối tượng

Mô hình quan hệ - đối tượng I

Mô hình quan hệ: không thể định nghĩa kiểu dữ liệu mới.
Mô hình quan hệ - đối tượng : có thể định nghĩa những kiểu
dữ liệu mới:
Đơn giản
Có cấu trúc
Hàm hoặc thủ tục kết hợp
Hỗ trợ kế thừa, đa hình
Cột có thể bao gồm một tập ( collection): danh sách, tập
hợp, etc.
Dòng được xem như một đối tượng với định danh OID.
Sử dụng tham chiếu đến các đối tượng => hạn chế nối kết
Có thể có những quan hệ (bảng) lồng nhau => hạn chế nối
kết
4

Phạm Thị Ngọc Diễm OODB


Giới thiệu
Hệ CSDL quan hệ - đối tượng

Mô hình quan hệ - đối tượng II

Hạn chế
Không có mô hình lý thuyết vững chắc như mô hình quan hệ
Không được chuẩn hóa, cài đặt khác nhau trong các DBMS
Quan hệ không còn ở dạng chuẩn thứ nhất NF2 . (Non First
Normal Form)

Phạm Thị Ngọc Diễm OODB


Giới thiệu
Hệ CSDL quan hệ - đối tượng

SQL 3

SQL 3 = SQL 2 cho CSDL quan hệ + các khái niệm mở rộng


liên quan đến đối tượng, đa phương tiện, etc.
Tương thích SQL 2.
Những CSDL và các ứng dụng sử dụng SQL 2 => vận hành
với SQL 3.
=> chuyển dễ dàng từ mô hình quan hệ sang quan hệ đối
tượng.
Thêm các kiểu dữ liệu mới:
Định nghĩa sẵn : tham chiếu, tập hợp, dữ liệu kích thước lớn.
Người sử dụng định nghĩa: định nghĩa kiểu đơn giản từ kiểu cơ
bản, kiểu có cấu trúc.
Kế thừa

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Hệ CSDL quan hệ - đối tượng

Khái niệm bảng hầu như không đổi


Khái niệm mới TYPE mô tả :
Cấu trúc phức và đa trị
Định nghĩa dưới hình thức những đối tượng
Các phương thức
Phân cấp kế thừa của các kiểu.
Hàm tạo mới : REF cho phép định nghĩa các quan hệ cấu
thành .
3 kiểu bảng (table) :
Bảng thỏa 1NF
Bảng không thỏa 1NF gồm các giá trị có cấu trúc
Bảng các đối tượng

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Nội dung

1 Giới thiệu

2 Hệ CSDL quan hệ - đối tượng


Kiểu - TYPE
Bảng TABLE
Định danh

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Giới thiệu chung

Kiểu định nghĩa sẵn thường dùng trong SQL : CHAR,


VARCHAR, NUMBER, DATE. . .
Kiểu do người dùng định nghĩa :
Đa trị :
TYPE VARRAY : vector
TYPE nested TABLE : bảng được xen vào vị trí của một giá
trị
Cấu trúc phức (tùy trường hợp với OID)
Giá trị phức
Đối tượng (oid, giá trị phức)

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Kiểu VARRAY

CREATE TYPE <typeName> AS VARRAY (<nbmax>)


OF <typeName1>
typeName1 : (CHAR, VARCHAR, NUMBER. . . ) hoặc kiểu
người sử dụng định nghĩa
Số phần tử có thể mở rộng vào lúc thực thi.
Ví dụ:

10

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Kiểu bảng lồng nhau NESTED TABLE I


CREATE TYPE <typeName> AS TABLE OF
<typeName1>
typeName1 : (CHAR, VARCHAR, NUMBER. . . ) hoặc kiểu
người sử dụng định nghĩa.
=> Đa trị kiểu bảng : tập các phần tử cùng kiểu, không có số
phần tử tối đa, không có thứ tự, có thể lập chỉ mục.
Ví dụ:

11

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Kiểu bảng lồng nhau NESTED TABLE II

Chú ý:
Oracle cho phép nhiều mức lồng nhau
Table_tel là tên vật lý của bảng lồng nhau => không sử
dụng tên này trong các câu truy vấn
Thêm giá trị :
INSERT INTO Nguoi
VALUES (’111111111’, ’Nathalie’, T_tel(’123456789’,
’109876789’))
Sử dụng bảng được lồng nhau : sử dụng từ khóa THE
INSERT INTO THE ( SELECT tel FROM Nguoi WHERE
CMND=’111111111’) VALUES ( (’789’) ) ;

12

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Kiểu đối tượng OBJECT I


CREATE TYPE <typeName> AS OBJECT (<name1
typeName1, name2 typeName2, ...> [<Định nghĩa phương
thức>])
typeNamei : (CHAR, VARCHAR, NUMBER. . . ) hoặc kiểu
người sử dụng định nghĩa.
Hai cách sử dụng : Hàm tạo giá trị phức hoặc hàm tạo
đối tượng (oid) .
Ví dụ: sử dụng như hàm tạo giá trị phức

13

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Kiểu đối tượng OBJECT II


Ví dụ: sử dụng như hàm tạo đối tượng

Tạo một bảng đối tượng kiểu T_Nguoi


=> Có thể tạo nhiều bảng đối tượng kiểu T_Nguoi
INSERT INTO TapNguoi VALUES (
T_Nguoi(’12345123451’, ’Rochat’, . . . ));
=> Tạo một đối tượng (oid+ giá trị), bền vững, được lưu trữ
trong TapNguoi
Bảng TapNguoi có một cột ẩn chứa oid của đối tượng được
quản lý bởi SGBD .
Cột này được index tự động => tìm kiếm nhanh. 14

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Nội dung

1 Giới thiệu

2 Hệ CSDL quan hệ - đối tượng


Kiểu - TYPE
Bảng TABLE
Định danh

15

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Ba kiểu bảng I

Bảng quan hệ kiểu cũ : thỏa 1NF

Bảng những giá trị có cấu trúc : không thỏa 1NF

16

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Ba kiểu bảng II

Bảng đối tượng : tập các đối tượng

Có thể kết hợp với cấu trúc bảng các ràng buộc

17

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Kiểu lồng nhau

SQL cho phép mô tả các thuộc tính phức và đa trị ở nhiều


mức:
Thuộc tính phức (TYPE OBJECT)
Thuộc tính đa trị (TYPE VARRAY hoặc NESTED TABLE)
Ví dụ:

18

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Truy xuất các giá trị phức kiểu đối tượng

Truy xuất nhờ vào khái niệm con trỏ :

Ví dụ :
SELECT p.dchi.tinhTP
FROM Nguoi p
WHERE p.CMND = ’12345123451’;

19

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Truy xuất các giá trị đa trị - VARRAY và TABLE I

Những toán tử thông dụng SQL


Điều kiện : <element> IN <collection>
Điều kiện : EXIST <collection>
Mới: khai báo một biến trên một tập hợp :
SELECT . . . FROM tableName t , TABLE (t.multiAtt) v ...
=> truy xuất và cập nhật hoặc trên toàn bộ bảng hoặc một
trong những thành phần của nó.

20

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Truy xuất các giá trị đa trị - VARRAY và TABLE II

Ví dụ :

21

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Truy xuất các giá trị đa trị - VARRAY và TABLE III


Truy xuất toàn tập hợp :

=> Có thể cập nhật và xóa các NESTED TABLE trực tiếp với
SQL sử dụng hàm TABLE() nhưng không thể cập nhật và xóa các
thành phần VARRAY với SQL. 22

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Nội dung

1 Giới thiệu

2 Hệ CSDL quan hệ - đối tượng


Kiểu - TYPE
Bảng TABLE
Định danh

23

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Định danh - Thuộc tính tham chiếu

Kiểu OBJECT: Có định danh => có thể được tham


chiếu bởi một liên kết cấu thành.
Giá trị có cấu trúc
Thuộc tính tham chiếu (liên kết cấu thành):
<Thuộc tính> REF <tên kiểu>
Ví dụ:

24

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Hai kiểu thuộc tính tham chiếu I

Khóa ngoài : dựa trên giá trị của khóa


=> không có hướng
Ví dụ :

Tham chiếu REF <typeName> : liên kết cấu thành (oid)


Có hướng
SGBD không quản lý quan hệ đảo
SGBD không cho phép cập nhật vào lúc xóa đối tượng hợp
thành => Chú ý: Những tham chiếu không hợp lệ !
25

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Hai kiểu thuộc tính tham chiếu II

Tham chiếu REF <typeName> : liên kết cấu thành (oid)


(tt)
Ví dụ :

26

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Thao tác các thuộc tính tham chiếu đối tượng I

Ba kiểu thao tác các OID và giá trị các đối tượng
REF (object) : Phép toán này trả về OID của đối tượng.
VALUE(object): Phép toán này trả về giá trị có cấu trúc
dưới hình thức TypeName(value).
DEREF(oid) : Phép toán này trả về giá trị có cấu trúc dưới
hình thức TypeName(value).

27

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Thao tác các thuộc tính tham chiếu đối tượng II

Các hàm khác trên các đối tượng


IS DANGLING : Cho phép kiểm tra một thuộc tính tham
chiếu có được khởi tạo hay không :
<thuộc tính tham chiếu> IS DANGLING
=> trả về TRUE nếu <thuộc tính tham chiếu> không được
khởi tạo
SELECT p.ho FROM NguoiThue p WHERE p.tamtru IS
DANGLING;
OBJECT_VALUE: Định danh giá trị của một dòng hình
thành bảng các đối tượng.
OBJECT_ID: Định danh OID của một dòng hình thành
bảng các đối tượng.
SELECT p.OBJECT_VALUE, p.OBJECT_ID
FROM CacToTien p ; 28

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Thao tác các thuộc tính tham chiếu đối tượng III
Ví dụ:

29

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Phương thức

Mỗi kiểu đối tượng OBJECT có thể có phương thức


CREATE TYPE <typeName> AS OBJECT ( <khai báo
các thuộc tính> , <Khai báo các phương thức>)
Khai báo phương thức: CREATE TYPE <tên kiểu> AS
OBJECT ( <khai báo các thuộc tính> <Khai báo các
phương thức>)
MEMBER FUNCTION <tên phương thức>( <tham số 1 [
IN / OUT/ IN OUT ] kiểu1 , . . . .>) RETURN <kiểu trả về>
MEMBER PROCEDURE <tên phương thức>( <tham số 1
[ IN / OUT/ IN OUT ] kiểu1 , . . . .>)

30

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Thân của kiểu đối tượng

Bao gồm code của phương thức, code có thể bao gồm :
Lệnh PL/SQL hoặc Java
Lệnh SQL
Lời gọi phương thức
CREATE TYPE BODY <tên kiểu> AS
MEMBER FUNCTION/PROCEDURE <tên phương
thức_1>( <tham số_11 [ IN / OUT/ IN OUT ] kiểu_11 ,
. . . .>)
BEGIN <thân phương thức_11> END
MEMBER FUNCTION/PROCEDURE <tên phương
thức_2>( <tham số_21 [ IN / OUT/ IN OUT ] kiểu_21 ,
. . . .>)
BEGIN <thân phương thức_21> END

31

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Kế thừa các kiểu I

Có thể tạo các kiểu con của kiểu OBJECT => Kế thừa các
thuộc tính và phương thức
Có thể định nghĩa lại các phương thức trong kiểu con
Không hỗ trợ đa kế thừa
Chú ý: Không có kế thừa TABLE nhưng một bảng đối tượng
kiểu cha có thể bao gồm các đối tượng dạng thức kiểu cha và
các kiểu con của nó.

32

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Kế thừa các kiểu II


Ví dụ:

Chú ý: Hai bảng TapNguoi va Tapsinhvien là hoàn toàn độc


lập nhau.
33

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Kế thừa các kiểu III

Ví dụ (tt):
TapNguoi có thể bao gồm đối tượng kiểu T_Nguoi và
Sinhvien

Tương tự, thuộc tính tham chiếu vochong có thể bao gồm
một OID đối tượng kiểu T_Nguoi hoặc Sinhvien.

34

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Kế thừa các kiểu IV

Phép toán điều kiện IS OF dạng:


VALUE (object) IS OF (<tên kiểu con>)
=> Đúng nếu và chỉ nếu object có kiểu là <tên kiểu con>
Ví dụ:
SELECT p.* FROM TapNguoi p
WHERE VALUE(p) IS OF (Sinhvien) ;
=> Trả về các đối tượng TapNguoi kiểu Sinhvien

35

Phạm Thị Ngọc Diễm OODB


Kiểu - TYPE
Giới thiệu
Bảng TABLE
Hệ CSDL quan hệ - đối tượng
Định danh

Kế thừa các kiểu V

Hai cách sử dụng hàm TREAT()


Chuyển kiểu cha thành kiểu con.
Ví dụ: hiển thị tất cả sinh viên
SELECT TREAT( VALUE(p) AS Sinhvien)
FROM TapNguoi p;
Truy xuất các thuộc tính của kiểu con.
Ví dụ:
SELECT TREAT( VALUE(p) AS Sinhvien).khoa
FROM TapNguoi p;

36

Phạm Thị Ngọc Diễm OODB

You might also like