Phƣơng pháp phân rã SQL

Một phần của tài liệu Tiền tối ưu các các SQL chương trình nguồn (Trang 35 - 66)

Phƣơng pháp phân rã câu vấn tin SQL là: chuyển câu vấn tin đa quan hệ thành một tập các câu vấn tin đơn quan hệ nhằm ứng dụng đƣợc phƣơng pháp tối ƣu ORQ (Optimal Rilational Query – Truy vấn tối ƣu đơn quan hệ)[5].

2.1.1 Phương pháp phân rã SQL.

Để có thể dùng thể xử lí vấn tin ORQ từ câu vấn tin đa quan hệ trƣớc hết chúng ta cần phân rã câu vấn tin SQL (nếu có thể) để chọn ra các “mệnh đề chọn” nhằm làm giảm bớt các quan hệ tham gia vào câu truy vấn SQL nhƣ sau:

Cho câu vấn tin p dạng SQL đa quan hệ, đƣợc phân rã thành hai vấn tin con p‟ p” p thứ tự thực hiện p‟ trƣớc, p” sau, đầu ra của p‟ (là một quan hệ duy nhất) là một trong những quan hệ đầu vào của p”,…cách làm này có tác dụng làm giảm kích thƣớc và số lƣờng các quan hệ mà trên đó câu vấn tin p” mới đƣợc định nghĩa. Hơn nữa, quan hệ đầu ra của p‟ có thể đƣợc lƣu vào một cấu trúc đặc biệt nhằm tăng tốc độ cho các câu vấn tin con theo sau. Phép phân rã sẽ ƣu tiên những phép chọn có SFS(F) tốt nhất (nhỏ nhất) vì kết quả quan hệ trung gian của phép chọn này sẽ cho kích thƣớc ít nhất [5].

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ Tóm lại, cho trƣớc câu vấn tin p có n quan hệ, phân rã p thành dãy n câu vấn tin con pl p2 … pn.

Tức là, nếu câu vấn tin p đƣợc biểu diễn dạng:

p: SELECT R1.A1, …, Ri-1.Ai-1, Ri+1.Ai+1, …, Rn.An FROM Rl, R2, …, Rn

WHERE qi(Ri.A‟i)

AND qi‟(R1.A1 , R2.A2,…, Rn.An)

trong đó Ai và A‟i là những thuộc tính của quan hệ Ri, qi là vị từ có chứa các thuộc tính của quan hệ Ri, và qi‟ là vị từ đa quan hệ có chứa các thuộc tinh của các quan hệ Rl, R2,…, Rn. Câu vấn tin dạng này có thể đƣợc phân rã thành hai câu vấn tin con:

p p1 p‟ với

p1: SELECT Ri.Ai INTO R‟i

FROM Ri

WHERE qi(Ri.A‟i)

p‟: SELECT R1.A1, …, Ri-1.Ai-1, Ri+1.Ai+1, …, Rn.An FROM R1 , R2 , …Ri-1, R‟i , Ri+1, … Rn

WHERE q‟i(R1.A1, …, Ri-1.Ai-1, R‟i.Ai, Ri+1.Ai+1, …, Rn.An) Thấy rằng qi là câu vấn tin đơn quan hệ Ri – có thể dùng ORQP còn p‟ là câu vấn tin đa quan hệ. Tiếp tục phân rã p‟ nếu có thể. Nghĩa là, nếu có thể viết p‟ dƣới dạng:

p‟: SELECT R1.A1, …, Ri-1.Ai-1, Ri+1.Ai+1, …, Rk-1.Ak-1, Rk+1.Ak+1, Rn.An

FROM R1 , R2 , …Ri-1, R‟i , Ri+1, … Rn

WHERE qk(Rk.A‟k) AND q‟k(R1.A1, …, Ri-1.Ai-1, R‟i.Ai, Ri+1.Ai+1, …, Rn.An)

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ p‟ p‟1 p” với

p‟1: SELECT Rk.Ak INTO R‟k

FROM Rk

WHERE qk(Rk.A‟k)

