Trong tr−ờng hợp quan hệ đ−ợc tham chiếu mà thuộc tính cặp ghép bị sửa đổi phải đảm bảo các ràng buộc toàn vẹn tham chiếu dữ liệu và xử lý nh− ở phép

Một phần của tài liệu Chương 4 mô hình cơ sở dữ liệu quan hệ pot (Trang 30 - 35)

đổi phải đảm bảo các ràng buộc toàn vẹn tham chiếu dữ liệu và xử lý nh− ở phép xoá.

- toàn vẹn thao tác bẫy.

2. Phép tính quan hệ

Trong các ngôn ngữ dựa trên phép tính quan hệ, thay vì xác định xem phải làm thế nào để thu đ−ợc kết quả, chúng ta sẽ xác định xem kết quả là gì bằng cách thế nào để thu đ−ợc kết quả, chúng ta sẽ xác định xem kết quả là gì bằng cách đ−a ra mối liên hệ đ−ợc giả sử là đúng đối với kết quả.

Ngôn ngữ phép tính quan hệ đ−ợc phân làm hai nhóm: phép tính quan hệ bộ (tuple relational calculus) phép tính quan hệ miền (domain relational (tuple relational calculus) phép tính quan hệ miền (domain relational calculus). Sự khác biệt giữa chúng là ở các biến nguyên thuỷ đ−ợc dùng khi xác

định các câu vấn tin.

Ngôn ngữ phép tính quan hệ có cơ sở lý thuyết vững chắc bởi vì chúng xây dựng trên logic vị từ bậc nhất. Ngữ nghĩa đ−ợc gán cho các công thức bằng cách dựng trên logic vị từ bậc nhất. Ngữ nghĩa đ−ợc gán cho các công thức bằng cách diễn giải chúng nh− các phán đoán trên cơ sở dữ liệu. Một cơ sở dữ liệu quan hệ có thể xem nh− tập các bộ hoặc tập các miền. Phép tính quan hệ bộ diễn giải các biến trong công thức nh− một bộ của quan hệ, còn phép tính quan hệ miền diễn giải biến nh− giá trị của miền.

a) Phép tính quan hệ bộ(Codd 1970)

Biến nguyên thuỷ dùng trong phép tính quan hệ bộ là biến bộ (tuple variable), biểu thị một bộ của quan hệ. Nói cách khác biến này biến thiên trên các bộ của biểu thị một bộ của quan hệ. Nói cách khác biến này biến thiên trên các bộ của quan hệ.

Trong phép tính quan hệ bộ, câu vấn tin đ−ợc đặc tả là {t | F(t) } {t | F(t) }

trong đó t là biến bộ và F là công thức chỉnh dạng. Công thức nguyên tử có hai dạng: dạng:

(1) Biểu thức kiểu phần tử biến bộ.

Nếu t là một biến bộ biến thiên trên các bộ của một quan hệ R, biểu thức “bộ

Ch−ơng 4. Mô hình cơ sở dữ liệu quan hệ 4 − 4 − 314 − 4 − 313131 (2) Điều kiện.

Loại công thức nguyên tử này có thể định nghĩa nh− sau:

(i) s[A] θ t[B] , trong đó s và t là các biến bộ và A và B là các thành phần t−ơng ứng của s và t , θ là một trong các toán tử so sánh <, >, = , ≤ , ≥ và ≠ . t−ơng ứng của s và t , θ là một trong các toán tử so sánh <, >, = , ≤ , ≥ và ≠ . (ii) s[A] θ c , trong đó s , A và θ định nghĩa giống nh− trên và c là hằng. Hiện có nhiều ngôn ngữ dựa trên phép tính quan hệ bộ, và ngôn ngữ thông dụng nhất là SQL và QUEL. SQL hiện là chuẩn quốc tế (duy nhất) với các phiên bản chuẩn hoá đã đ−ợc đ−a ra năm 1986 (SQL1), năm 1992 (SQL2) và năm 1998 (SQL3).

