69
Chương 8 Chương 8 CSDL HƯỚNG ĐỐI TƯỢNG CSDL HƯỚNG ĐỐI TƯỢNG

Slide co-so-du-lieu-chuong-8-csdl-huong-doi-tuong

Embed Size (px)

Citation preview

Chương 8Chương 8

CSDL HƯỚNG ĐỐI TƯỢNGCSDL HƯỚNG ĐỐI TƯỢNG

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 2

Nội dung chi tiết

Mô hình cơ sở dữ liệu hướng đối tượng- Từ CSDL quan hệ đến CSDL hướng đối tượng- Hệ quản trị cơ sở dữ liệu hướng đối tượng

Ngôn ngữ mô tả và truy vấn CSDL Hướng đối tượng theo chuẩn ODMG- Mô hình đối tượng- Ngôn ngữ khai báo lược đồ: ODL(Object Define

Language)- Ngôn ngữ truy vấn đối tượng: OQL (Object Query

Language)

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 3

Mô hình csdl hướng đối tượng

Từ csdl quan hệ đến csdl đối tượng- Đánh giá csdl quan hệ- Các loại ứng dụng csdl mới- Một số hướng giải quyết

Hệ quản trị CSDL hướng đối tượng- Khái niệm về đối tượng trong CSDL- Các đặc trưng của một hệ quản trị CSDL đối tượng- Các sản phẩm của hệ quản trị CSDL đối tượng

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 4

Mô hình csdl hướng đối tượng

Từ csdl quan hệ đến csdl đối tượng- Đánh giá csdl quan hệ- Các loại ứng dụng csdl mới- Một số hướng giải quyết

Hệ quản trị CSDL hướng đối tượng- Khái niệm về đối tượng trong CSDL- Các đặc trưng của một hệ quản trị CSDL đối tượng- Các sản phẩm của hệ quản trị CSDL đối tượng

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 5

Đánh giá CSDL quan hệ Ưu điểm

- Nền tảng toán học vững chắc, đã được nghiên cứu sâu, kết quả khả quan

- Có nhiều hqt csdl làm môi trường để phát triển- Mô hình dữ liệu đơn giản, rõ ràng chính xác- Phù hợp cho nhiều dạng ứng dụng CSDL, đặc biệt là

ứng dụng quản lý- Ngôn ngữ truy vấn phi thủ tục => tối ưu câu truy vấn- Đảm bảo tính toàn vẹn dữ liệu- …..

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 6

Đánh giá CSDL quan hệ Khuyết điểm

- Mô hình nghèo nàn dưới góc độ ngữ nghĩa(diễn đạt dưới khái niệm quan hệ giữa hai đối tượng)

- Ngôn ngữ truy vấn không đầy đủ, một số nhà sản xuất Hqt csdl phải xây dựng thêm trình biên dịch riêng của Hqtcsdl, xây dựng giao diện liên kết để tận dụng tính năng của các trình biên dịch(C,Java,…)

- Hệ thống khép kín( trong một số lĩnh vực ứng dụng có những thứ không thể biểu diễn bằng thuộc tính và quan hệ.)

- Dữ liệu và chương trình tách bạch khó nhìn thấy sự tiến hóa của đối tượng

- …

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 7

Mô hình csdl hướng đối tượng

Từ csdl quan hệ đến csdl đối tượng- Đánh giá csdl quan hệ- Các loại ứng dụng csdl mới- Một số hướng giải quyết

Hệ quản trị CSDL hướng đối tượng- Khái niệm về đối tượng trong CSDL- Các đặc trưng của một hệ quản trị CSDL đối tượng- Các sản phẩm của hệ quản trị CSDL đối tượng

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 8

Các loại ứng dụng csdl mới Hệ thống hỗ trợ ra quyết định Hệ thống thông tin địa lý GIS Hệ cơ sở dữ liệu thống kê Hệ thống quản lý dòng công việc …..

Nhận xét: Các loại ứng dụng csdl trên hiện nay vẫn được xây dựng với hqt csdl quan hệ nhưng rất phức tạp và thường phải bỏ tính đặc thù của ứng dụng.

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 9

Mô hình csdl hướng đối tượng