p”: SELECT R1.A1, …, Ri-1.Ai-1, Ri+1.Ai+1, …, Rn.An FROM R1 , R2 , …Ri-1, R‟i , Ri+1, … Rn

WHERE q‟k(R1.A1, …, Ri-1.Ai-1, R‟i.Ai, Ri+1.Ai+1, …, R‟k, …, Rn.An)

Quá trình tiếp tục cho đến khi chỉ còn có một dãy liên tiếp các câu vấn tin đơn quan hệ, chúng đƣợc xử lý bởi ORQP, các câu vấn tin còn lại là đa quan hệ không thể phân rã tiếp đƣợc nhƣng chúng đƣợc biến đổi thành câu vấn tin đơn quan hệ nhờ phép thế bộ.

Tóm tắt phép toán phân rã câu SQL nhƣ sau:

Cho câu vấn tin p có n quan hệ MRQ, phép toán phân rã sẽ cho ra tập các câu vấn tin đơn quan hệ ORQ và một câu vấn tin đa quan hệ MRQ‟

p = (Xâu sau “WHERE”) Begin

ORQ = MRQ’ =

While !(Cuối xâu p)

If Found (vị từ chọn hoặc chiếu p1) Phân rã p theo vị từ đó p p1 p’

Tạo câu lệnh SQL đơn quan hệ ORQ‟ theo p1 ORQ ORQ’

p:= p’

End-If continue EndWhile

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ If xâu p ≠ “ ”

Tạo câu lệnh SQL đa quan hệ MRQ‟ theo p End-If

EndBegin

Kết quả của thuật toán sẽ là một dãy các câu vấn tin đơn quan hệ ORQ1, …, ORQm và một vấn tin đa quan hệ MRQ‟

Ví dụ:

Nhằm minh họa cho thuật toán. Chúng ta xét CSDL (rất đơn giản) với các quan hệ sau:

DanhHieu (MaDanhHieu, TenDanhHieu, CapQuyetDinh) (xem Bảng 2.1) MaDanhHieu TenDanhHieu MADH1 MADH2 MADH3 MADH4 Bằng khen Giấy khen Huân chƣơng Huy Chƣơng Bảng 2.1. Số liệu của quan hệ DanhHieu

ThamGiaCM(MaThamGiaCM, TenThamGiaCM, GioiTinh) (Xem Bảng 2.2)

MaThamGiaCM TenThamGiaCM GioiTinh

MACM1 MACM2 MACM3 MACM4 MACM5 MACM6 MACM7 MACM8

Ngô Quốc Anh Lê Văn Hoàn Trần Văn Lệ Hoàng Văn Minh Hồ Van Canh Bùi Chu Nguyễn Ngọc Bích Lê Hồng Hạnh Nam Nam Nam Nam Nam Nam Nữ Nữ Bảng 2.2. Số liệu quan hệ ThamGiaCM

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ KhenThuong(MaThamGiaCM, MaDanhHieu, ThanhTich)

(xem Bảng 2.3)

MaThamGiaCM MaDanhHieu ThanhTich

MACM1 MACM2 MACM2 MACM3 MACM3 MACM4 MACM5 MACM6 MACM7 MACM8 MADH1 MADH1 MADH2 MADH3 MADH4 MADH2 MADH2 MADH4 MADH3 MADH3 Chống Mỹ Chống Pháp Nhà giáo Anh hùng lực lƣợng vũ trang Chống Mỹ Anh hùng lao động Chống Mỹ Chống Mỹ Chống Pháp Chống Mỹ

Bảng 2.3. Số liệu quan hệ KhenThuong Từ các quan hệ trên, hãy

"Cho biết tên và thành tích của những ngƣời tham gia cách mạng đã nhận huân chƣơng?”

Câu vấn tin này có thể đƣợc diễn tả bằng SQL đƣợc ký hiệu là p nhƣ sau: p: SELECT ThamGiaCM.TenThamGiaCM, KhenThuong.ThanhTich

FROM DanhHieu , ThamGiaCM, KhenThuong WHERE ThamGiaCM.MaThamGiaCM =