D−ới đây là một số ví dụ minh hoạ sử dụng các quan hệ

EMP(ENO, ENAME, TITLE)

PAY(TITLE, SAL)

PROJ(PNO, PNAME, BUDGET)

ASG(ENO, PNO, RESP, DUR)

◊ Ví dụ: Tìm tên tất cả nhân viên đang làm việc cho dự án CAD/CAM Select EMP.Ename Select EMP.Ename

From EMP, ASG, PROJ Where (EMP.Eno = ASG.Eno) Where (EMP.Eno = ASG.Eno)

AND (ASG.Pno = PROJ.Pno)

AND (PROJ.Pname = “CAD/CAM”)

◊ Ví dụ: Tăng l−ơng các lập trình viên (programmer) lên 25000 USD. Update PAY Update PAY

Set Sal = 25000

Where PAY.Title = “Programmer”

b) Phép tính quan hệ miền (Lacroix, Pirotte 1977)

Biến nguyên thuỷ dùng trong phép tính quan hệ miền là biến miền (domain

variable), xác định một thành phần của bộ biến thiên trong tập giá trị của miền. Nói cách khác, miền xác định của biến miền bao gồm các miền trên đó quan hệ Nói cách khác, miền xác định của biến miền bao gồm các miền trên đó quan hệ đ−ợc định nghĩa. Câu vấn tin có dạng sau: (adsbygoogle = window.adsbygoogle || []).push({});

x1, ... , xn | F(x1, ... , xn )

trong đó F là công thức chỉnh dạng còn x1, ... , xn là các biến tự do.

Thành công của ngôn ngữ phép tính quan hệ miền chủ yếu do QBE (Zloof,

1977) đem lại. Đây là ứng dụng kiểu trực quan của phép tính miền. QBE (Query by example) đ−ợc thiết kế dành cho kiểu làm việc t−ơng tác từ thiết bị đầu cuối by example) đ−ợc thiết kế dành cho kiểu làm việc t−ơng tác từ thiết bị đầu cuối trực quan và thân thiện.

Ch−ơng 4. Mô hình cơ sở dữ liệu quan hệ 4 − 4 − 324 − 4 − 323232

Khái niệm cơ bản là example : ng−ời sử dụng đ−a ra các câu vấn tin bằng cách cung cấp một example có thể có của câu trả lời. Hành động gõ tên quan hệ sẽ cung cấp một example có thể có của câu trả lời. Hành động gõ tên quan hệ sẽ kích hoạt việc hiển thị các l−ợc đồ của chúng lên màn hình. Sau đó bằng cách cung cấp các từ khoá trong các cột (miền), ng−ời dùng đặc tả câu vấn tin.

Chẳng hạn các thuộc tính của quan hệ chiếu đ−ợc cho bằng từ P (Project). Theo mặc định tất cả các câu vấn tin đều là kiểu truy xuất. Câu vấn tin cập Theo mặc định tất cả các câu vấn tin đều là kiểu truy xuất. Câu vấn tin cập nhật đòi hỏi phải có đặc tả U d−ới tên quan hệ cần cập nhật.

+ Ví dụ: Tìm tên tất cả nhân viên đang làm việc cho dự án CAD/CAM

EMP ENO ENAME TITLE

E2 P

ASG ENO PNO RESP DUR

E2 P3

PROJ PNO PNAME BUDGET

P3 CAD/CAM

◊ Ví dụ: Tăng l−ơng các lập trình viên (programmer) lên 25000 USD.

PAY TITLE SAL

Ch−ơng 4. Mô hình cơ sở dữ liệu quan hệ 4 − 4 − 334 − 4 − 333333

3. Giao diện ngôn ngữ lập trình

Các ngôn ngữ quan hệ rõ ràng không đủ để viết các ch−ơng trình ứng dụng phức tạp. Vì thế giao tiếp giữa ngôn ngữ quan hệ với ngôn ngữ lập trình là cần phức tạp. Vì thế giao tiếp giữa ngôn ngữ quan hệ với ngôn ngữ lập trình là cần thiết. Ta có thể phân biệt hai cách tiếp cận chính : tiếp cận ghép chặt (tightly

coupled approach) và tiếp cận ghép hờ (loosely coupled approach).