Từ csdl quan hệ đến csdl đối tượng- Đánh giá csdl quan hệ- Các loại ứng dụng csdl mới- Một số hướng giải quyết

Hệ quản trị CSDL hướng đối tượng- Khái niệm về đối tượng trong CSDL- Các đặc trưng của một hệ quản trị CSDL đối tượng- Các sản phẩm của hệ quản trị CSDL đối tượng

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 10

Một số hướng giải quyết Mở rộng mô hình quan hệ (bắt đầu từ thập niên 70)

- 1976: Mô hình thực thể kết hợp- 1978: SDM(Semantic Data Model)- 1979-1981: RM/T(Relational Model/Tasmanis)…

Đưa ra mô hình mới Cách tiếp cận suy dẫn Cách tiếp cận đối tượng: nguồn gốc chính là là sự

kết hợp giữa thành tựu CSDL với ngôn ngữ lập trình hướng đối tượng

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 11

Một số hướng giải quyết Hai chiều hướng nghiên cứu

CSDL NNLT HĐT:- Từ NNLT HĐT có thể hiệu chỉnh mô hình CSDL- Cho ra đời CSDL thuần đối tượng: xây dựng các ứng dụng

mang tính hệ thống, ví dụ: ứng dụng viễn thông, giám sát hệ thống mạng diện rộng…

CSDL NNLT hướng đối tượng

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 12

Một số hướng giải quyết CSDL NNLT HĐT:

- Từ mô hình CSDL để tìm ngôn ngữ giống với lập trình hướng đối tượng.

- Hướng nghiên cứu này chiếm ưu thế và đạt nhiều khả quan

- Thành tựu: Mô hình CSDL đối tượng + Ngôn ngữ truy vấn đối tượng Quan hệ Mô hình CSDL đối tượng quan hệ

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 13

Mô hình csdl hướng đối tượng

Từ csdl quan hệ đến csdl đối tượng- Đánh giá csdl quan hệ- Các loại ứng dụng csdl mới- Một số hướng giải quyết

Hệ quản trị CSDL hướng đối tượng- Khái niệm về đối tượng trong CSDL- Các đặc trưng của một hệ quản trị CSDL đối tượng- Các sản phẩm của hệ quản trị CSDL đối tượng

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 14

Mô hình csdl hướng đối tượng

Từ csdl quan hệ đến csdl đối tượng- Đánh giá csdl quan hệ- Các loại ứng dụng csdl mới- Một số hướng giải quyết

Hệ quản trị CSDL hướng đối tượng- Khái niệm về đối tượng trong CSDL- Các đặc trưng của một hệ quản trị CSDL đối tượng- Các sản phẩm của hệ quản trị CSDL đối tượng

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 15

Khái niệm về đối tượng trong CSDL

Đối tượng

Dữ liệu

Data Structure

Thao tác

(phép toán)

Method

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 16

Khái niệm về đối tượng trong CSDL

NHÂN VIÊN

MASV

TÊN NV

NTNS…

Tạo NV mới

Sửa thông tin 1 NV

Xóa 1 NV

Tính tuổi

Lấy lương NV

….

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 17

Khái niệm đối tượng trong CSDL

Phoøng NV

1 : 1

1 :n

NV_VP NV_SX

QuanheäTHÖØAKEÁ

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 18

Khái niệm đối tượng trong CSDL Quan hệ kết hợp

1:1

m:n

1:n

Extends, Isa

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 19

Mô hình csdl hướng đối tượng

Từ csdl quan hệ đến csdl đối tượng- Đánh giá csdl quan hệ- Các loại ứng dụng csdl mới- Một số hướng giải quyết

Hệ quản trị CSDL hướng đối tượng- Khái niệm về đối tượng trong CSDL- Các đặc trưng của một hệ quản trị CSDL đối tượng- Các sản phẩm của hệ quản trị CSDL đối tượng

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 20

Các đặc trưng của Hqtcsdl HĐT

Luật vàng: Đây là các luật bắt buộc, bao gồm- 5 Luật mà mọi hệ quản trị csdl đều có- 7 luật đặc trưng của hệ quản trị csdl hướng đối tượng

Luật tùy chọn Luật mở

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 21

Các đặc trưng của Hqtcsdl HĐT Luật vàng

