Tối ƣu hoá truy vấn CSDL hƣớng đối tƣợng bằng siêu đồ thị

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 39)

2.2.1. Thuật toán khởi tạo siêu đồ thị

Lƣợc đồ đối tƣợng S đƣợc biểu diễn hình thức là: S = (s1, …, sn), si là các lớp trong S và truy vấn đối tƣợng QE = (s1, …, sm, R, p1, …, pk), trong đó si (i = 1,…, m) là các lớp tham gia truy vấn (lấy ở mệnh đề From), R là điều kiện của truy vấn (lấy ở mệnh đề Select) và pj (j = 1, …, k) là các biểu thức điều kiện ở mệnh đề Where.

Thuật toán 2.1: Khởi tạo siêu đồ thị của truy vấn đối tƣợng (không chứa truy vấn lồng).

Đầu vào:Lƣợc đồ đối tƣợngS = (s1, …, sn),

Truy vấn đối tƣợng QE = (s1, …, sm, R, p1, …, pk)

Đầu ra:Siêu đồ thị H

Phương pháp:

(1) SC :=  // tập chứa các siêu cạnh đối tượng của siêu đồ thị H

(2) V := (s1, …, sm) // tập các đối tượng

(3) WhilesiV

(4) if (si là siêu lớp gốc) then

// không kế thừa từ các siêu lớp khác

(5) Khởi tạo siêu cạnh đối tƣợng e := sH({si}) và gán nhãn lbH(e) (6) else if (si là lớp kế thừa đơn hoặc kế thừa bội) then

(7) Xử lý trƣờng hợp xung đột về tên với các thuộc tính kế thừa

(8) Khởi tạo lớp si‟ chứa các thuộc tính của lớp và thuộc tính kế thừa

(9) Khởi tạo siêu cạnh đối tƣợng e := sH({si‟}) và gán nhãn lbH(e)

(10) SC := SC e

(11) Khởi tạo siêu cạnh đỉnh h := sH({R}) và lbH(h) := “head” (12) SC := SC h

(13) SD :=  //tập chứa các siêu cạnh điều kiện của siêu đồ thị H

(14) P: = (p1, …, pk) (15) While pj  P

(16) if ( pj có dạng (2.3) và (2.4)) then

(17) Khởi tạo siêu cạnh điều kiện f := sH({pj})

(18) SD := SD f

(19) else Gán nhãn cho nút lbH(e) := “=a” (20) H := SC  SD

Từ thuật toán khởi tạo siêu đồ thị của truy vấn đối tƣợng (không chứa các truy vấn lồng) đƣợc xây dựng ở trên, ta tiến hành xây dựng thuật toán khởi tạo siêu đồ thị của truy vấn đối tƣợng có chứa các truy vấn lồng. Siêu đồ thị của truy vấn đối tƣợng có chứa truy vấn lồng đƣợc tạo ra từ các liên kết của các siêu đồ thị đơn với các siêu cạnh kết nhập.

Thuật toán 2.2: Khởi tạo siêu đồ thị của truy vấn đối tƣợng lồng

Đầu vào: Lƣợc đồ đối tƣợng S = (s1,...,sm),

Truy vấn đối tƣợng QE = (s1,..., sr, R, p1,...,pk), Tập T  {is, in, union, diff, forall, exists,...}

Đầu ra: Siêu đồ thị H

Phương pháp:

(1) H := 

(2) QE := (s1, …, sr, R, p1, …, pk) (3) While (QEi QE)

(4) Khởi tạo siêu đồ thị Hi với mỗi QEi(thuật toán 2.1)

(5) H := H  Hi

(6) T := {is, in, union, diff, forall, exists,...} (7) While (ti  T)

(8) Khởi tạo siêu cạnh kết nhập g có nhãn là ti, có vế trái là thuộc tính tham chiếu và vế phải là một truy vấn hay một vùng dữ liệu thuộc lớp.

(9) H := H  g

Truy vấn lồng OQL đƣợc kết nối từ các siêu đồ thị của các khối Select …From …Where… bởi các siêu cạnh kết nhấp.