a) Tiếp cận ghép chặt

Tiếp cận ghép chặt mở rộng ngôn ngữ lập trình bằng các lệnh thao tác dữ liệu.

Ngôn ngữ lập trình và ngôn ngữ cơ sở dữ liệu đ−ợc trộn lại thành một ngôn ngữ duy nhất. duy nhất.

Một thí dụ điển hình là ngôn ngữ Pascal/R, trong đó ngôn ngữ Pascal đ−ợc mở rộng với kiểu biến mới là relation chứa nhiều thể hiện của các bộ (đ−ợc cài đặt rộng với kiểu biến mới là relation chứa nhiều thể hiện của các bộ (đ−ợc cài đặt qua các record của Pascal) và với các lệch thao tác quan hệ.

Một thí dụ điển hình khác là ph−ơng pháp của các ngôn ngữ thế hệ thứ 4 (4GL - fourth-generation language). Đây là những ngôn ngữ cấp cao có sự tổ hợp của - fourth-generation language). Đây là những ngôn ngữ cấp cao có sự tổ hợp của các toán tử đại số quan hệ với các kết cấu (construct) của ngôn ngữ lập trình. Khả năng sử dụng các biến trung gian và các cấu trúc lập trình mạnh (ví dụ vòng lặp) làm cho chúng trở thành các “ngôn ngữ lập trình h−ớng cơ sở dữ liệu” (database- oriented programming language).

◊ Ví dụ

Cho quan hệ

ASG(ENO, PNO, RESP, DUR) Xét ch−ơng trình ứng dụng đơn giản sau: Xét ch−ơng trình ứng dụng đơn giản sau:

“ Đối với các bộ trong quan hệ ASG có DUR > 40, hãy thực hiện một ch−ơng trình con phức tạp trên thuộc tính DUR, và tạo ra báo cáo có sử dụng ENO và kết trình con phức tạp trên thuộc tính DUR, và tạo ra báo cáo có sử dụng ENO và kết quả của ch−ơng trình con này”. (adsbygoogle = window.adsbygoogle || []).push({});

Với giả thiết có một ngôn ngữ 4GL, ch−ơng trình có thể viết nh− sau for mỗi bộ thuộc ASG có DUR > 40 for mỗi bộ thuộc ASG có DUR > 40

do

Thực hiện ch−ơng trình con X trên DUR, cho ra kết quả RESULT Tạo ra một REPORT trên ENO, RESULT Tạo ra một REPORT trên ENO, RESULT

end

ở đây RESULT là kết quả ch−ơng trình con và REPORT là câu vấn tin đã đ−ợc định nghĩa tr−ớc cho bộ tạo lập báo cáo (th−ờng là thành phần của 4GL). đ−ợc định nghĩa tr−ớc cho bộ tạo lập báo cáo (th−ờng là thành phần của 4GL).

b) Tiếp cận ghép hờ

Tiếp cận ghép hờ tích hợp ngôn ngữ dữ liệu với ngôn ngữ lập trình qua các lời

gọi cơ sở dữ liệu. Ngôn ngữ lập trình là ngôn ngữ cấp cao nh− COBOL hoặc PL/I, các ngôn ngữ này không biết gì về các khái niệm cơ sở dữ liệu. Ngôn ngữ này chỉ các ngôn ngữ này không biết gì về các khái niệm cơ sở dữ liệu. Ngôn ngữ này chỉ

Ch−ơng 4. Mô hình cơ sở dữ liệu quan hệ 4 − 4 − 344 − 4 − 343434