5 Luật mà mọi hệ cơ sở dữ liệu đều có:• Luật 1: Tồn tại với sự cố• Luật 2: Quản lý đĩa• Luật 3: Ổn định và trung thực• Luật 4: Chia xẻ• Luật 5: Khả năng truy vấn trực tiếp

7 Luật đặc trưng của hqt csdl hướng đối tượng: Luật 6: Đối tượng phức bao bọc những xử lý Luật 7: Chỉ danh đối tượng(tự động phát sinh) Luật 8: Bao bọc Luật 9: Lớp Luật 10: Thừa kế Luật 11: Kết buộc động Luật 12: Tính đầy đủ

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 22

Các đặc trưng của Hqtcsdl HĐT

Luật tùy chọn Thừa kế bội: giải quyết vấn đề mâu thuẩn Quản lý các phiên bản của đối tượng Quản lý các XAC lớn, dài Tính đa xạ: liên kết động là một phần của tính đa xạ Quản lý các ràng buộc toàn vẹn

Luật mở: Lớp đối tượng, kiểu dữ liệu trừu tượng: làm sao để cho

csdl hướng đối tượng có cơ sở vững chắc giống như csdl quan hệ

Ngữ nghĩa của thao tác xóa(muốn xóa ở mức vật lý)

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 23

Mô hình csdl hướng đối tượng

Từ csdl quan hệ đến csdl đối tượng- Đánh giá csdl quan hệ- Các loại ứng dụng csdl mới- Một số hướng giải quyết

Hệ quản trị CSDL hướng đối tượng- Khái niệm về đối tượng trong CSDL- Các đặc trưng của một hệ quản trị CSDL đối tượng- Các sản phẩm của hệ quản trị CSDL đối tượng

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 24

Các sản phẩm của hqtcsdl đối tượng

Các sản phẩm của phòng thí nghiệm rất nhiều, trên 20 sản phẩm

Sản phẩm Hqt csdl đối tượng- quan hệ:- Sản phẩm của hướng nghiên cứu CSDL NNLT

hướng đối tượng- O2, Gemstone, Ontos, Orion II, Ob Server,

Hệ thuần đối tượng:- Sản phẩm của hướng nghiên cứu CSDL NNLT

hướng đối tượng- Jasmin : của Fujutsu, sau này được Computer

Associate (CA) mua lại

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 25

Nội dung chi tiết

Mô hình cơ sở dữ liệu hướng đối tượng- Từ CSDL quan hệ đến CSDL hướng đối tượng- Hệ quản trị cơ sở dữ liệu hướng đối tượng

Ngôn ngữ mô tả và truy vấn CSDL Hướng đối tượng theo chuẩn ODMG- Giới thiệu- Mô hình đối tượng- Ngôn ngữ khai báo lược đồ: ODL(Object Define

Language)- Ngôn ngữ truy vấn đối tượng: OQL (Object Query

Language)

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 26

Nội dung chi tiết

Mô hình cơ sở dữ liệu hướng đối tượng- Từ CSDL quan hệ đến CSDL hướng đối tượng- Hệ quản trị cơ sở dữ liệu hướng đối tượng

Ngôn ngữ mô tả và truy vấn CSDL Hướng đối tượng theo chuẩn ODMG- Giới thiệu - Mô hình đối tượng- Ngôn ngữ khai báo lược đồ: ODL(Object Define

Language)- Ngôn ngữ truy vấn đối tượng: OQL (Object Query

Language)

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 27

Giới thiệu ODMG(Object Database Management Group)

- Nhóm phát triển DBMS OO- Thành lập năm 1991 để định nghĩa các chuẩn CSDL đối

tượng.- Xuất bản “The ODMG-93 standard” một chuẩn về csdl

đối tượng.- Được công nhận thành chuẩn bởi ANSI,OMG,…- Cải tiến và nâng cấp phiên bản ODMG năm

1995,1997(2.0 hỗ trợ Java) và 1999(3.0)- Các ngôn ngữ CSDL OO: ODL, OQL

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 28

Nội dung chi tiết

Mô hình cơ sở dữ liệu hướng đối tượng- Từ CSDL quan hệ đến CSDL hướng đối tượng- Hệ quản trị cơ sở dữ liệu hướng đối tượng