2.2.2. Ví dụ minh họa

Để 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

2.2.3. Phƣơng pháp ƣớc lƣợng siêu đồ thị

Sau khi đã khởi tạo đƣợc siêu đồ thị, ta dựa vào dãy các sự kiện của bài toán đặt ra, tiến hành ƣớc lƣợng các siêu cạnh trong siêu đồ thị. Khi tất cả các siêu cạnh trong siêu đồ thị đƣợc ƣớc lƣợng, chiếu lên tập các thuộc tính cần xác định trong yêu cầu ta có câu trả lời của truy vấn [3].

2.2.3.1. Ƣớc lƣợng các siêu cạnh trong siêu đồ thị

Định nghĩa 3.2: Lớp cơ sở là lớp đƣợc lƣu trữ trong CSDL hƣớng đối tƣợng.

Lớp dẫn xuất là lớp trung gian đƣợc sản sinh trong quá trình ƣớc lƣợng truy vấn và đƣợc sử dụng nhƣ là đầu vào trong các bƣớc ƣớc lƣợng.

Quy tắc ƣớc lƣợng các siêu cạnh trong siêu đồ thị kết nối

Trong tiến trình thực hiện truy vấn, việc đƣa phép chọn và phép chiếu trên đối tƣợng lên trƣớc các phép kết nối và tích đề các đƣợc thực hiện càng sớm càng tốt. Vì, phép chọn thực hiện việc loại bỏ các đối tƣợng không liên quan trong các lớp, làm giảm không gian tìm kiếm; Phép chiếu đƣợc áp dụng cho trƣờng hợp tập thuộc tính của các lớp quá lớn nhƣng không tham gia trong kết quả của truy vấn, do đó phép chiếu làm giảm kích thƣớc lƣu trữ của mỗi lớp, loại bỏ các thuộc tính không có mặt trong kết quả của truy vấn. Vì vậy, việc áp dụng các quy tắc Heuristic trong ƣớc lƣợng siêu đồ thị kết nối đối tƣợng trên các siêu cạnh điều kiện đối với các phép toán chọn, chiếu đƣợc phát biểu nhƣ sau:

(QT1) Sử dụng một ràng buộc (điều kiện có kiểu A = a, A > a, ... hoặc một tập hạn chế các giá trị của một thuộc tính) để truy vấn trên một lớp (nếu có thể).

(QT2) Ƣớc lƣợng một điều kiện hoặc một siêu cạnh điều kiện càng sớm càng tốt nếu nhƣ có thể.

hoten luongCB … duan

tenduan kinhphi ... QuanLy >=10.000.000 head head IN DuAn  200.000.000

(QT3) Sau khi một siêu cạnh đã đƣợc đánh dấu, chiếu loại bỏ các thuộc tính không liên quan từ lớp dẫn xuất.

Mô tả thuật toán ƣớc lƣợng các siêu cạnh trong siêu đồ thị

Chúng ta biểu diễn hình thức cho siêu đồ thị kết nối của truy vấn hƣớng đối tƣợng là dãy các sự kiện: H = (E1, E2, … , Ej-1), trong đó, các sự kiện Ei (i = 1..j-1) có thể là siêu cạnh đối tƣợng, siêu cạnh điều kiện hoặc siêu cạnh kết nhập.

Lớp dẫn xuất thu đƣợc sau tác động của một sự kiện Ej đƣợc ký hiệu là

Lop_dan_xuat(E1, E2, … , Ej). Trƣờng hợp siêu đồ thị kết nối chỉ có một siêu cạnh E1 thì siêu cạnh đó phải là siêu cạnh đối tƣợng và Lop_dan_xuat(E1) = O(E1). Trong đó

O(E1) là lớp tƣơng ứng với siêu cạnh đối tƣợng E.