KhenThuong.MaThamGiaCM AND KhenThuong.MaDanhHieu = DanhHieu.MaDanhHieu AND TenDanhHieu = "Huân chƣơng" Theo thuật toán phân rã câu vấn tin p đƣợc thay bởi pl, và p‟, và từ p‟: pl: SELECT DanhHieu.MaDanhHieu INTO DanhHieu‟

FROM DanhHieu

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ Là câu vấn tin đơn quan hệ DanhHieu. Kết quả trong DanhHieu‟ chỉ có MADH3

p ': SELECT ThamGiaCM.TenThamGiaCM, KhenThuong.ThanhTich FROM ThamGiaCM, KhenThuong, DanhHieu‟

WHERE ThamGiaCM.MaThamGiaCM =

KhenThuong.MaThamGiaCM AND KhenThuong.MaDanhHieu = DanhHieu‟.MaDanhHieu

Là câu vấn tin đa quan hệ ThamGiaCM, KhenThuong, DanhHieu‟. Các bƣớc phân rã tiếp theo là phân rã p' thành p2 và p3:

p2: SELECT KhenThuong.MaThamGiaCM, KhenThuong.ThanhTich INTO KhenThuong‟

FROM KhenThuong, DanhHieu‟

WRERE KhenThuong.MaDanhHieu = DanhHieu.MaDanhHieu Là câu vấn tin đa quan hệ KhenThuong, DanhHieu‟. Kết quả trong KhenThuong‟ chỉ có (MACM3, Anh hùng lực lƣợng vũ trang); (MACM7, Chống Pháp) và (MACM8, Chống Mỹ)

p3: SELECT ThamGiaCM.TenThamGiaCM , KhenThuong‟.ThanhTich

FROM ThamGiaCM, KhenThuong‟

WHERE ThamGiaCM.MaThamGiaCM = KhenThuong‟.MaThamGiaCM

Là câu vấn tin đa quan hệ ThamGiaCM, KhenThuong‟.

Nhƣ vậy câu vấn tin p đã đƣợc phân rã thành chuỗi câu vấn tin pl p2 p3 . Câu vấn tin đơn quan hệ pl có thể dùng thể vấn tin ORQOP (One Relation Query Optimization Processor). Còn các câu vấn tin p2 và p3 không phải loại đơn quan hệ và cũng không thể rút gọn hơn nữa bằng phép phân rã của thuật toán nữa.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

2.1.2 Những ưu và nhược điểm của phương pháp phân rã SQL

Ƣu điểm: Từ câu vấn tin đa quan hệ ta chuyển đƣợc tập các câu vấn tin đơn quan hệ mà những câu vấn tin đơn quan hệ thì có thể xử lí tối ƣu bởi ORQ là thể vấn tin tối ƣu một quan hệ.

Nhƣợc điểm: Phức tạp do phải tìm kiếm các xâu con dạng Attribute=Value trong mệnh đề Logic nằm sau Where và sau đó cần phải tách ra thành câu vấn tin SQL dạng:

SELECT Ri.Ai INTO R‟i FROM Ri

WHERE qi(Ri.A‟i)

Mà số lƣợng các câu vấn tin dạng này nói chung chúng ta chƣa biết mà phải tìm các xâu con dạng Attribute=Value bằng phƣơng pháp tìm kiếm và vét cạn (Quy hoạch động).

Ví dụ:

Nếu câu vấn tin p đƣợc biểu diễn dạng:

p: SELECT R1.A1, …, Ri-1.Ai-1, Ri+1.Ai+1, …, Rn.An FROM Rl, R2, …, Rn

WHERE qi(Ri.A‟i) AND qi‟(R1.A1 , R2.A2,…, Rn.An)

Trong đó Ai và A‟i là những thuộc tính của quan hệ Ri, qi là vị từ có chứa các thuộc tính của quan hệ Ri, và qi‟ là vị từ đa quan hệ có chứa các thuộc tinh của các quan hệ Rl, R2,…, Rn. Câu vấn tin dạng này có thể đƣợc phân rã thành hai câu vấn tin con:

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ p p1 p‟ với

p1: SELECT Ri.Ai INTO R‟i FROM Ri

WHERE qi(Ri.A‟i)