Ngôn ngữ mô tả và truy vấn CSDL Hướng đối tượng theo chuẩn ODMG- Giới thiệu - Mô hình đối tượng- Ngôn ngữ khai báo lược đồ: ODL(Object Define

Language)- Ngôn ngữ truy vấn đối tượng: OQL (Object Query

Language)

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 29

Mô hình đối tượng Có các kiểu:

- Lớp(Class): khai báo đầy đủ cả 2 phần Đặc trưng Thao tác

- Giao diện(Interface): chỉ có thao tác- Phần xử lý ngoại lệ(nếu có): đi kèm trong phần thao tác Nhận xét:

Thừa kế hành vi: Không cho thừa kế đặc trưng Giao diện: chỉ có phần xử lý, không có phần thông tin lưu

trong CSDL Thông tin chỉ thật sự lưu trữ trong Lớp(Class)

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 30

Mô hình đối tượng(tt) Kiểu con: có hai loại thừa kế

- Thừa kế ISA: kiểu con thừa kế từ Interface → chỉ thừa kế hành vi

- Thừa kế EXTENDS: kiểu con thừa kế từ Class→ cho thừa kế cả hành vi và đặc trưng.

Thừa kế bội:- Chỉ cho thừa kế hành vi(giao diện) ISA- Không chấp nhận mẫu thuẩn thao tác trùng tên(nếu thao

tác trùng tên thì không chấp nhận thừa kế hành vi)

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 31

Mô hình đối tượng(tt) Qui ước ký hiệu:

Ví dụ

GD LỚP

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 32

Mô hình đối tượng(tt) Ví dụ: Lược đồ csdl cho một trường đại học

ISA

ISA

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 33

Mô hình đối tượng(tt) Nhận xét:

- Quan hệ thừa kế extends đối với lớp- Quan hệ thừa kế isa đối với giao diện- Chỉ cho thừa kế bội với isa- Cần đặt tên cả hai chiều của quan hệ:

- Dựa vào số mũi tên ở hai đầu quan hệ để xác định loại quan hệ(1:1, 1:n, n:m)

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 34

Mô hình đối tượng(tt) Nhận xét(tt)

- Giao diện không có đối tượng cụ thể nào(giao diện không có đặc trưng)

- Quan hệ thừa kế: Đối với lớp: có thể thừa kế ISA từ nhiều lớp hay giao diện và

có thể thừa kế extends từ một lớp duy nhất. Đối với giao diện: có thể thừa kế ISA từ nhiều lớp hay giao

diện, không thừa kế extends từ bất kỳ lớp nào.

- Trong trường hợp có nhiều thông tin của một đối tượng có liên quan đến nhau, ta có thể tách cách thông tin này ra tạo thành một class gắn với đối tượng ban đầu. Ví dụ:

Đối tượng lương chỉ có thuộc tính không có quan hệ

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 35

Mô hình đối tượng(tt) Nhận xét(tt):

- Xét quan hệ giữa GD_SV và LỚP_HỌC Thực chất giao diện GD_SV không lưu được đặc trưng. Quan hệ này thật sự được khai báo và lưu trữ trong lớp SV

và TG. Giao diện GD_SV chỉ khai báo nhưng không lưu trữ.

- Kiểu của một đối tượng Lớp: có đủ đặc trưng, quan hệ ngữ nghĩa, thao tác, xử lý

ngoại lệ GD: chỉ có thao tác, xử lý ngoại lệ

- Đặc trưng = thuộc tính + mối quan hệ ngữ nghĩa(2chiều)

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 36

Nội dung chi tiết

Mô hình cơ sở dữ liệu hướng đối tượng- Từ CSDL quan hệ đến CSDL hướng đối tượng- Hệ quản trị cơ sở dữ liệu hướng đối tượng

Ngôn ngữ mô tả và truy vấn CSDL Hướng đối tượng theo chuẩn ODMG- Giới thiệu - Mô hình đối tượng- Ngôn ngữ khai báo lược đồ: ODL(Object Define

Language)- Ngôn ngữ truy vấn đối tượng: OQL (Object Query

Language)

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 37

Ngôn ngữ khai báo lược đồ- ODL

Từ khóa khai báo lớp/giao diện:- Lớp: Class- Giao diện: Interface

Giao diện:

Lưu ý: Có thể khai báo đặc trưng trong giao diện nhưng đặc trưng không được lưu trữ trong giao diện mà chỉ được lưu trữ thật sự trong lớp

Interface <tên giao diện>[:<tên lớp cha|tên giao diện>]

{

[<đặc trưng>]

<thao tác>

};

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 38

Ngôn ngữ khai báo lược đồ- ODL(tt)

Lớp:

Class <tên lớp>[EXTENDS <tên lớp cha 1>]

[:<tên lớp cha 2|tên giao diện cha 2>]

(

extent <tên tập đối tượng thuộc lớp>

[Key(s) <khóa 1>[<khóa2>,…]]

)

{

<đặc trưng>

<thao tác>

[<xử lý ngoại lệ>]

};

Có thể xem tên tập đối tượng thuộc lớp giống như bảng dữ

liệu

CSDL hướng đối tượng không dùng khóa này để quản lý đối tượng nhưng

NSD sẽ sử dụng

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 39

Ngôn ngữ khai báo lược đồ- ODL(tt)

Lưu ý: Đối với lớp, phải khai báo quan hệ thừa kế EXTENDS trước, khai báo quan hệ kế thừa ISA sau.

Đặc trưng:- Đặc trưng bao gồm các thuộc tính và các mối quan hệ.- Thứ tự khai báo thuộc tính và mối quan hệ không quan

trọng.- Tuy nhiên nên khai báo theo thứ tự: thuộc tính trước,

quan hệ sau- Khai báo thuộc tính:

[readonly] attribute <tên miền giá trị> <tên thuộc tính>

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 40

Ngôn ngữ khai báo lược đồ- ODL(tt)

- Khai báo mối quan hệ

Phải có đủ cặp relationship và inverse để xác định cả hai chiều của một quan hệ(quan hệ chiều xuôi và chiều ngược)

Dùng từ khóa Realationship để khai báo quan hệ chiều xuôi. Quan hệ 1:1 theo chiều xuôi: không dùng từ khóa set,bag, list hay

array. Quan hệ 1:n theo chiều xuôi phải khai báo rõ là set, bag, list hay array

Từ khóa inverse chỉ dùng để cho biết quan ngược.

Relationship [set|bag|list|array] <tên lớp có qhệ đến><tên qhệ chiều xuôi>

Inverse <tên lớp có qhệ đến>::<tên qhệ chiều ngược>

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 41

Ngôn ngữ khai báo lược đồ- ODL(tt)

Phân biệt set, bag, list và array- Set: các đối tượng thuộc lớp không được trùng, không

có thứ tự.- Bag: các đối tượng thuộc lớp được phép trùng, không

có thứ tự.- List: các đối tượng thuộc lớp được sắp xếp theo thứ tự,

truy xuất tuần tự.- Array: các đối tượng thuộc lớp được sắp xếp theo thứ

tự, truy xuất ngẫu nhiên.

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 42

Ngôn ngữ khai báo lược đồ- ODL(tt)

Ví dụ: Định nghĩa cho class LUONG

Vì lớp LUONG chỉ gồm thông tin thuộc tính, không có thông tin về quan hệ ngữ nghĩa. Đây là phần lớn thông tin trong đối tượng NV được tách ra thành lớp riêng nên không đặc tên cho tập đối tượng.

Class LUONG

{

attribute float luong_co_ban;

attribute float luong_ngoai_gio;

attribute thuong;

};

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 43

Ngôn ngữ khai báo lược đồ- ODL(tt)

Ví dụ định nghĩa cho lớp NV

Class NV

(extent DM_NV)

{

attribute string ten_nv;

attribute short ma_nv;

attribute LUONG luong_nv;

….

};

Tên tập đối tượng

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 44

Ngôn ngữ khai báo lược đồ- ODL(tt)

Ví dụ: định nghĩa cho lớp TG

Class TG EXTENDS NV : GD_SV

{

relationship <LỚP_HỌC> Phụ_giảng

inverse <LỚP_HỌC> :: có_tg_là;

attribute string ho_ten;

attribute short ma_so;

attribute struct dia_ch;

relationship set <LỚP_HỌC> đăng_ký_dự

inverse <LỚP_HỌC> :: có_sv_đk;

….

};

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 45