Thuật toán đƣợc giới thiệu sau đây thực hiện việc ƣớc lƣợng lớp dẫn xuất với sự kiện Ej trong H. Thuật toán Uocluongsieucanh nhận tham số vào là lớp dẫn xuất thu đƣợc sau khi thực hiện sự kiện Ej-1 và sự kiện Ej, kết quả trả về của thủ tục là một chƣơng trình tính Lop_dan_xuat sau tác động của Ej. Chúng ta xem xét ba trƣờng hợp xảy ra:

+ TH1: Khởi tạo lớp dẫn xuất E1 cho kết quả Lop_dan_xuat(E1) = O(E1), trong đó O(E1) là lớp tƣơng ứng với siêu cạnh đối tƣợng E1.

+ TH2: Nếu ta loại bỏ một siêu cạnh điều kiện Ej ra khỏi siêu đồ thị H và cho ta kết quả là siêu đồ thị H‟ = (E1, E2, … , Ej), thì lớp dẫn xuất của siêu đồ thị H‟ là phép chọn theo điều kiện lớp dẫn xuất của H.

Lop_dan_xuat(H‟) = σt.C(t)(Lop_dan_xuat(H))

Với C(t) là điều kiện trong mệnh đề Where (2.1): t.A = a;

(2.3) : t.A  t.B,  { < ,  ,  , > , }; (2.4): t.A  t.B,  { ,  ,  ,  , };

+ TH3: Nếu chúng ta loại bỏ một siêu cạnh đối tƣợng E khỏi siêu đồ thị H, và giả sử siêu đồ thị kết quả H‟có chứa các thành phần liên thông E1, E2,…, Ej. Khi đó với mỗi siêu cạnh đối tƣợng F trong E1, E2,…, Ej-1 có giao với E, chúng ta xác định đƣợc lớp đối tƣợng F trong phépnối với lớp đối tƣợng E của siêu cạnh đối tƣợng E.