p‟: SELECT R1.A1, …, Ri-1.Ai-1, Ri+1.Ai+1, …, Rn.An FROM R1 , R2 , …Ri-1, R‟i , Ri+1, … Rn

WHERE q‟i(R1.A1, …, Ri-1.Ai-1, R‟i.Ai, Ri+1.Ai+1, …, Rn.An) Thấy rằng qi là câu vấn tin đơn quan hệ Ri – có thể dùng ORQP còn p‟ là câu vấn tin đa quan hệ. Tiếp tục phân rã p‟ nếu có thể. Nghĩa là, nếu có thể viết p‟ dƣới dạng:

p‟: SELECT R1.A1, …, Ri-1.Ai-1, Ri+1.Ai+1, …, Rk-1.Ak-1, Rk+1.Ak+1, Rn.An

FROM R1 , R2 , …Ri-1, R‟i , Ri+1, … Rn

WHERE qk(Rk.A‟k) AND q‟k(R1.A1, …, Ri-1.Ai-1, R‟i.Ai, Ri+1.Ai+1, …, Rn.An)

Khi đó

p‟ p‟1 p” với

p‟1: SELECT Rk.Ak INTO R‟k

FROM Rk

WHERE qk(Rk.A‟k)

p”: SELECT R1.A1, …, Ri-1.Ai-1, Ri+1.Ai+1, …, Rn.An FROM R1 , R2 , …Ri-1, R‟i , Ri+1, … Rn

WHERE q‟k(R1.A1, …, Ri-1.Ai-1, R‟i.Ai, Ri+1.Ai+1, …, R‟k, …, Rn.An)

2.1.3 Ứng dụng của phương pháp phân rã SQL:

Phƣơng pháp này đƣợc rất nhiều các phần mềm quản lí CSDL dùng để phân rã các câu SQL đa quan hệ thành một tập các câu đơn quan hệ để sử

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ dụng ORQ nhằm giảm thiểu thời gian xử lí câu SQL đa quan hệ (Phức tạp). Phƣơng pháp này đac đƣợc ứng dụng để quản lí thi đua khen thƣởng tại UBND tỉnh Hà Tây (cũ).

2.2. Phƣơng pháp thay thế SQL

Phƣơng pháp thay thế SQL có nghĩa là chúng ta sẽ thay thế một câu SQL đa quan hệ (không tính đến các câu vấn tin đơn quan hệ đã phân rã trên) bằng phƣơng pháp thế bộ. Nghĩa là trong câu vấn tin đa quan hệ, một quan hệ nào đó sẽ đƣợc rút ra khỏi danh sách các quan hệ tham gia vào câu truy vấn (sau FROM) mà nó đƣợc thay thế bởi các bộ của nó.

2.2.1 Phương pháp thay thế SQL

Cho câu vấn tin p có n-quan hệ Sl, S2, …, Sn. Trƣớc tiên chọn một quan hệ (có size nhỏ nhất) trong câu vấn tin p để thay thế. Không giẩm tổng quát, gỉa sử Sl là quan hệ đó. Mỗi bộ t1i (i 1,card(S1)) trong Sl, các thuộc tính đƣợc tham chiếu trong p đƣợc thay bằng các giá trị thực sự trong t1i, tạo ra một câu vấn tin p‟ có (n - l) quan hệ. Vì vậy tổng số câu vấn tin p‟ đƣợc sinh ra hởi phép thế bộ là card(S1).

Tóm lại:

Câu vấn tin p(S1, S2,…,Sn) đƣợc thay bằng card(S1) câu vấn tin {p(t1i, S2,…,Sn) | t1i S1)} tức là p(t1i, S2,…,Sn); i = 1, 2, …., card(S1) mỗi câu vấn tin chỉ có n-1 quan hệ S2,…,Sn.

Tóm tắt phƣơng pháp phép thế bộ nhƣ sau:

Cho câu vấn tin p có n quan hệ MRQ (S1, S2,…,Sn) sau phép thế bộ sẽ cho tập các câu vấn tin đơn quan hệ ORQ

WHILE (p đa quan hệ)