đ−ợc mở rộng đơn giản với các lệnh đặc biệt gọi đến hệ thống cơ sở dữ liệu. Những lệnh này là kết cấu của ngôn ngữ cơ sở dữ liệu, đ−ợc đặt tr−ớc bởi ký tự Những lệnh này là kết cấu của ngôn ngữ cơ sở dữ liệu, đ−ợc đặt tr−ớc bởi ký tự khoá (thí dụ $) để phân biệt chúng với kết cầu ngôn ngữ lập trình.

Ngôn ngữ cơ sở dữ liệu đ−ợc dùng trong loại ngôn ngữ lập trình này th−ờng dựa trên phép tính quan hệ bộ và có tính h−ớng tập hợp. Ng−ợc lại ngôn ngữ lập dựa trên phép tính quan hệ bộ và có tính h−ớng tập hợp. Ng−ợc lại ngôn ngữ lập trình thuộc loại thủ tục. Chuyển đổi từ chế độ h−ớng tập hợp sang chế độ thủ tục theo yêu cầu của ngôn ngữ lập trình th−ờng đơn giản; chúng ta chỉ cần dùng một con trỏ (cursor) cho chạy trên tập hợp. Con trỏ có thể t−ờng minh nh− trong SQL nhúng (embedded SQL), hoặc ngầm định, nh− trong EQUEL (embedded QUEL). Có hai chế độ thực hiện ngôn ngữ mở rộng loại này: thông dịch các lời gọi cơ sở dữ liệu vào thời điểm chạy ch−ơng trình hoặc biên dịch tr−ớc các lời gọi cơ sở dữ liệu. Chế độ sau th−ờng hiệu quả hơn.

◊ Ví dụ

Chúng ta minh hoạ cách tiếp cận này bằng cách xét ch−ơng trình giống nh− ví dụ tr−ớc, nh−ng lần này viết nó trong ngôn ngữ SQL nhúng vào PL/I. Dấu $ chỉ dụ tr−ớc, nh−ng lần này viết nó trong ngôn ngữ SQL nhúng vào PL/I. Dấu $ chỉ lệnh cơ sở dữ liệu. : : $DCL VARDUR INT $DCL VARENO INT : :

$ LET C BE {định nghĩa con trỏ}

SELECT ASG.ENO: VARENO, ASG.DUR: VARDUR FROM ASG FROM ASG

WHERE ASG.DUR > 40 : :

:

$ OPEN C

Do while “not end C” Begin Begin

$ FETCH C

Thực hiện ch−ơng trình con X trên DUR, cho ra kết quả RESULT Tạo ra một REPORT trên ENO, RESULT Tạo ra một REPORT trên ENO, RESULT

Ch−ơng 4. Mô hình cơ sở dữ liệu quan hệ 4 − 4 − 354 − 4 − 353535

bài tập

4.01. Trình bày các khái niệm a) Miền, tích đề các, quan hệ a) Miền, tích đề các, quan hệ b) Bản ghi, thuộc tính

c) l−ợc đồ quan hệ, l−ợc đồ cơ sở dữ liệu quan hệ

d) Siêu khóa, khóa, khóa chính, khóa dự tuyển, khóa ngoại e) thuộc tính khóa, thuộc tính không khóa. e) thuộc tính khóa, thuộc tính không khóa.

f) ràng buộc toàn vẹn,

g) ràng buộc toàn vẹn thực thể h) ràng buộc toàn vẹn tham chiếu h) ràng buộc toàn vẹn tham chiếu i) ràng buộc toàn vẹn miền giá trị j) Thao tác bẫy

4.02. Định nghĩa các phép toán quan hệ: a) Tích đề các a) Tích đề các b) phép hợp c) phép giao d) phép hiệu e) phép chiếu f) phép nối g) phép đẳng nối h) nối tự nhiên i) phép bán nối j) phép chia 4.03. Cho các quan hệ R S A B B C a b b c c b e a d e b d

Hãy tính (i) R∪S, (ii) R − S, (iii) R >><>><<< S, (iv) πA(R), (v) σA=C(R ìììì S) (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Chương 4 mô hình cơ sở dữ liệu quan hệ pot (Trang 30 - 35)