O(F) := tuple_cat(O(F), π(O(F) O(E))(O(E))

Nếu siêu cạnh đối tƣợng F không giao với siêu đồ thị H ta xác định đƣợc đối tƣợng F

Lop_dan_xuat(H‟) := tuple_cat(O(F), Lop_dan_xuat(E1), …, Lop_dan_xuat (Ej-1))

Và thuật toán ƣớc lƣợng siêu cạnh đƣợc minh họa nhƣ sau.

Thuật toánUocLuongSieuCanh (Lop_dan_xuat(H), Ej)

Đầu vào: Lop_dan_xuat (H) và sự kiện Ej, trong đó H = (E1, E2, … , Ej-1)

Phương pháp:

Begin

(1) Khởi tạo H = (E1, E2, … , Ej-1)

(2) UocLuongSieuCanh(E1)

(3) Kết quả: Lop_dan_xuat(E1) := O(E1)

(4) If ( Ej là một điều kiện hoặc siêu cạnh điều kiện) then

(5) Loại bỏ siêu cạnh đối tƣợng Ej ra khỏi siêu đồ thị (6) H‟ := H  {ej}

(7) Kết quả: Lop_dan_xuat(H‟):= t.C(t)(Lop_dan_xuat(H))

// Xét các trƣờng hợp siêu cạnh điều kiện trong mệnh đề Where. (8) If (Ej là siêu cạnh đối tượng) then

(9) If (mỗi siêu cạnh đối tƣợng F có giao với E) then

(10) O(F) := tuple_cat(O(F), π(O(F) O(E))(O(E)))

// O(F) là tập các đối tƣợng của F

(11) If (siêu đồ thị còn lại là tập các siêu cạnh tách biệt) then

(12) for i :=1 to j-1 do

(13) UocLuongSieuCanh(Lop_dan_xuat(H), Ej)

(14) Kết quả: Lop_dan_xuat(H‟) :=

tuple_cat(O(F), Lop_dan_xuat(E1), …, Lop_dan_xuat (Ej-1))

End;

Khi tất cả các siêu cạnh trong siêu đồ thị H đƣợc ƣớc lƣợng bằng cách tác động lần lƣợt các sự kiện để thu đƣợc các lớp dẫn xuất. Lớp dẫn xuất kết quả sẽ đƣợc chiếu lên tập các thuộc tính trong siêu cạnh đỉnh, đây chính là câu trả lời của truy vấn.

Thuật toán 2.3: Ƣớc lƣợng các siêu cạnh trong siêu đồ thị

Đầu vào: Siêu đồ thị H = (E1, E2, …En),R là siêu cạnh đỉnh.

Đầu ra: Lớp kết quả của truy vấn.

Phương pháp

Begin

(1) Siêu đồ thị H := (E1, E2, …En), với dãy các sự kiện Ei

(2) for j := 1 to n do

(3) Call UocLuongSieuCanh(Lop_dan_xuat (E1, E2, …Ej-1), Ej) (5) Bổ sung Lop_dan_xuat(E1, E2, …Ej) vào H

(6) Kết quả: H = πR(Lop_dan_xuat (H))

End;

Mệnh đề 2.1. Thuật toán 2.3 dừng sau hữu hạn bước và cho câu trả lời đúng Chứng minh:

Rõ ràng số các sự kiện trong H là hữu hạn, do đó thuật toán 2.3 sẽ dừng sau n lần tác động của các sự kiện Ei lên các lớp dẫn xuất, n là số sự kiện trong siêu đồ thị H

Sử dụng phƣơng pháp quy nạp để chứng minh cho điều này:

+ Trƣờng hợp cơ sở: n = 1, thì H = (E1), E1là siêu cạnh đối tƣợng, ta có:

H = πR(E1) = π(C1) là câu trả lời của truy vấn (C1 là lớp tƣơng ứng với siêu cạnh đối tƣợng E1).

+ Trƣờng hợp thứ k: n = k, giả sử lớp dẫn xuất thứ k thu đƣợc sau tác động của sự kiện Ek là ƣớc lƣợng của k siêu cạnh trong siêu đồ thị (Lop_dan_xuat (E1, ..., Ek)). Mặt khác, lớp dẫn xuất thu đƣợc ở bƣớc thứ k lại là đầu vào cho bƣớc ƣớc lƣợng thứ (k+1), do đó nếu k = n thì sau n bƣớc ƣớc lƣợng siêu cạnh, ta có lớp dẫn xuất thu đƣợc:

UocLuongSieuCanh(lop_dan_xuat(E1, ..., En-1), En) = lop_dan_xuat(E1, ..., En). Sau đó chiếu lên các siêu cạnh đỉnh ta có kết quả truy vấn là:

H = πR(lop_dan_xuat(E1, ..., En))

Xét truy vấn trong ví dụ 2.2. Chúng ta có dãy các sự kiện trong siêu đồ thị H = (PhongBan, tenphongban = “Truyền thông”, NhanVien)

Áp dụng thuật toán 2.3 ƣớc lƣợng các siêu cạnh trong siêu đồ thị ta có các bƣớc ƣớc lƣợng nhƣ sau:

+ Bƣớc 1: Khởi tạo lớp dẫn xuất tƣơng ứng với siêu cạnh đối tƣợng PhongBan

Lop_dan_xuat(PhongBan) = O(PhongBan)

+ Bƣớc 2: Áp dụng điều kiện chọn “tenphongban = “ Truyền thông” trên siêu cạnh đối tƣợng PhongBan.

O(PhongBan) = σk.k.tenphongban = “Truyền thông”( PhongBan)

+ Bƣớc 3: Ƣớc lƣợng siêu cạnh đối tƣợng NhanVien, là kết nối truyền thống dựa trên giá trị.

O(NhanVien)= tuple_cat(NhanVien, π(O(NhanVien)O(PhongBan))(πV(O(PhongBan))))

+ Bƣớc 4: Chiếu lớp dẫn xuất thu đƣợc sau phép kết nối lên siêu cạnh đỉnh (hoten)

Lop_dan_xuat(NhanVien, PhongBan) =

π(s.hoten)(πV(Lop_dan_xuat(NhanVien, PhongBan)))

Kết quả sau khi áp dụng thuật toán ƣớc lƣợng siêu cạnh trong siêu đồ thị H = (PhongBan, tenphongban = “Truyền thông”, NhanVien) đƣợc minh họa trên chƣơng trình cài đặt ở mục 3.4. Kết quả thực nghiệm trong chƣơng 3 (trang 62).

2.2.3.2. Mở rộng thuật toán tối ƣu truy vấn hƣớng đối tƣợng trên siêu đồ thị

Trong CSDL hƣớng đối tƣợng, các truy vấn đối tƣợng lồng đƣợc sử dụng khá thƣờng xuyên. Các cấu trúc lồng đƣợc biểu diễn trong các biểu thức điều kiện của truy vấn dƣới hai dạng: các truy vấn con lồng hoặc biểu thức đƣờng dẫn có chứa các kết nối ẩn, các tân từ lồng nhau trong mệnh đề Where. Vì vậy, trên cơ sở giải thuật tối

ƣu hóa truy vấn bằng siêu đồ thị của Ullman J.D [12] và Han [16]. Chúng ta nghiên cứu mở rộng thuật toán tối ƣu hóa câu truy vấn Wong-Youssefi đối với truy vấn đối tƣợng.

Trƣớc hết, mô tả cách tiến hành thuật toán qua quá trình rút gọn siêu đồ thị, trong đó chúng ta sẽ loại bỏ mỗi lần một siêu cạnh và cách chọn ra các siêu cạnh để loại bỏ; giải thích cách gắn phép chiếu vào các câu vấn tin đƣợc biểu diễn bằng siêu đồ thị. Cuối cùng sẽ trình bày một cách hình thức các ý tƣởng đƣợc đề cập.

Ký pháp

Tại mọi thời điểm, ta luôn liên kết một đối tƣợng O(E) với mỗi siêu cạnh đối tƣợng E và liên kết một điều kiện C(E) với một siêu cạnh điều kiện E. Đối tƣợng

O(E) giá trị có thể thay đổi theo từng bƣớc nhƣng điều kiện C(E) thì không bao giờ thay đổi.

Chúng ta cũng sử dụng biến nhận giá trị đối tƣợng Lop_dan_xuat(H) cho mỗi siêu đồ thị H đƣợc xây dựng trong quá trình tối ƣu truy vấn. Giá trị của Lop_dan_xuat(H)

đƣợc gán một lần và giá trị đó đƣợc xem là nối tự nhiên của các đối tƣợng O(E) tƣơng ứng với mọi siêu cạnh đối tƣợng E trong H , theo sau là phép chọn trên các điều kiện của các siêu cạnh điều kiện trong H. Mặc dù, giá trị của O(E) có thể thay đổi, trong phép nối

trên ta sử dụng giá trị của O(E) vào lúc tạo ra siêu đồ thị H.

Rút gọn siêu đồ thị

Chúng ta sẽ tiến hành loại bỏ các siêu cạnh khỏi siêu đồ thị kết nối H, mỗi lần một cạnh và khi tiến hành chúng ta sẽ tạo ra chƣơng trình để tính Lop_dan_xuat(H).

Trƣờng hợp cơ sở, khi H chỉ có duy nhất một siêu cạnh E thì E là siêu cạnh đối tƣợng, Lop_dan_xuat(H) đƣợc xem là O(E). Do đó, sẽ không xảy ra trƣờng hợp một siêu đồ thị kết nối đã rút gọn chỉ chứa một siêu cạnh điều kiện.

Mẫu chốt của thuật toán Wong-Youssefi là trật tự loại bỏ các siêu cạnh. Các siêu cạnh có liên quan đến biểu thức điều kiện có dạng (1) sẽ đƣợc ƣu tiên xét trƣớc, tiếp theo là các siêu cạnh mà khi loại bỏ nó ra khỏi siêu đồ thị sẽ làm cho siêu đồ thị này trở thành siêu đồ thị tách biệt và cuối cùng là xét các siêu cạnh còn lại.

Quan hệ nhỏ (Small relations)

Thuật toán tận dụng đƣợc dạng vấn tin điển hình, là dạng mà phép chọn có thể

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 39)

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

(80 trang)