Ngôn ngữ khai báo lược đồ- ODL(tt)

Nhận xét:- Nếu không khai báo tên tập đối tượng thuộc lớp TG(khai

báo với từ khóa extent) thì các đối tượng này sẽ được lưu trữ chung với đối tượng NV.

- Nếu khai báo tên tập đối tượng thuộc lớp TG thì các đối tượng này sẽ được lưu trữ riêng

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 46

Ngôn ngữ khai báo lược đồ- ODL(tt)

Ví dụ: định nghĩa cho lớp MÔN

Class MÔN

(extent DM_MÔN)

{

attribute string Tên_M;

attribute string Mã_M;

relationship list <LỚP_HỌC> có_lớp

inverse <LỚP_HỌC> :: thuộc;

relationship set <MÔN> có_môn_tq;

inverse <MÔN> :: là_môn_tq_của;

relationship set <MÔN> là_môn_tq_của;

inverse <MÔN> :: có_môn_tq;

Boolean mở(in unsigned short học_kỳ)

raise (đã có mở)

Boolean hủy(in unsigned short học_kỳ)

raise (không mở)

};

Xử lý ngoại lệ

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 47

Nội dung chi tiết

Mô hình cơ sở dữ liệu hướng đối tượng- Từ CSDL quan hệ đến CSDL hướng đối tượng- Hệ quản trị cơ sở dữ liệu hướng đối tượng

Ngôn ngữ mô tả và truy vấn CSDL Hướng đối tượng theo chuẩn ODMG- Giới thiệu - Mô hình đối tượng- Ngôn ngữ khai báo lược đồ: ODL(Object Define

Language)- Ngôn ngữ truy vấn đối tượng: OQL (Object Query

Language)

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 48

Ngôn ngữ truy vấn đối tượng- OQL

Nguyên tắc:- Mô hình đối tượng của ODMG- Mở rộng SQL2(SQL92): khái niệm về đối tượng phức,

OID(Object ID), biểu thức đường dẫn, tính đa xạ, kích hoạt thao tác, kết buộc động.

- Thủ tục cơ sở: set, bag, list, array- Ngôn ngữ hàm: ngôn ngữ thủ tục.

Một số đặc điểm cần chú ý:- Đầu vào một câu truy vấn:

Tên một đối tượng Tên một lớp đối tượng Tên thuộc tính

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 49

Ngôn ngữ truy vấn đối tượng-OQL(tt)

Tên đường dẫn/chuỗi đường dẫn

- Kết quả một câu truy vấn: Một đối tượng Một tập các đối tượng: set, bag, list, array Một tập literal Một literal cụ thể

- Biểu thức đường dẫn Giả sử qui ước: c: đối tượng; C: lớp; A: thuộc tính của lớp C,

r: tên mối quan hệ; p: tên thao tác. Cách truy xuất:

c.A: một đường dẫn c.r: một đối tượng hay một tập đối tượng thuộc lớp có quan hệ với c c.p(…): thực hiện thao tác p, kết quả trả về là kết quả của thao tác

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 50

Ngôn ngữ truy vấn đối tượng-OQL(tt)

Ví dụ:

N _ S Ö Ï

T e ân Ñ òa ch æ

ch a_ m e ï v ô ï_ ch o àn g

attribute struct địa_chỉ

( unsigned short số_nhà,

string đường,

string quận,

string th_phố

) Đchỉ;

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 51

Ngôn ngữ truy vấn đối tượng-OQL(tt)

Nhận xét:- N.vợ_chồng.Đchỉ.th_phố là một biểu thức đường dẫn

hợp lệ.- Muốn đi tiếp theo được thì kết quả của biểu thức đường

dẫn phía trước là duy nhất(không được phép là tập hợp)- Nếu không phải là duy nhất mà là một tập hợp thì phải

dừng lại để sử dụng câu truy vấn. Xử lý giá trị rỗng(null)

- Các luật xử lý giá trị trống: (a) Thông qua . vế trái là KXĐ(không xác định) kết

quả là không xác định. (b) Biểu thức so sánh =, !=, >, <, >=, <=: một trong hai vế là

không xác định kết quả là sai.

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 52

Ngôn ngữ truy vấn đối tượng-OQL(tt)

