Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 78 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
78
Dung lượng
1,41 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGƠ THỊ THANH HỒ NGHIÊN CỨU, XÂY DỰNG CƠ SỞ DỮ LIỆU TÍCH CỰC LUẬN VĂN THẠC SĨ Hà Nội, 2011 TIEU LUAN MOI download : skknchat@gmail.com ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGÔ THỊ THANH HOÀ NGHIÊN CỨU, XÂY DỰNG CƠ SỞ DỮ LIỆU TÍCH CỰC Ngành: Cơng nghệ thơng tin Chun nghành: Hệ thống thông tin Mã số: 60 48 05 LUẬN VĂN THẠC SĨ NGƯỜI HƯỚNG DẪN KHOA HỌC: TS NGUYỄN TUỆ Hà Nội, 2011 TIEU LUAN MOI download : skknchat@gmail.com LỜI CẢM ƠN L ời em xin chân thành cảm ơn thầy giáo TS.Nguyễn Tuệ cho em nhiều ý kiến đóng góp q báu, tận tình hướng dẫn giúp đỡ em mặt kiến thức tài liệu để em hồn thành luận văn Em xin gửi lời cảm ơn đến Ban Giám hiệu, phòng ban, Khoa sau Đại học Trường Đại học Công nghệ tạo điều kiện cho em suốt khố học Em xin bày tỏ lịng biết ơn sâu sắc đến thầy giáo, cô giáo Trường Đại học Công nghệ – Đại học Quốc Gia Hà Nội , thầy, cô giáo tham gia giảng dạy, hướng dẫn, bảo cho em suốt hai năm học qua Và em xin gửi lời cảm ơn đến bạn bè, gia đình đồng nghiệp có động viên, khuyến khích hỗ trợ cần thiết để em hoàn thành luận văn Hà nội, ngày 10 tháng năm 2011 Ngô Thị Thanh Hoà TIEU LUAN MOI download : skknchat@gmail.com MỤC LỤC LỜI CẢM ƠN MỤC LỤC BẢNG KÝ HIỆU CÁC CHỮ VIẾT TẮT MỞ ĐẦU Chương I TỔNG QUAN VỀ CSDL QUAN HỆ VÀ CÁC RÀNG BUỘC TOÀN VẸN 1.1 TỔNG QUAN VỀ CSDL QUAN HỆ 1.1.1 Các khái niệm CSDL quan hệ 1.1.2 Chuẩn hóa 10 1.1.2.1 Các cấu trúc phụ thuộc 11 1.1.2.2 Các dạng chuẩn 14 1.1.3 Các quy tắc toàn vẹn 17 1.1.4 Các ngôn ngữ quan hệ liệu 18 1.1.4.1 Đại số quan hệ 19 1.1.4.2 Các tính tốn quan hệ 22 1.1.4.3 Tương tác với ngơn ngữ lập trình 25 1.1.5 Hệ Quản trị CSDL quan hệ 25 1.2 CÁC RÀNG BUỘC TOÀN VẸN TRÊN CSDL QUAN HỆ 28 1.2.1 Kiểm sốt tồn vẹn ngữ nghĩa tập trung 30 1.2.1.1 Khái niệm ràng buộc toàn vẹn 30 1.2.1.2 Các yếu tố ràng buộc toàn vẹn 31 1.2.1.3 Phân loại ràng buộc toàn vẹn 34 1.2.2 Bắt tuân theo ràng buộc toàn vẹn 38 Chƣơng II 42 CƠ SỞ DỮ LIỆU TÍCH CỰC 42 TIEU LUAN MOI download : skknchat@gmail.com 2.1 CƠ SỞ DỮ LIỆU TÍCH CỰC 42 2.1.1 Khái niệm sở liệu tích cực 42 2.1.2 Quy tắc ECA 42 2.1.2.1 Sự kiện (Event) 42 2.1.2.2 Điều kiện (Condition) 46 2.1.2.3 Hành động (Active) 47 2.2 MƠ HÌNH TỔNG QT VÀ CÁC TRIGGER TRONG ORACLE 48 2.2.1 Mơ hình tổng qt CSDL tích cực: 48 2.2.2 Vấn đề thiết kế cài đặt cho sở liệu tích cực 54 2.2.3 Các ứng dụng tiềm sở liệu tích cực 56 Chƣơng III 58 CÀI ĐẶT CÁC QUY TẮC ECA BẰNG NGÔN NGỮ SQL 58 3.1 GIỚI THIỆU TRIGGER TRONG SQL-SERVER 58 3.2 CSDL TRONG QUẢN LÝ BÁN HÀNG 58 3.2.1 Danh mục Cart: 59 2.2.2 Danh mục CartStatus: 59 2.2.3 Danh mục News: 59 2.2.4 Danh mục Parent Product: 60 2.2.5 Danh mục Product: 60 2.2.6 Danh mục ProductCart: 60 2.2.7 Danh mục Role: 61 2.2.8 Danh mục user: 61 3.3 QUY TẮC TẠO TRIGGER 61 3.4 CÁC TRIGGER TRONG CSDL 62 3.4.1 Trigger ngăn chặn việc xóa database Server 62 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop 3.4.2 Trigger ngăn chặn insert vào bảng Product 63 3.4.3 Trigger ngăn chặn update (cập nhật) bảng Product 65 3.4.4 Trigger ngăn chặn xóa liệu bảng 66 3.4.5 Trigger ngăn chặn tạo record bảng 67 3.4.6 Tạo bảng ( không vi phạm trigger trigger 05) 68 3.4.7 Trigger ngăn chặn xóa bảng database 70 3.4.8 Ngăn chặn xóa trigger CSDL 70 3.4.9 Không cho phép tạo bảng CSDL 71 3.4.10 Không cho phép tạo trigger CSDL 72 KẾT LUẬN 74 TÀI LIỆU THAM KHẢO 75 (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop BẢNG KÝ HIỆU CÁC CHỮ VIẾT TẮT Stt Từ viết tắt Tiếng Anh Active Database System Tiếng Việt Hệ thống sở liệu tích cực ABDS CSDL DBMS Database Management System Hệ quản trị sở liệu ECA Event-Condition-Active Sự kiện-Điều kiện-Hành động HQTCSDL WFF Cơ sở liệu Hệ quản trị sở liệu Well-formal formular Một công thức xây dựng tốt (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop MỞ ĐẦU Theo truyền thống, hệ thống sở liệu đƣợc xem nhƣ kho để lƣu trữ thông tin cần thiết ứng dụng chúng đƣợc truy cập ngƣời sử dụng chƣơng trình giao diện tƣơng tác Tuy nhiên, hệ thống sở liệu đƣợc sử dụng cho phạm vi lĩnh vực liên quan đến việc xử lý thơng tin phức tạp, chí số lƣợng lớn liệu, đòi hòi thực xác cao, mơi trƣờng nhiều thành phần theo quy ƣớc chứng tỏ không đƣợc thỏa mãn Điều dẫn đến xu hƣớng chung việc nghiên cứu sở liệu hƣớng chức đƣợc yêu cầu ứng dụng đƣợc hỗ trợ sở liệu, sinh hệ thống sở liệu với nhiều khả tinh xảo để mô khía cạnh cấu trúc hoạt động ứng dụng Trong số lĩnh vực nhận đƣợc ý năm gần với nhìn làm bật hoạt động dễ dàng lập trình sở liệu, sở liệu tạm thời, sở liệu không gian, sở liệu đa phƣơng tiện (truyền thông), sở liệu suy diễn sở liệu tích cực Trong luận văn này, tơi tập trung vào vấn đề sở liệu tích cực Hệ thống sở liệu tích cực (ADBS) hỗ trợ chế cho phép chúng tự động phản ứng tới kiện diễn bên bên ngồi hệ thống sở liệu Trong năm gần đây, nỗ lực đáng kể đƣợc hƣớng tới việc nâng cao hiểu biết hệ thống đó, có nhiều ứng dụng đƣợc đề xuất Sự tích cực mức độ cao khơng mang lại phù hợp với phƣơng pháp tiếp cận để tích hợp chức hoạt động với hệ thống sở liệu quy ƣớc, nhƣng mang tới việc cải thiện tầm hiểu biết ngơn ngữ miêu tả cách thức hành động tích cực, mơ hình thực kiến trúc Trong luận văn trình bày tính chất hệ sở liệu tích cực, mơ tả tập hợp hệ thống tiêu biểu framework phổ biến, nghiên cứu tầm quan trọng việc thiết kế cơng cụ để phát triển ứng dụng tích cực Cơ sở liệu tích cực hỗ trợ ứng dụng cách di chuyển hành động phản ứng lại từ ứng dụng tới hệ quản trị sở liệu (DBMS) Các sở liệu tích cực theo cách có đủ khả giám sát phản ứng lại tình (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop riêng biệt có liên quan đến ứng dụng Bản chất phản ứng lại tập trung xử lý cách lúc Mục đích luận văn: - Tìm hiểu xây dựng CSDL tích cực: sở liệu mà việc đảm bảo ràng buộc toàn vẹn đƣợc thực cách tự động thông qua quy tắc ECA - Cơ sở liệu tích cực có ứng dụng tốt việc mở rộng hệ thống sở liệu, làm dễ dàng cho ngƣời sử dụng khai thác sở liệu Nội dung luận văn trình bày chương: Chương 1: Tổng quan sở liệu quan hệ loại ràng buộc CSDL quan hệ Chương 2: Cơ sở lý thuyết sở liệu tích cực, cụ thể cấu trúc việc xây dựng quy tắc ECA Chương 3: Cài đặt quy tắc ECA SQL (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop Chương I TỔNG QUAN VỀ CSDL QUAN HỆ VÀ CÁC RÀNG BUỘC TOÀN VẸN 1.1 TỔNG QUAN VỀ CSDL QUAN HỆ Có nhiều lý để chọn mơ hình liệu quan hệ nhƣ: Cơ sở tốn học mơ hình quan hệ ứng viên tốt cho xử lý lý thuyết Mơ hình quan hệ đƣợc đặc trƣng tính chất mạnh mẽ: a Cấu trúc liệu đơn giản Chúng quan hệ, bảng hai chiều mà phần tử chúng mục liệu Điều cho phép mức độ độc lập cao biểu diễn liệu vật lý (tức tệp mục) b Mơ hình quan hệ cung cấp sở chắn cho việc tƣơng thích liệu Việc thiết kế CSDL đƣợc giúp đỡ q trình chuẩn hóa loại bỏ bất thƣờng liệu Các trạng thái tƣơng thích CSDL đƣợc định nghĩa cách đồng đƣợc trì thơng qua quy tắc tồn vẹn c Mơ hình CSDL cho phép thao tác quan hệ hƣớng tập hợp Tính chất dẫn đến phát triển mạnh mẽ ngôn ngữ phi thủ tục dựa lý thuyết tập hợp (đại số quan hệ) dựa logic (tính tốn quan hệ) 1.1.1 Các khái niệm CSDL quan hệ Một CSDL tập hợp liệu có cấu trúc liên quan đến vài tƣợng sống thực mà ta muốn mơ hình hóa Một CSDL quan hệ CSDL mà cấu trúc liệu dạng bảng Một cách hình thức, quan hệ đƣợc định nghĩa n tập hợp D1, D2, … , Dn (không thiết phân biệt) tập hợp n-bộ cho d1 D1, d2 D2, …., dn Dn Ví dụ 1.1 Xét CSDL mơ hình hóa cơng ty khí Các thực thể đƣợc mơ hình hóa nhân viên (EMP) dự án (PROJ) Với nhân viên lƣu trữ mã số nhân viên (ENO), tên (ENAME), danh hiệu công ty (TITLE), lƣơng (SAL), mã số dự án mà nhân viên làm việc (PNO), trách nhiệm dự (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop 61 2.2.7 Danh mục Role: STT Tên trƣờng Kiểu liệu Ràng buộc Id Int Khố Discription nvarchar(250) code nvarchar(50) 2.2.8 Danh mục user: STT Tên trƣờng Kiểu liệu Ràng buộc Id Bigint Khố UserName nvarchar(50) FullName nvarchar(250) Password Ntext discription Ntext Email nvarchar(250) Phone nvarchar(50) typeCustomer nvarchar(50) 3.3 QUY TẮC TẠO TRIGGER Cú pháp để tạo trigger giống nhƣ tạo thủ tục thƣờng trú Tuy nhiên, Trigger đƣợc tạo cho bảng liệu cụ thể CREATE Trigger ON [WITH ENCRYPTION] { { FOR | AFTER} | INSTEAD OF } AS (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop 62 Trong đó: - ON Trigger đƣợc viết cho bảng tên bảng ảo Trigger với từ khóa AFTER khơng hỗ trợ VIEW - WITH ENCRYPTION: giống nhƣ Thủ tục thƣờng trú bảng ảo cho phép ngăn ngừa việc sửa đổi nội dung Trigger Sử dụng ALTER Trigger WITH ENCRYPTION không hỗ trợ - FOR | AFTER: Mệnh đề FOR (AFTER) Trigger áp dụng cho hành động ba hành động sau: INSERT, DELETE, UPDATE Mệnh đề có dạng nhƣ sau: + FOR INSERT + FOR DELETE + FOR UPDATE + FOR INSERT, UPDATE, DELETE - INSTEAD OF: Trigger đƣợc thực thi thay cho câu lệnh SQL gây Trigger INSTEAD OF dùng đƣợc cho View - [DELETE] [,] [INSERT] [,] [UPDATE]: xác định câu lệnh mà thực thi bảng VIEW gây trigger 3.4 CÁC TRIGGER TRONG CSDL Trong phạm vi luận văn xin đƣa chƣơng trình thử nghiệm CSDL quản lý hàng hóa Xây dựng trigger đảm bảo số ràng buộc CSDL 3.4.1 Trigger ngăn chặn việc xóa database Server Với trigger đƣợc dụng phạm vi Server với tên: tr_01_DontDropDataBase a Lệnh tạo (create) kiểm tra (test) trigger: /*1.tr_01_DontDropDataBase*/ Create IF EXISTS (SELECT * FROM sys.triggers WHERE parent_class = AND name = 'tr_01_DontDropDataBase') DROP TRIGGER tr_01_DontDropDataBase (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop 63 ON ALL SERVER; GO CREATE TRIGGER tr_01_DontDropDataBase ON ALL SERVER FOR DROP_DATABASE AS RAISERROR ('tr_01_DontDropDataBase:Ban khong the xoa DataBase nay.Muon xoa ban phai disable trigger tr_01_DontDropDataBase !',10, 1) ROLLBACK GO Test DROP Database databaseTest GO c Hiển thị thông báo sau chạy Test 3.4.2 Trigger ngăn chặn insert vào bảng Product a Mô tả: Với tên: tr_02_Product Sử dụng phạm vi bảng Table Product - Khi gặp kiện Thêm liệu vào bảng Product (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop 64 - Với điều kiện Các trƣờng Name, Code, ParentId insert vào bị trùng với record tồn bảng Product - Hành động xảy là: Không cho phép insert liệu trùng Name, Code, ParentId (rollback lại table, liệu table nhƣ cũ) b Lệnh tạo kiểm tra: /*2.tr_02_Product*/ Create IF OBJECT_ID('tr_02_Product','TR') IS NOT NULL DROP TRIGGER tr_02_Product; GO CREATE TRIGGER tr_02_Product ON Product AFTER INSERT AS DECLARE @Name nvarchar(250), @Code nvarchar(50), @ParentId bigint SELECT @Name = inst.Name, @Code =inst.Code, @ParentId = inst.ParentId FROM inserted AS inst IF EXISTS ( SELECT * FROM Product WHERE Name = @Name AND Code = @Code AND ParentId =@ParentId ) BEGIN RAISERROR ('tr_02_Product:San pham da co bang, ban khong insert vao duoc nua',16,1) ROLLBACK TRANSACTION END GO Test (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop 65 SELECT * FROM [Product] WHERE ParentId =16 AND Code = 'updatecode' AND Name = 'updateproduct' GO INSERT INTO [ECADataBase].[dbo].[Product] ([Name],[Code],[ParentId],[FlagNew],[FlagDeleted],[Fl agHot]) VALUES ('updateproduct','updatecode',16,1,1,1) c Hiển thị thông báo sau chạy Test 3.4.3 Trigger ngăn chặn update (cập nhật) bảng Product Với tên tr_03_Product Phạm vi sử dụng bảng Table Product a Mô tả - Event: cập nhật (Update) bảng Product - Condition: Giá trị update CurrentCost nằm khoảng (10000,2000000) - Action: Rollback lại liệu, không update liệu b Lệnh tạo kiểm tra: /*3.tr_03_Product*/ (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop 66 Create IF OBJECT_ID('tr_03_Product','TR') IS NOT NULL DROP TRIGGER tr_03_Product; GO CREATE TRIGGER tr_03_Product ON Product AFTER UPDATE AS DECLARE @CurrentCost bigint SELECT @CurrentCost = inst.CurrentCost FROM inserted AS inst IF (@CurrentCost < 10000 OR @CurrentCost > 2000000) BEGIN IF(@CurrentCost < 10000) RAISERROR ('tr_03_Product:Ban Update sai.CurrentCost khong the nho hon 10000',16,1) IF (@CurrentCost > 2000000) RAISERROR ('tr_03_Product:Ban Update sai.CurrentCost khong the lon hon 2000000',16,1) ROLLBACK TRANSACTION END GO Test SELECT * FROM Product WHERE Id =1195 Update Product Set CurrentCost =2300000 WHERE Id =1195 3.4.4 Trigger ngăn chặn xóa liệu bảng Tên tr_04_Product Sử dụng phạm vi bảng Table Product a Mơ tả: - Event: Xóa liệu bảng - Condition: Record (row) bảng có trƣờng Amount > - Action: Rollback lại liệu, khơng xóa đƣợc record có Amount >0 b Lệnh tạo kiểm tra: (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop 67 Create IF OBJECT_ID('tr_04_Product','TR') IS NOT NULL DROP TRIGGER tr_04_Product; GO CREATE TRIGGER tr_04_Product ON Product AFTER DELETE AS DECLARE @Amount bigint SELECT @Amount = inst.Amount FROM deleted AS inst BEGIN IF(@Amount > 0) RAISERROR ('tr_04_Product:San pham van kho.Ban khong the xoa duoc',16,1) ROLLBACK TRANSACTION END GO Test SELECT * FROM Product WHERE Id =1195 DELETE FROM Product WHERE Id =1195 3.4.5 Trigger ngăn chặn tạo record bảng Tên tr_05_ProductCart Sử dụng phạm vi bảng Table ProductCart a Mô tả: - Event: tạo record bảng - Condition:Trƣờng Amount record có giá trị lớn trƣờng Amount record bảng Product mà có ProducId với - Action: Rollback lại liệu, không tạo đƣợc b Lệnh tạo kiểm tra: Create IF OBJECT_ID('tr_05_ProductCart','TR') IS NOT NULL DROP TRIGGER tr_05_ProductCart; (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop 68 GO CREATE TRIGGER tr_05_ProductCart ON ProductCart AFTER INSERT AS DECLARE @AmountInProduct INT, @AmountInProductCart INT, @ProductId BIGINT SELECT @AmountInProductCart = Amount,@ProductId = ProductId FROM inserted SELECT @AmountInProduct = Amount FROM Product WHERE Id = @ProductId IF (@AmountInProduct < @AmountInProductCart) BEGIN RAISERROR ('tr_05_ProductCard:Ban ko the tao moi ProductCart.Vi Amount table Product < Amount ma ban muon tao table ProductCart',16,1) ROLLBACK TRANSACTION END GO Test SELECT Id as ProductId,Name,Code,Amount,ParentId FROM Product WHERE Id =1195 INSERT INTO ProductCart (CartId,ProductId,Amount) VALUES (213,1195,1001) 3.4.6 Tạo bảng ( không vi phạm trigger trigger 05) Với tên tr_06_ProductCart Đƣợc sử dụng phạm vi bảng Table ProductCart, Product a Mô tả: - Event : tạo record bảng (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop 69 - Condition: không vi phạm condition trigger tr_05_ProductCart - Action: Cập nhật lại trƣờng Amount bảng Product = Amount - giá trị Amount tạo table ProductCart b Lệnh tạo kiểm tra: /*6.tr_06_ProductCart*/ Create IF OBJECT_ID('tr_06_ProductCart','TR') IS NOT NULL DROP TRIGGER tr_06_ProductCart; GO CREATE TRIGGER tr_06_ProductCart ON ProductCart AFTER INSERT AS DECLARE @AmountInProduct INT, @AmountInProductCart INT, @ProductId BIGINT SELECT @AmountInProductCart = Amount,@ProductId = ProductId FROM inserted SELECT @AmountInProduct = Amount FROM Product WHERE Id = @ProductId IF (@AmountInProduct > @AmountInProductCart) BEGIN UPDATE Product SET Amount = @AmountInProduct @AmountInProductCart WHERE Id = @ProductId PRINT('tr_06_ProductCart: Da update, giam Amount= ' +CAST(@AmountInProductCart AS nvarchar(10))+ ' Product xuong tao moi data ProductCart') END GO (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop 70 Test SELECT Id as ProductId,Name,Code,Amount,ParentId FROM Product WHERE Id =1195 INSERT INTO ProductCart (CartId,ProductId,Amount) VALUES (213,1195,100) DELETE FROM ProductCart UPDATE Product SET Amount = 1000 WHERE Id = 1195 3.4.7 Trigger ngăn chặn xóa bảng database Với tên tr_07_DontDropTable Sử dụng phạm vi bảng Database a Mơ tả: Khơng cho phép xóa table sở liệu ECA Database b Lệnh tạo kiểm tra: /*7.tr_07_DontDropTable*/ Create IF EXISTS (SELECT * FROM sys.triggers WHERE parent_class = AND name = 'tr_07_DontDropTable') DROP TRIGGER tr_07_DontDropTable ON DATABASE; GO CREATE TRIGGER tr_07_DontDropTable ON DATABASE FOR DROP_TABLE AS RAISERROR ('tr_07_DontDropTable:Ban khong the xoa table co so du lieu duoc.Muon xoa ban phai disable trigger tr_07_DontDropTable !',10, 1) ROLLBACK GO Test DROP TABLE TableForTest2 3.4.8 Ngăn chặn xóa trigger CSDL Với tên: tr_08_DontDropTrigger Sử dụng phạm vi bảng Database a Mô tả: Không cho phép xóa trigger CSDL ECA Database (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop 71 b Lệnh tạo kiểm tra: /*8.tr_08_DontDropTrigger*/ Create IF EXISTS (SELECT * FROM sys.triggers WHERE parent_class = AND name = 'tr_08_DontDropTrigger') DROP TRIGGER tr_08_DontDropTrigger ON DATABASE; GO CREATE TRIGGER tr_08_DontDropTrigger ON DATABASE FOR DROP_TRIGGER AS RAISERROR ('tr_08_DontDropTrigger:Ban khong the xoa Trigger co so du lieu duoc.Muon xoa ban phai disable trigger tr_08_DontDropTrigger !',10, 1) ROLLBACK GO Test DROP TRIGGER tr_07_DontDropTable ON DATABASE 3.4.9 Không cho phép tạo bảng CSDL Với tên bảng: tr_09_DontCreateTable Sử dụng phạm vi bảng Database a Mô tả: Không cho phép tạo table CSDL ECA DataBase b Lệnh tạo kiểm tra: /*09.tr_09_DontCreateTable*/ Create IF EXISTS (SELECT * FROM sys.triggers WHERE parent_class = AND name = 'tr_09_DontCreateTable') DROP TRIGGER tr_09_DontCreateTable ON DATABASE; GO CREATE TRIGGER tr_09_DontCreateTable ON DATABASE (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop 72 FOR CREATE_TABLE,ALTER_TABLE AS RAISERROR ('tr_09_DontCreateTable:Ban khong co quyen them table hoac sua chua table ! Muon tao moi table ban phai disable trigger tr_09_DontCreateTable !',16, 1) ROLLBACK GO Test CREATE TABLE TestCreateTable (OrderID int, CustID int) 3.4.10 Không cho phép tạo trigger CSDL Với tên bảng: tr_10_DontCreateTrigger Phạm vi sử dụng bảng Database a Mô tả: Không cho phép tạo trigger CSDL b Lệnh tạo kiểm tra: /*10.tr_10_DontCreateTrigger*/ Create IF EXISTS (SELECT * FROM sys.triggers WHERE parent_class = AND name = 'tr_10_DontCreateTrigger') DROP TRIGGER tr_10_DontCreateTrigger ON DATABASE; GO CREATE TRIGGER tr_10_DontCreateTrigger ON DATABASE FOR CREATE_TRIGGER AS RAISERROR ('tr_10_DontCreateTrigger:Ban khong the tao Trigger moi duoc nua Muon tao them trigger ban phai xoa trigger tr_10_DontCreateTrigger !',10, 1) ROLLBACK GO Test (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop 73 IF EXISTS (SELECT * FROM sys.triggers WHERE parent_class = AND name = 'triggerForTest') DROP TRIGGER triggerForTest ON DATABASE; GO CREATE TRIGGER triggerForTest ON Product AFTER INSERT AS PRINT('Tao moi triggerForTest') GO (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop 74 KẾT LUẬN Cơ sở liệu tảng việc lƣu trữ liệu, đƣợc thể chỗ liệu tồn thực cho ứng dụng Trong số lĩnh vực nhận đƣợc ý năm gần với nhìn làm bật hoạt động dễ dàng lập trình sở liệu, sở liệu tạm thời, sở liệu không gian, sở liệu đa phƣơng tiện (truyền thông), sở liệu suy diễn sở liệu tích cực Vì tính ứng dụng khai thác sở liệu vấn đề đƣợc quan tâm tính ứng dụng cao thực tế Trên sở luận văn nghiên cứu đƣa số vấn đề sau: Thứ nhất, trình đƣợc tổng quan sở liệu quan hệ, ràng buộc toàn vẹn sở liệu Thứ hai, luận văn tìm hiểu sở liệu tích cực quy tắc ECA sở liệu tích cực Thứ ba, sở tìm hiểu lý thuyết sở liệu tích cực, luận văn đƣa chƣơng trình thử nghiệm ứng dụng tốt việc mở rộng hệ thống sở liệu, làm dễ dàng cho ngƣời sử dụng khai thác sở liệu Với nội dung trình bày luận văn hy vọng đóng góp phần việc tìm hiểu xây dựng cài đặt quy tắc ECA SQL Tuy nhiên, giới hạn phạm vi nghiên cứu, luận văn tập trung tìm hiểu khái niệm thời gian khả có hạn chƣơng trình thử nghiệm cịn nhiều hạn chế luận văn khó tránh khỏi thiếu sót Rất mong ý kiến tham gia bổ sung thầy cô để luận văn đƣợc hoàn thiện (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop (LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop(LUAN.VAN.THAC.SI).Nghien.cuu xay.dung.co.so.du.lieu.tich.hop