Ví dụ minh họa

Một phần của tài liệu TỐi ưu HÓA TRUY VẤN CƠ SỞ DỮ LIỆU Hướng ĐỐI TưỢNG (Trang 40)

Để thống nhất trong trình bày các ví dụ của luận văn, tôi sử dụng CSDL quản lý nhân viên đƣợc minh họa nhƣ sau:

Class NhanSu

type tuple ( manhansu: string[10]; hoten: string[20]; gioitinh: string[10]; diachi: string[20];

ngaysinh: tuple (ngay: integer; thang: integer; nam: integer ) sonamcongtac: integer;

luongCB: double)

Class NhanVien inherits NhanSu

type tuple ( nql: string[20]; // nql – người quản lý phongban: PhongBan;

duan: set( DuAn))

Class QuanLy inherits NhanSu

type tuple ( chucvu: string[10];

PCCV: double; //PCCV – phụ cấp chức vụ phongban: PhongBan; duan: DuAn; ngayBĐ: datetime; ngayKT: datetime) Class PhongBan

type tuple ( maphongban: string[10]; tenphongban: string[20]; truongphong: string[20]; sonhanvien: integer )

Class DuAn

Type tuple ( maduan: string[10; tenduan: string[20]; phong: PhongBan; SoNV: int; Ngaybatdau: Datetime; Ngayketthuc: Datetime; kinhphi: double )

2.2.2.1. Biểu diễn các truy vấn đối tƣợng bằng siêu đồ thị

Ví dụ 2.2: Cho biết họ tên tất cả các nhân viên thuộc phòng “Truyền thông”

Select s.hoten

From NhanVien as s, PhongBan as k

Where k.tenphongban = “Truyền thông” and s.phongban = k.maphongban

Truy vấn trên đƣợc viết lại với toán tử EXISTS

Select s.hoten

From NhanVien as s Where EXISTS ( Select *

From PhongBan as k

Where k.tenphongban = “Truyền thông” and s.phongban = k.maphongban )

(a)

(b)

Toán tử EXISTS là toán tử so sánh trên tập hợp. Nó cho phép chúng ta kiểm tra một giá trị nào đó có tồn tại trong một tập hợp không. Vì thế, với mỗi Nhân viên s ta kiểm tra giá trị này trên tập các dòng của Phòng ban k xem có rỗng không. Nếu không rỗng tức là nhân viên s thuộc phòng “Truyền thông” và ta đƣa ra họ tên của nhân viên đó.

Thuộc tính phongban là thuộc tính có kiểu PhongBan, kết nối hàm giữa thuộc tính phongban với lớp PhongBan đƣợc biểu diễn bằng một siêu cạnh kết nhập với lƣợng từ EXISTS). Truy vấn trên đƣợc biểu diễn bằng siêu đồ thị kết nối nhƣ sau:

Hình 2.3. Siêu đồ thị kết nối của ví dụ 2.2

2.2.2.2. Biểu diễn các truy vấn lồng bằng siêu đồ thị kết nối

Ví dụ 2.3: Tìm tất cả các nhân viên có lƣơng cao nhất thuộc phòng “Truyền thông”

Select s.hoten, s.luongCB

From NhanVien as s, PhongBan as g Where g.tenphongban = “Truyền thông”

and s.phongban = g.maphongban

and s.luongCB = (Select max(k.luongCB) From NhanVien as k

Where k.manhansu = s.manhansu)

Với câu truy vấn trên ta có thể thực hiện lần lƣợt các bƣớc biểu diễn siêu đồ thị nhƣ sau. Trƣớc tiên, chúng ta biểu diễn riêng cho từng siêu đồ thị kết nối với hai khối SFW (a) và (b). max(luongCB) phongban ... NhanVien head (a) hoten phongban ….. NhanVien maphongban tenphongban … ….. PhongBan head EXISTS „=“Truyền thông”‟

Sau đó thực hiện việc “trộn” hai siêu đồ thị kết nối thành một siêu đồ thị kết quả (c) bằng phép kết nối s.manhansu = k.manhansu và các biểu thức điều kiện tƣơng ứng.

Hình 2.4. Siêu đồ thị kết nối của ví dụ 2.3.

Ví dụ 2.4: Cho biết tên các nhân viên có mức lƣơng thu nhập lớn hơn hoặc bằng 10 triệu và tham gia các dự án có kinh phí lớn hơn hoặc bằng 200 triệu.

Select g.hoten From QuanLy as g

Where g.luongCB  10.000.000

and g.duan IN ( Select k.tenduan

From DuAn as k

Where k.kinhphi  200.000.000)

Tƣơng tự nhƣ ví dụ 2.3, ta cũng xác định lần lƣợt các siêu đồ thị con cho từng khối SFW. Và truy vấn đƣợc biểu diễn bằng siêu đồ thị kết nối nhƣ sau: Các siêu cạnh đối tƣợng biểu diễn các lớp QuanLyDuAn. Đối với các siêu cạnh đỉnh, chúng ta có 2 siêu cạnh đỉnh: g.hoten là siêu cạnh đỉnh của khối SFW thứ nhất (kết quả của truy vấn) và k.tenduan là siêu cạnh đỉnh của khối SFW thứ hai cũng là khối SFW

hoten luongCB phongban …

head head NhanVien

(b) tenphongban

...

PhongBan

„=“Truyền thông”‟

hoten luongCB manhansu … phongban

head NhanVien ... Max(luongCB) = tenphongban ... NhanVien PhongBan head (c) „=“Truyền thông”‟

lồng. Hai siêu cạnh điều kiện g.luongCB  10.000.000; k.kinhphi  200.000.000 và siêu cạnh kết nhập g.duan IN k.tenduan đƣợc gán nhãn là IN.

Hình 2.5. Siêu đồ thị kết nối của ví dụ 2.4

Một phần của tài liệu TỐi ưu HÓA TRUY VẤN CƠ SỞ DỮ LIỆU Hướng ĐỐI TưỢNG (Trang 40)

Tải bản đầy đủ (PDF)

(80 trang)