(c) Là_KXĐ(KXĐ) = Đ

Là_XĐ(KXĐ) = S (d) Với những thao tác khác: có một vế không xác định kết quả

báo lỗi.

Ví dụ:- Giả sử ta có các đối tượng sau:

N1 sống tại Tp.HCM N2 sống tại Hà Nội N3 sống tại ?

- Xét câu truy vấn 1:

Select n.Đchỉ.th_phố

From DMN_SỰ n Nếu N3 có Đchỉ nhưng th_phố rỗng: báo lỗi(luật d) Nếu N3 có Đchỉ trống: báo lỗi

Phải là tên tập đối tượng

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 53

Ngôn ngữ truy vấn đối tượng-OQL(tt)

- Xét câu truy vấn 2:Select n.Đchỉ.th_phố

From DMN_SU nWhere Là_XĐ(n.Đchỉ.th_phố) Việc thực hiện câu truy vấn 2 không bị báo lỗi

- Xét câu truy vấn 3: lấy ra những nhân sự không sống ở Tp. HCMSelect nFrom DMN_SU nWhere not(n.Đchỉ.th_phố = ‘TP HCM’) Kết quả câu truy vấn bao gồm tất cả các nhân viên có thành

phố khác với ‘TP HCM’ và những nhân viên không có thông tin về TP

Kết quả câu truy vấn là N2 và N3

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 54

Ngôn ngữ truy vấn đối tượng-OQL(tt)

- Xét câu truy vấn 4:

Select n

From DMN_SU n

Where (n.Đchỉ.th_phố != ‘Tp.HCM’)

Kết quả câu truy vấn chỉ bao gồm tất cả các nhân viên có thành phố khác với ‘Tp.HCM’, những nhân viên có thành phố là KXĐ đều bị bỏ qua.

Do N3 có th_phố không xác định nên biểu thức điều kiện Where là sai

Kết quả câu truy vấn chỉ có N2

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 55

Ngôn ngữ truy vấn đối tượng-OQL(tt)

- Cách kích hoạt một thao tác(phương pháp) Chèn n.p bất kỳ chổ nào được Ví dụ:

Select max(select c.tuổi From n2.con c)

From DMN_SU n2

Where n2.Tên = ‘Nguyễn Văn A’

Nếu tên hàm và tên thuộc tính trùng nhau, để giải quyết đụng độ tên hàm ta thêm cặp dấu (), (ví dụ: tuổi()).

Nếu hàm có tham số ta chỉ việc đặc tham số vào trong cặp dấu () của hàm.

Hàm tính tuổi của N_SỰ

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 56

Ngôn ngữ truy vấn đối tượng-OQL(tt)

Các dạng câu truy vấn- Đặt tên cho câu truy vấn:

Define NVA() as

Select n

From DMN_SU n

Where n.Tên = ‘Nguyễn Văn A’

Tên được đặt cho câu truy vấn không được là tên của đối tượng, tên của phương thức, tên hàm, hay tên lớp trong lược đồ.

Sau từ khóa From bắt buộc là Extent(tên của lớp đối tượng), không được phép là tên Class.

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 57

Ngôn ngữ truy vấn đối tượng-OQL(tt)

- Các phép toán với câu truy vấn: Có thể sử dụng các phép toán(nếu phù hợp)

Phép toán số học: TV+TV, TV-TV, TV*TV,TV/TV Phép toán logic: not TV, TV and TV, TV or TV. Phép toán so sánh: = , !=, >, <, >=, <=, like

- Set/Bag/List/Array: Set ([TV, {TV, TV, …}]) Bag ([TV, {TV, TV, …}]) List ([TV, {TV, TV, …}]) Array ([TV, {TV, TV, …}])

- TV:tên_thuộc_tính/tên_mối_quan_hệ/tên_thao_tác First(TV) Last(TV) Hàm(TV)

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 58

Ngôn ngữ truy vấn đối tượng-OQL(tt)

- Biểu thức tập hợp:For all <tên biến> in <tên_tập>:<điều kiện>

Exist(TV): kết quả là đúng/saiUnique(TV): kết quả là đúng/saiTV in TV: kết quả là đúng/sai. Lưu ý vế trái là một đối tượng, hay một kết quả hay một literal. Không cho phép vế trái là một tập hợp.