Chọn Sj : size(Sj) = min { size(S1), …, size(Sn)} Thay p bởi tập P = {pi(S1, S2, … tji, …, Sn)}

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ IF p đa quan hệ Loop ENDIF ENDFOR ENDWHILE Ví dụ:

Nếu câu vấn tin p đã đƣợc phân rã thành chuỗi câu vấn tin pl p2 p3 . Câu vấn tin đơn quan hệ pl có thể dùng thể vấn tin ORQOP (One Relation Query Optimization Processor). Còn các câu vấn tin p2 và p3 không phải loại đơn quan hệ và cũng không thể rút gọn hơn nữa bằng phép phân rã của thuật toán nữa. Thì ta có thể Theo phép thế bộ của thuật toán p3 đƣợc thay bởi tập 3 câu SQL một quan hệ nhƣ sau:

q1 : SELECT ThamGiaCM.TenThamGiaCM , ThanhTich FROM ThamGiaCM

WHERE ThamGiaCM.MaThamGiaCM = “MACM3” AND ThanhTich = “Anh hùng lực lƣợng vũ trang”

q2: SELECT ThamGiaCM.TenThamGiaCM , ThanhTich

FROM ThamGiaCM

WHERE ThamGiaCM.MaThamGiaCM = “MACM7” AND ThanhTich = “Chống Pháp”

q3: SELECT ThamGiaCM.TenThamGiaCM , ThanhTich FROM ThamGiaCM

WHERE ThamGiaCM.MaThamGiaCM = “MACM8” AND ThanhTich = “Chống Mỹ”

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ Kết quả thực hiện thuật toán cho danh sách những ngƣời nhận huân chƣơng và với thành tích trong bảng sau:

TenThamGiaCM ThanhTich Trần Văn Lệ Nguyễn Ngọc Bích Lê Hồng Hạnh Anh hùng lực lƣợng vũ trang Chống Pháp Chống Mỹ

Bảng 2.2.1 Kết quả danh sách ngƣời nhận huân chƣơng

2.2.2 Những ưu và nhược điểm của của phương pháp thay thế SQL

Ƣu điểm: Trong khi thay thế thì ngƣời ta chọn quan hệ có kích thƣớc nhỏ nhất để giảm số lƣợng tập các câu vấn tin đơn quan hệ và giảm tính phức tạp của câu vấn tin đa quan hệ. Từ việc phải xử lí câu vấn tin đa quan hệ thì bây giờ chúng ta chỉ cần xử lí một tập các câu vấn tin đơn quan hệ bằng ORQ. Nhƣợc điểm: Làm tăng đáng kể số lƣợng các câu vấn tin đơn quan hệ mà nếu chƣơng trình ít ứng dụng và các quan hệ có kích thƣớc bé thì tính hiệu quả không cao. Chẳng hạn

SELECT <danh sách thuộc tính> FROM S1, S2, S3.

WHERE <Điều kiện>

Thì phải thay bởi Card (S2)* Card (S3)

Ví dụ:

Cho câu vấn tin p3

p3: SELECT ThamGiaCM.TenThamGiaCM, KhenThuong‟.ThanhTich

FROM ThamGiaCM, KhenThuong‟

WHERE ThamGiaCM.MaThamGiaCM = KhenThuong‟. MaThamGiaCM

Theo phép thế bộ của thuật toán p3 đƣợc thay bởi tập 3 câu SQL một quan hệ nhƣ sau:

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ q1 : SELECT ThamGiaCM.TenThamGiaCM , ThanhTich

FROM ThamGiaCM

WHERE ThamGiaCM.MaThamGiaCM = “MACM3” AND ThanhTich = “Anh hùng lực lƣợng vũ trang”

q2: SELECT ThamGiaCM.TenThamGiaCM , ThanhTich FROM ThamGiaCM

WHERE ThamGiaCM.MaThamGiaCM = “MACM7” AND ThanhTich = “Chống Pháp”

q3: SELECT ThamGiaCM.TenThamGiaCM , ThanhTich FROM ThamGiaCM

WHERE ThamGiaCM.MaThamGiaCM = “MACM8” AND ThanhTich = “Chống Mỹ”

