Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 50 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
50
Dung lượng
258,44 KB
Nội dung
Cơ sở liệu nâng cao Toàn vẹn sở liệu active Đỗ Thanh Nghị dtnghi@cit.ctu.edu.vn Cần Thơ 11-10-2016 Toàn vẹn sở liệu active ■ Mục tiêu ● ● ● ● điều khiển toàn vẹn ngữ nghĩa đưa khái niệm trigger cài đặt mơ hình quan hệ minh họa với SQL3 Tồn vẹn ngữ nghĩa Định nghĩa ■ Toàn vẹn ngữ nghĩa ● ● ■ liệu phải hợp lệ quán hợp lệ quán định nghĩa với trợ giúp ràng buộc toàn vẹn Ràng buộc toàn vẹn ● ● ● ● luật định nghĩa người thiết kế CSDL cho phép định nghĩa tính hợp lệ liệu phải hệ thống kiếm sốt CSDL phải ln thỏa tập ràng buộc Vấn đề ■ Định nghĩa ràng buộc ● ● ■ ngơn ngữ định nghĩa ràng buộc tích hợp vào SQL, mở rộng nào, định nghĩa ràng buộc? nhiều cách tiếp cận khác Kiểm chứng ràng buộc ● ● ● nào? kiểm chứng? giải thuật nào? Các thể thức ràng buộc toàn vẹn Thể thức ■ Ràng buộc cấu trúc ● ■ Ràng buộc xử lý ● ■ tiến hóa liệu Ràng buộc phụ thuộc ● ■ đặc thù cho mơ hình liệu phụ thuộc hàm, bao hàm, đa trị Khẳng định tổng quát ● luật quản lý và/hoặc biểu thức số học Ràng buộc cấu trúc ■ Ràng buộc cấu trúc ● ● ■ đặc thù cho mơ hình liệu trình bày đặc tính mơ hình Mơ hình quan hệ ● ● ● ● khóa khơng rỗng phụ thuộc tham chiếu ràng buộc miền Ràng buộc cấu trúc mơ hình quan hệ ■ Khóa ● ■ hay nhóm thuộc tính định nghĩa khóa quan hệ phải có tính thuộc tính NoAp quan hệ Appartment xác định mẩu tin quan hệ Không rỗng ● thuộc tính khơng nhận giá trị rỗng thuộc tính NoAp quan hệ Appartment không nhận giá trị rỗng Ràng buộc cấu trúc mơ hình quan hệ ■ Phụ thuộc tham chiếu ● ■ phụ thuộc giá trị thuộc tính (nhóm thuộc tính) quan hệ với giá trị thuộc tính (nhóm thuộc tính) quan hệ khác thuộc tính NoAp quan hệ Room tham chiếu đến thuộc tính NoAp quan hệ Appartment Ràng buộc miền ● thuộc tính quan hệ nhận giá trị thuộc miền giá trị thuộc tính Name quan hệ Room nhận giá trị nằm thuộc {phịng ngủ, phịng khách, phòng ăn, bếp, phòng tắm, văn phòng} 10 Hoạt động CSDL ■ Trong hệ thống ● ● ● ● quản lý toàn vẹn quản lý view cụ thể cải tiến hiệu ví dụ trường hợp cập nhật quan hệ, kích hoạt cập nhật view tương ứng 36 Những hệ thống trigger ■ Vấn đề ● ● ■ trình bày trigger mơ hình thực thi tập triggers Nhiều trình bày trigger ● ● ● mơ hình EA : Event ==> Action mơ hình ECA : Event mơ hình khác : tập luật 37 Event, condition, action ■ Sự kiện ● ● ● ■ kiện hay phép chèn quan hệ thời điểm cho trước tham số kiện quan hệ có liên quan, thời điểm ngữ cảnh kiện liệu cần thiết cho đánh giá luật Kiểu kiện ● ● đơn giản phức hợp 38 Event, condition, action ■ Điều kiện ● ● ■ diễn đạt liệu CSDL tùy chọn Hành động ● ● ● mã thực thi điều kiện thỏa mãn thao tác CSDL (truy vấn SQL) thao tác giao dịch (kiểm chứng, từ bỏ) 39 Mơ hình thực thi ■ Khi hệ thống kích hoạt trigger? ● ● ● ■ trước kiện BEFORE sau kiện AFTER diễn kiện INSTEAD Kích hoạt hành động trigger nào? ● ● lần liệu liên quan STATEMENT mẩu tin ROW 40 Mơ hình thực thi ■ Kích hoạt tập hợp triggers ● ● ■ hệ thống quản lý tập hợp triggers kích hoạt? kiện kích hoạt nhiều triggers, thực thi tất triggers? theo thứ tự ưu tiên? xếp gối lên ngữ cảnh thực thi Kích hoạt cách đệ quy ● kích hoạt trigger kích hoạt tập triggers khác kết thúc? giới hạn độ sâu 41 Triggers HQTCSDL quan hệ ■ Đề nghị SQL ● ● ● lệnh tạo trigger CREATE TRIGGER định nghĩa biến ngữ cảnh OLD/NEW hành động: truy vấn SQL trừ lệnh thực kết nối (connection) lệnh định nghĩa lược đồ 42 Triggers Oracle Triggers Oracle Tương thích chuẩn SQL3 ■ Định nghĩa ba (E, C, A): event, condition, action ■ Cung cấp khả tốt để kiểm chứng ràng buộc ■ Cho phép giới thiệu động ■ Sử dụng ngôn ngữ PL/SQL ■ 44 Cú pháp CREATE [OR REPLACE] TRIGGER [schema.]trigger {BEFORE | AFTER} {DELETE | INSERT | UPDATE [OF column [, column] ]} [OR {DELETE | INSERT | UPDATE [OF column [, column] ]}] ON [schema.]table [ [REFERENCING { OLD [AS] old [NEW [AS] new] | NEW [AS] new [OLD [AS] old] } ] FOR EACH ROW [WHEN (condition)] ] pl/sql_block 45 Hành động ■ Ngôn ngữ PL/SQL ● ● ● ● ● ngôn ngữ thủ tục SQL ngơn ngữ lập trình (giới hạn) cho phép sử dụng cấu trúc điều khiển IF-THEN-ELSE, LOOP cho phép khai báo biến sử dụng để định nghĩa triggers thủ tục 46 Hành động ■ Khối lệnh PL/SQL DECLARE khai báo biến BEGIN lệnh … END RUN; 47 Ví dụ ■ Tồn vẹn tham chiếu ● ● ■ Sự kiện ● ■ Inscription Student tạo trigger thực kiểm chứng toàn vẹn tham chiếu chèn vào quan hệ Inscription chèn vào Inscription Hành động ● kiểm tra xem bảng Student, tham khảo có tồn bảng Student 48 Ví dụ CREATE TRIGGER verifstudent BEFORE INSERT ON inscription FOR EACH ROW DECLARE present integer; BEGIN select count(no) into present from student if present < then where no=:new.no; raise_application_error(-1, ‘no student'); end if; END RUN; 49 50