- Các hàm xử lý kết hợp:count(TV)sum(TV)min(TV)max(TV)avg(TV)

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 59

Ngôn ngữ truy vấn đối tượng-OQL(tt)

- Cấu trúc câu truy vấn đầy đủ:

Select [distinct] <ds_thuộc_tính>

From TV [as tên_biến]

[Where TV]

[Group by <ds_thuộc_tính>]

[Order by TV [asc|desc] ]

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 60

Bài tập mẫu

Cho sơ đồ lớp

SP

T e ân_ SP SL _ T o àn M aøu

B A ÙN

T e ân_ K H SL _ B aùn N gaøy _ B aùn

M U A

T e ân_ C Ö SL _ M ua N gaøy _ M ua

Ñ ô ït_ baùn

SP _ baùn

Ñ ô ït_ m ua

SP _ m ua

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 61

Bài tập mẫu

Ví dụ 1: Tên các nhà cung ứng và tên khách hàng có mua những sản phẩm màu đỏ đang có lượng tồn trên 100

Select mua.Tên_CƯ, bán.Tên_KH

From DM_SP sp, sp.Đợt_mua mua, sp.Đợt_bán bán

Where (sp.Màu = ‘Đỏ’) And (sp.SL_Tồn > 100)

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 62

Bài tập mẫu

Ví dụ 2: Danh sách những khách hàng có mua ít nhất 1 sản phẩm màu xanh

Cách 1:

Select bán.Tên_KH

From DM_BÁN bán

Where bán.SP_bán.Màu = ‘Xanh’

Cách 2:

Select bán.Tên_KH

From DM_SP sp, sp.Đợt_bán bán

Where sp.Màu = ‘Xanh’

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 63

Bài tập mẫu

Ví dụ 3: Danh sách những khách hàng có mua tất cả những sản phẩm đang tồn trong kho

Cách 1:

Select bán.Tên_KH

From DM_BÁN bán

Where Count(Select distinct sp.Tên_SP

From bán.SP_bán sp

Where sp.SL_Tồn>0) =

Count(Select distinct sp.Tên_SP

From DM_SP sp

Where sp.SL_Tồn>0)

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 64

Bài tập mẫu

Ví dụ 3: Danh sách những khách hàng có mua tất cả những sản phẩm đang tồn trong kho

Cách 2:

Select bán.Tên_KH

From DM_BÁN bán

Where For all sp in (Select * From DM_SP Where SL_Tồn >0):

Exists (Select *

From DM_Bán bán1

Where (bán1.Tên_KH = bán.Tên_KH)

And (bán1.SP_bán.Tên_SP = sp.Tên_SP) )

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 65

Bài tập về nhà 1

Q U A ÙN

T e ân Ñ _ ch æ

N U Ô ÙC _ G K

T e ân H aõn g _ S X

B aùn

G iaù

h aõn g _ n g k

ñ ö ô ïc _ b aùnn g k _ ñ ö ô ïc _ b aùn

q u aùn

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 66

Bài tập về nhà 1 Xây dựng lược đồ như trên Trả lời các câu hỏi sau:1. Cho biết tên nước giải khát và giá bán của nó tại

quán ‘ABC’2. Cho biết tên hãng sản xuất các nước giải khát có

bán tại quán ‘ABC’3. Tìm tên các quán có bán nước giải khát với giá lớn

hơn 10000đ4. Tìm tên các quán chỉ bán nuớc giải khát với giá lớn

hơn 10000đ5. Cho biết giá bán trung bình các nước giải khát

được bán tại quán ‘ABC’

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 67

Bài tập về nhà 2

M A ÙY _ B A Y

T e ân_ M B

P H I _ C O ÂN G

T e ân_ P C Ñ òachæ_ P C

C B

T P _ ñi T P _ ñeán G iôø_ ñi G iôø_ ñeán

P C _ laùi

P C _ C BC aùc_ C B

M B _ C B

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 68

Bài tập về nhà 2 Xây dựng lược đồ như trên Trả lời các câu hỏi:

1. Danh sách những tên phi công lái tất cả máy bay của hãng

2. Danh sách những tên phi công không lái máy bay B767 từ Tp.HCM

Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 69