2.2.3Ứng dụng của phương pháp thay thế SQL

Tƣơng tự với mục 2.1.3 phƣơng pháp thay thế SQL đƣợc các phần mềm quản lí CSDL dùng để thay thế câu SQL đa quan hệ thành một tập các câu đơn quan hệ (chỉ có một quan hệ sau FROM) còn các quan hệ còn lại đƣợc thế bộ điều đó có thể làm tăng số lƣợng câu vấn tin SQL nhƣng lại sử dụng đƣợc thể vấn tin tối ƣu ORQ . Phƣơng pháp này đã đƣợc ứng dụng để quản lí thi đua khen thƣởng tại UBND tỉnh Hà Tây (cũ).

2.3. Thuật toán xử lý tiền tối ƣu câu SQL

Chúng ta kết hợp hai phƣơng pháp phân rã SQL và thay thế SQL đã trình bày ở trên để có thuật toán tiền tối ƣu nhƣ sau:

Vào: MRQ: Câu vấn tin có n quan hệ.

Ra: Output: Các câu vấn tin đơn quan hệ

Tien_TOI_UU(MRQ)

Begin1

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ If n= 1 then //chỉ có một quan hệ//

ORQ = MRQ

Output = ThucHien(ORQ) //thực hiện câu vấn tin một quan hệ và kết thúc//

Else

Begin2 //có câu vấn tin đa quan hệ//

MRQ ={ORQ1, ORQ2, … , ORQm, MRQ’}

For i = 1 to m Do Begin3

Output’ = ThucHien(ORQi) //thực hiện ORQi}

Output = Output Output’ //trộn tất cả các kết quả lại// End Begin3

Next i

R = CHON_QH(MRQ’) //R có size nhỏ nhất đƣợc chọn cho phép thế bộ//

For Each t In R Do //t là biến bộ của R// Begin4

MRQ” = thay giá trị cho t trong MRQ’

Output‟ = Tien_TOI_UU (MRQ”) //gọi đệ qui//

Output = Output Output’ //Trộn tất cả các kết quả lại// End Begin4

Next t

End Begin2

//phân rã MRQ thành tập m //câu vấn tin đơn quan hệ //ORQ1, ORQ2, … , ORQm

//và một câu vấn tin đa quan hệ MRQ’//

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ End_if

End Begin1 //Kết thúc Tien_TOI_UU//

Ví dụ:Nhằm minh họa cho thuật toán. Chúng ta xét CSDL (rất đơn

giản) với các quan hệ sau:

DanhHieu (MaDanhHieu, TenDanhHieu, CapQuyetDinh)

MaDanhHieu TenDanhHieu MADH1 MADH2 MADH3 MADH4 Bằng khen Giấy khen Huân chƣơng Huy Chƣơng Bảng 2.2.2. Số liệu của quan hệ DanhHieu

ThamGiaCM(MaThamGiaCM, TenThamGiaCM, GioiTinh)

MaThamGiaCM TenThamGiaCM GioiTinh

MACM1 MACM2 MACM3 MACM4 MACM5 MACM6 MACM7 MACM8

Ngô Quốc Anh Lê Văn Hoàn Trần Văn Lệ Hoàng Văn Minh Hồ Van Canh Bùi Chu Nguyễn Ngọc Bích Lê Hồng Hạnh Nam Nam Nam Nam Nam Nam Nữ Nữ Bảng 2.2.3 Số liệu quan hệ ThamGiaCM

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ KhenThuong(MaThamGiaCM, MaDanhHieu, ThanhTich)

Từ các quan hệ trên, hãy "Cho biết tên và thành tích của những ngƣời tham gia cách mạng đã nhận huân chƣơng?”

Câu vấn tin này có thể đƣợc diễn tả bằng SQL đƣợc ký hiệu là p nhƣ sau:

p: SELECT ThamGiaCM.TenThamGiaCM, KhenThuong.ThanhTich FROM DanhHieu , ThamGiaCM, KhenThuong

Một phần của tài liệu Tiền tối ưu các các SQL chương trình nguồn (Trang 35 - 66)

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

(66 trang)