Luận Văn: Công Cụ Hỗ Trợ Mô Hình Hóa Trigger Cơ Sở Dữ Liệu Bằng Event-B

Luận văn thạc sĩ: Nghiên cứu & xây dựng công cụ hỗ trợ mô hình hóa hệ thống triggers bằng Event B. Tìm hiểu sâu về Event B và ứng dụng thực tế.

Chuyên ngành

Công nghệ thông tin

Người đăng

Ẩn danh

Thể loại

Luận văn thạc sĩ

2013

61
1
0

Phí lưu trữ

30 Point

Mục lục chi tiết

MỞ ĐẦU

1. CHƢƠNG 1: TỔNG QUAN VỀ TRIGGER CƠ SỞ DỮ LIỆU

1.1. CÁC THÀNH PHẦN CỦA TRIGGER

1.1.1. Sự kiện hoặc câu lệnh trigger

1.1.2. Điều kiện trigger

1.1.3. Hành động trigger

1.2. PHÂN LOẠI TRIGGER

1.2.1. Phân biệt trigger cơ sở dữ liệu

1.2.2. Thay đổi trạng thái của trigger cơ sở dữ liệu

1.2.3. Hủy bỏ trigger cơ sở dữ liệu

1.3. KHÁC NHAU GIỮA CÁC RÀNG BUỘC VÀ TRIGGER

2. Chƣơng 2 : NGÔN NGỮ EVENT – B

2.1. NGÔN NGỮ EVENT – B

2.1.1. Máy và Ngữ cảnh

2.1.2. Cấu trúc của máy

2.1.3. Cấu trúc của Ngữ cảnh

2.2. Quá trình làm mịn

2.2.1. Tái sử dụng biến

2.2.2. Giới thiệu sự kiện mới

2.3. Phân rã và kết hợp

3. Chƣơng 3: MÔ HÌNH HÓA VÀ KIỂM CHỨNG HỆ THỐNG TRIGGER BẰNG EVENT – B

3.1. MÔ HÌNH HÓA HỆ THỐNG CƠ SỞ DỮ LIỆU

3.2. HÌNH THỨC HÓA TRIGGER

3.3. KIỂM CHỨNG THUỘC TÍNH HỆ THỐNG

3.3.1. Mô tả ví dụ

3.3.2. Mô hình hóa ví dụ

3.3.3. Kiểm tra thuộc tính

3.4. CÁC NGHIÊN CỨU LIÊN QUAN

4. Chƣơng 4: XÂY DỰNG CÔNG CỤ HỖ TRỢ MÔ HÌNH HÓA TRIGGER BẰNG EVENT – B

4.1. PHÂN TÍCH BÀI TOÁN

4.2. THIẾT KẾ HỆ THỐNG

4.3. ĐÁNH GIÁ MỘT SỐ KẾT QUẢ ĐẠT ĐƢỢC CỦA CHƢƠNG TRÌNH

Tài liệu tham khảo

Tóm tắt

I. Tổng Quan Về Trigger CSDL Event B Tại Sao Quan Trọng

Trong hệ thống cơ sở dữ liệu thương mại như Oracle, SyBase, trigger đóng vai trò quan trọng, hoạt động dựa trên cấu trúc Event - Condition - Action (ECA). Trigger được sử dụng rộng rãi để thực hiện các thao tác tự động và đảm bảo tính toàn vẹn dữ liệu. Chúng có thể là trigger DML (kích hoạt bởi DELETING, UPDATING, INSERTING) hoặc trigger hệ thống (tương tự thủ tục lưu trữ với mã PL/SQL). Mã PL/SQL có thể đọc được nhưng thiếu ngữ nghĩa hình thức, gây khó khăn trong việc kiểm chứng tính dừng hoặc xung đột với ràng buộc toàn vẹn. Vì vậy, mô hình hóa trigger bằng các phương pháp hình thức là cần thiết. Event-B, một phương pháp phát triển phần mềm hình thức, dựa trên lý thuyết tập hợp, phép thay thế tổng quát và logic bậc nhất, phù hợp cho hệ thống phân tán và phản hồi lớn. Phát triển phần mềm trong Event-B bắt đầu bằng mô tả yêu cầu hệ thống ở mức trừu tượng, sau đó làm mịn chúng qua các bước để đạt được sự mô tả chi tiết, có thể chuyển đổi sang mã nguồn. Các công cụ hỗ trợ đặc tả Event-B và chứng minh trong Rodin Platform làm cho quá trình xác minh mô hình hiệu quả hơn. Từ yêu cầu kiểm chứng các trigger và ưu điểm của Event-B, việc phát triển các công cụ phần mềm hỗ trợ quá trình mô hình hóa bằng Event-B có ý nghĩa thực tiễn quan trọng trong qui trình phát triển các ứng dụng cơ sở dữ liệu. Các công trình đã cố gắng giải quyết vấn đề này bằng cách áp dụng các giải thuật tìm kiếm tính dừng hoặc kiểm chứng mô hình [4], [5]. Tuy nhiên, hầu hết các kết quả đều tập trung vào tính chất dừng, trong khi một số ít giải quyết cả hai tính dừng và ràng buộc toàn vẹn của hệ thống cơ sở dữ liệu.

1.1. Cấu Trúc ECA Vai Trò Của Trigger Trong CSDL

Trigger cơ sở dữ liệu là một đoạn mã tự động kích hoạt khi xảy ra một sự kiện được định nghĩa trong cơ sở dữ liệu. Sự kiện có liên quan đến một thao tác dữ liệu cụ thể của cơ sở dữ liệu như chèn, xóa hoặc cập nhật một hàng của bảng. Trigger thường được sử dụng trong một số trường hợp: kiểm tra tiến trình, thực hiện tự động một hành động, thực hiện các luật nghiệp vụ phức tạp. Cấu trúc của trigger giống như cấu trúc của ECA, vì thế nó có mẫu sau: rule name:: Event(e) IF condition DO action. Điều đó có nghĩa là khi có sự kiện xảy ra và thỏa mãn điều kiện cho trước thì hệ thống cơ sở dữ liệu thực hiện hành động.

1.2. Ưu Điểm Của Event B Trong Mô Hình Hóa Trigger So Với SQL

Event-B là một phương pháp hình thức để mô hình hóa và phân tích ở mức hệ thống. Nó được sử dụng như là một ký hiệu và phương pháp phát triển hình thức của hệ thống rời rạc. Event-B được coi là sự kế thừa của ký hiệu phương pháp hình thức như là phương pháp B (được biết đến như là B cổ điển), Z và Action Systems, bởi vì nó đơn giản hóa ký hiệu máy B, dễ dàng để học và phù hợp hơn cho sự phát triển hệ thống phân tán phản ứng và song song. Điểm chủ chốt của Event-B là sử dụng lý thuyết về tập hợp như là các ký hiệu mô hình hóa, sử dụng cơ chế làm mịn để biểu diễn hệ thống ở các mức trừu tượng khác nhau và sử dụng các chứng minh toán học để kiểm chứng hệ thống.

1.3. Vấn Đề Cần Giải Quyết Kiểm Chứng Trigger Toàn Vẹn Dữ Liệu

Do đó mô hình hoá trigger bằng các phƣơng pháp hình thức là hết sức cần thiết. Một số công trình đã cố gắng giải quyết vấn đề này bằng cách áp dụng các giải thuật tìm kiếm tính dừng hoặc kiểm chứng mô hình [4], [5]. Tuy nhiên, hầu hết các kết quả đều tập trung vào tính chất dừng, trong khi một số ít giải quyết cả hai tính dừng và ràng buộc toàn vẹn của hệ thống cơ sở dữ liệu. Hơn nữa, các phƣơng pháp tiếp cận dƣờng nhƣ rất phức tạp mà chúng ta không thể áp dụng vào trong phát triển cơ sở dữ liệu.

II. Hướng Dẫn Mô Hình Hóa Trigger CSDL Bằng Event B Chi Tiết

Khi sử dụng Event-B để mô hình hóa trigger trong cơ sở dữ liệu, cần hiểu rõ về hai cấu trúc cơ bản: Máy (Machine)Ngữ cảnh (Context). Máy mô tả phần động của mô hình, bao gồm biến, bất biến, định lý và các sự kiện tương tác. Ngữ cảnh mô tả phần tĩnh, chứa tập hợp, hằng, tiên đề và định lý. Máy có thể được "làm mịn" bởi máy khác, và Ngữ cảnh có thể được "mở rộng" bởi ngữ cảnh khác. Một Máy có thể tham chiếu đến một hoặc nhiều Ngữ cảnh, bao gồm cả Ngữ cảnh mở rộng. Quá trình làm mịn là then chốt, giúp đưa các chi tiết và độ phức tạp vào mô hình theo từng bước. Bắt đầu với các sự kiện trừu tượng, rồi đặc tả trạng thái và hành vi của hệ thống ở mức trừu tượng cao hơn. Mỗi sự kiện e tác động lên biến trạng thái v, với điều kiện G(v) và hành động A(v). Khi trạng thái v thỏa mãn G(v), hành động A(v) sẽ được thực hiện. Sau khi mô hình hóa, cần kiểm chứng bằng bộ chứng minh để đảm bảo tính đúng đắn hoặc kiểm chứng các thuộc tính.

2.1. Cấu Trúc Cơ Bản Của Event B Máy Machine Ngữ Cảnh Context

Các mô hình Event-B được mô tả bởi hai cấu trúc cơ bản là Máy (Machine)Ngữ cảnh (Context ). Trong đó, Máy dùng để mô tả phần động của mô hình bao gồm biến, bất biến, định lý và các sự kiện tương tác với môi trường. Ngữ cảnh mô tả phần tĩnh của mô hình, chứa các tập hợp (set), hằng, tiên đề và định lý. MáyNgữ cảnh có mối quan hệ khác nhau: Máy có thể được “làm mịn” bởi máy khác và Ngữ cảnh được “mở rộng” bởi ngữ cảnh khác (không có chu trình nào được phép trong cả hai quan hệ này). Hơn nữa, một Máy có thể “tham chiếu” đến một hoặc nhiều Ngữ cảnh.

2.2. Quá Trình Làm Mịn Từ Trừu Tượng Đến Cụ Thể Trong Event B

Quá trình làm mịn là khái niệm trọng tâm trong Event-B. Quá trình làm mịn được sử dụng để đưa vào từng bước các chi tiết và độ phức tạp vào một mô hình. Nếu máy B làm mịn máy A, thì máy B chỉ được phép hành động tương ứng với hành động của máy A. Trong bối cảnh như vậy, ta gọi máy A là máy trừu tượng còn máy B là máy cụ thể. Máy cụ thể có tập biến của riêng nó. Bất biến của nó có thể tham chiếu đến các biến của máy trừu tượng và máy cụ thể.

2.3. Biểu Diễn Sự Kiện Trong Event B Điều Kiện Hành Động

Mô hình hệ thống với Event-B được bắt đầu từ các sự kiện trừu tượng quan sát được có thể xảy ra trong hệ thống, từ đó đặc tả các trạng thái và hành vi của hệ thống ở mức trừu tượng cao hơn. Một sự kiện e tác động lên (một danh sách) biến trạng thái v, với điều kiện G(v) và hành động A(v), sẽ được mô tả như sau : Vì thế¸ khi trạng thái v thỏa mãn điều kiện G(v) = true, hành động A(v) sẽ được thực hiện.3 biểu diễn cấu trúc tổng quát của một sự kiện. Mệnh đề status có thể là ordinary, convergent (sự kiện phải làm tăng giá trị các biến của nó ), anticipated (sự kiện không được làm tăng giá trị các biến của nó ).

III. Các Bước Kiểm Chứng Hệ Thống Trigger Đã Mô Hình Hóa Bằng Event B

Sau khi hệ thống trigger được mô hình hóa bằng Event-B, việc kiểm chứng là cần thiết. Có hai thuộc tính quan trọng cần kiểm tra: Tính dừng (tránh vòng lặp vô hạn do trigger kích hoạt lẫn nhau) và Điều kiện ràng buộc (đảm bảo các thuộc tính được mô hình hóa bởi các bất biến vẫn được duy trì). Tính dừng có thể được kiểm chứng bằng cách chứng minh thuộc tính deadlock của mô hình Event-B. Điều kiện ràng buộc có thể được chứng minh bằng cách sử dụng các luật PO bất biến. Các công cụ hỗ trợ trong Rodin Platform giúp tự động tạo và kiểm chứng các chứng minh này, làm cho quá trình kiểm chứng hiệu quả hơn. Điều này đặc biệt quan trọng đối với các nhà phát triển cơ sở dữ liệu để đảm bảo hệ thống trigger tránh được các vấn đề nghiêm trọng trong giai đoạn thiết kế.

3.1. Kiểm Tra Tính Dừng Termination Của Trigger Trong Event B

Tính dừng: khi một trigger có thể kích hoạt trigger khác thì nó sẽ dẫn đến vòng lặp vô hạn. Tính dừng của trigger có thể kiểm chứng thuộc tính deadlock của mô hình Event-B. Tình huống này xuất hiện khi một chuỗi các sự kiện, trạng thái của hệ thống bị thay đổi. Thuộc tính này đã được chứng minh bởi bộ chứng minh mà chỉ ra phép tuyển điều kiện của sự kiện luôn đúng dưới thuộc tính của hằng và bất biến. Luật không có deadkock được biểu diễn: (v) ├ G1(v) ∨ . ∨ Gn(v) Trong đó: V là các biến I(v) biểu diễn bất biến Gi(v) biểu diễn điều kiện sự kiện.

3.2. Đảm Bảo Điều Kiện Ràng Buộc Dữ Liệu Sau Khi Trigger Hoạt Động

Điều kiện ràng buộc: khi mà các thuộc tính đã được mô hình hóa bởi các bất biến Event-B như minh họa gần đúng ở phần 3.1 thì ta có thể chứng minh bằng cách sử dụng các luật PO bất biến. Bất biến được chứng minh là sai thông qua các sự kiện của mô hình hóa, do đó sự thi hành các trigger vi phạm các ràng buộc của hệ thống.

3.3. Sử Dụng Công Cụ Rodin Platform Để Tự Động Hóa Kiểm Chứng

Thời điểm hiện tại thì bộ chứng minh deadlock không sinh ra tự động bởi các công cụ Rodin. Tuy nhiên ta có thể tự sinh ra nó bởi định lý về điều kiện tuyển. Ƣu điểm của cách tiếp cận này là hệ thống cơ sở dữ liệu thực bao gồm các trigger và các ràng buộc đƣợc mô hình hóa dễ dàng bằng cụm từ diễn tả logic trong Event – B nhƣ INVARIANTS và EVENTS. Do đó, tính đúng đắn của hệ thống có thể đƣợc chứng minh bằng phƣơng pháp hình thức. Điều đó đặc biệt quan trọng cho các nhà phát triển cơ sở dữ liệu khi mà biết chắc chắn hệ thống trigger tránh đƣợc các vấn đề nghiêm trọng ở thời gian thiết kế.

IV. Ví Dụ Mô Hình Hóa Kiểm Chứng Trigger Bằng Event B Trong CSDL

Giả sử có hệ thống cơ sở dữ liệu gồm hai bảng: EMPLOYEES và BONUS. EMPLOYEES chứa thông tin nhân viên (E_id, level), còn BONUS chứa mức thưởng (E_id, amount). Ràng buộc là: mức thưởng >= 20 nếu level > 5. Trigger 1: Khi level cập nhật, nếu level chẵn, cập nhật amount + 10 cho nhân viên. Trigger 2: Nếu amount cập nhật, tăng level tương ứng. Sử dụng Event-B, hai bảng và trigger được mô hình hóa bằng các biến và bất biến. Các ràng buộc được biểu diễn bằng bất biến. Sau đó, kiểm chứng tính dừng và ràng buộc để đảm bảo hệ thống hoạt động đúng. Ví dụ này minh họa cách chuyển đổi các yếu tố của cơ sở dữ liệu sang Event-B và kiểm chứng các thuộc tính quan trọng.

4.1. Mô Tả Chi Tiết Hệ Thống CSDL Ví Dụ EMPLOYEES BONUS

Giả sử rằng ta có hệ thống cơ sở dữ liệu gồm hai bảng EMPLOYEES và BONUS có cấu trúc nhƣ trong bảng 3.4: Bảng EMPLOYEES và BONUS trong đó: E_id: là mã số của nhân viên; level: là bậc của nhân viên; amount: mức thƣởng của nhân viên.

4.2. Ánh Xạ Các Yếu Tố CSDL Sang Các Thành Phần Của Event B

Ta mô hình hóa hai bảng bao gồm các câu lệnh trigger bằng hai biến là empl và bonus. Biến empl_rec và bonus_rec biểu diễn hàng của riêng từng bảng Employees và Bonus. inv7 : bonus ∈ P((N1 × N1) × (N1 × N1)) inv11 : empl ∈ P((N1 × N1) × (N1 × N1)) inv16 : bonus_rec ∈ bonus inv17 : empl_rec ∈ empl inv5 : trigger_type ∈ P(TIME) ↔ P(COMMAND) inv20:active_field ∈ P(TABLE_NAMES)↔ P(FIELD_NAMES)

4.3. Kiểm Chứng Tính Dừng Và Ràng Buộc Của Mô Hình Event B

Để kiểm chứng tính dừng bằng công cụ của Rodin ta tạo ra mệnh đề bất biến mà là tuyển của điều kiện hai sự kiện. Sử dụng bộ PO của công cụ Rodin ta có thể chứng minh hệ thống có deadlock, tức là hệ thống kết thúc. Khi thuộc tính của hệ thống được mô hình hóa bởi bất biến inv21 thì nó có thể chứng minh bằng các luật bảo toàn bất biến. Bất biến được chứng minh là sai thông qua các sự kiện của mô hình hóa, do đó sự thi hành các trigger vi phạm các ràng buộc của hệ thống.

V. Xây Dựng Công Cụ Hỗ Trợ Mô Hình Hóa Trigger Bằng Event B Thực Tiễn

Dựa trên phương pháp mô hình hóa, một công cụ hỗ trợ tự động trích xuất trigger và chuyển sang mô hình Event-B đã được xây dựng. Công cụ này cho phép kết nối với hệ thống cơ sở dữ liệu, tạo ràng buộc nghiệp vụ và trigger, chuyển đổi trigger sang mô hình Event-B, và xuất ra file XML. Công cụ này giúp đơn giản hóa quá trình mô hình hóa và giảm thiểu sai sót. Mặc dù công cụ vẫn còn hạn chế trong việc chuyển đổi tự động toàn bộ nội dung của trigger và xuất file XML tương thích với Rodin Platform, nó là một bước tiến quan trọng trong việc ứng dụng Event-B vào phát triển cơ sở dữ liệu.

5.1. Chức Năng Chính Của Công Cụ Kết Nối Tạo Trigger Chuyển Đổi

Mục đích của chương trình là hỗ trợ chuyển đổi các triggers trong các hệ quản trị cơ sở dữ liệu sang mô hình Event-B. Do đó chương trình xây dựng phải thực hiện được các công việc sau: Cho phép người dùng kết nối với hệ thống cơ sở dữ liệu. Tạo các ràng buộc nghiệp vụ, xây dựng các trigger. Chuyển đổi các trigger sang mô hình Event-B. Xuất ra file XML và định dạng Rodin.

5.2. Kiến Trúc Hệ Thống Của Công Cụ Hỗ Trợ Mô Hình Hóa

Kiến trúc của chương trình như sau: Mô hình Event - B Input Database CÔNG CỤ Output system File XML và định dạng Rodin Hình 4.1: Kiến trúc của chương trình hỗ trợ mô hình hóa hệ thống trigger

5.3. Đánh Giá Ưu Nhược Điểm Của Công Cụ Đã Xây Dựng

Các kết quả đạt được: Chƣơng trình đã kết nối đƣợc với cơ sở dữ liệu để lấy đƣợc thông tin sử dụng cho mô hình hoá. Hỗ trợ xây dựng trigger trên giao diện. Phân tích và chuyển đổi tự động cơ sở dữ liệu vừa kết nối sang mô hình Event-B. Các phần đã chuyển đổi tự động: - Chuyển đổi các bảng, trƣờng sang tập hợp trong Event-B. - Điều kiện trigger đã đƣợc chuyển đổi sang guard của các events. - Một phần nội dung của trigger đƣợc chuyển đổi sang action của các events. Sau khi chuyển đổi tự động, chƣơng trình cho phép chỉnh sửa mô hình Event-B vừa thu đƣợc. Kết xuất mô hình ra file định dạng XML. Các vấn đề chưa giải quyết được: Chƣa chuyển đổi tự động toàn bộ nội dung của trigger sang Event- B ( vì chƣa phân tích đƣợc nội dung câu lệnh SQL, trong tƣơng lai sẽ có thể khắc phục bằng cách tích hợp các bộ phân tích SQL ( SQL parser)). Kết xuất định dạng XML nhƣng chƣa mở đƣợc trên công cụ Rodin.

VI. Kết Luận Hướng Phát Triển Cho Mô Hình Hóa Bằng Event B

Việc mô hình hóa trigger cơ sở dữ liệu bằng Event-B là một hướng đi đầy tiềm năng để đảm bảo tính chính xác và an toàn của các ứng dụng cơ sở dữ liệu. Mặc dù còn nhiều thách thức, sự phát triển của các công cụ hỗ trợ và nghiên cứu sâu hơn về các kỹ thuật mô hình hóa sẽ giúp ứng dụng Event-B trở nên phổ biến hơn trong lĩnh vực phát triển cơ sở dữ liệu. Trong tương lai, việc tích hợp các bộ phân tích SQL và cải thiện khả năng tương thích với Rodin Platform sẽ là những bước tiến quan trọng.

6.1. Tóm Tắt Lợi Ích Của Mô Hình Hóa Trigger Bằng Event B

Mặc dù còn nhiều thách thức, sự phát triển của các công cụ hỗ trợ và nghiên cứu sâu hơn về các kỹ thuật mô hình hóa sẽ giúp ứng dụng Event-B trở nên phổ biến hơn trong lĩnh vực phát triển cơ sở dữ liệu.

6.2. Hướng Nghiên Cứu Phát Triển Trong Tương Lai Cho Lĩnh Vực Này

Trong tương lai, việc tích hợp các bộ phân tích SQL và cải thiện khả năng tương thích với Rodin Platform sẽ là những bước tiến quan trọng.

24/09/2025

Trích đoạn nội dung tài liệu

MỞ ĐẦU Triggers là các luật hoạt động trong hệ thống cơ sở dữ liệu thƣơng mại nhƣ Orcacle, SyBase,…đƣợc hình thành trong cấu trúc Event - Condition - Action (ECA). Triggers đƣợc sử dụng thƣờng xuyên và rộng rãi trong hệ thống cơ sở dữ liệu của nhiều ứng dụng để thực hiện các thao tác tự động và đảm bảo tính ràng buộc toàn vẹn. Trong một số cơ sở dữ liệu thƣơng mại, triggers có hai loại: triggers DML và triggers hệ thống. Triggers DML đƣợc kích hoạt khi các sự kiện DELETING, UPDATING, INSERTING xuất hiện, còn triggers hệ thống giống nhƣ thủ tục lƣu trữ có chứa các đoạn mã PL/SQL.

Các đoạn mã này con ngƣời có thể đọc đƣợc và không có ngữ nghĩa hình thức. Vì vậy, chúng ta chỉ có thể kiểm chứng nếu trigger kết thúc hoặc xung đột với tính ràng buộc toàn vẹn sau khi thi hành nó hoặc kiểm tra từng bƣớc một. Do đó mô hình hoá triggers bằng các phƣơng pháp hình thức là hết sức cần thiết. Một số công trình đã cố gắng giải quyết vấn đề này bằng cách áp dụng các giải thuật tìm kiếm tính dừng hoặc kiểm chứng mô hình [4], [5].

Tuy nhiên, hầu hết các kết quả đều tập trung vào tính chất dừng, trong khi một số ít giải quyết cả hai tính dừng và ràng buộc toàn vẹn của hệ thống cơ sở dữ liệu. Hơn nữa, các phƣơng pháp tiếp cận dƣờng nhƣ rất phức tạp mà chúng ta không thể áp dụng vào trong phát triển cơ sở dữ liệu. Phƣơng pháp B [6] là phƣơng pháp phát triển phần mềm hình thức, ban đầu đƣợc J. Ký hiệu của phƣơng pháp B dựa trên lý thuyết tập hợp, phép thay thế tổng quát và logic bậc nhất.

Event – B [7] đƣợc kế thừa từ phƣơng pháp B, phù hợp hơn cho phát triển hệ thống phân tán và phản hồi lớn. Phát triển phần mềm trong Event – B bắt đầu bằng mô tả các yêu cầu của hệ thống ở mức trừu tƣợng và sau đó làm mịn chúng qua các bƣớc để đạt đƣợc sự mô tả hệ thống chi tiết của hệ thống để có thể chuyển đổi sang mã nguồn. Tính nhất quán của mỗi mô hình và mối quan hệ giữa mô hình trừu tƣợng và mô hình làm mịn thu đƣợc bằng chứng minh hình thức. Các công cụ hỗ trợ đƣợc cung cấp cho đặc tả Event – B và chứng minh trong nền tảng Rodin.

Từ yêu cầu kiểm chứng các triggers và ƣu điểm của Event-B, việc phát triển các công cụ phần mềm hỗ trợ quá trình mô hình hoá bằng Event-B có ý nghĩa thực tiễn quan trọng trong qui trình phát triển các ứng dụng cơ sở dữ liệu. Học viên: Nông Thị Oanh - K18HTTT TIEU LUAN MOI download : skknchat@gmail.com -7- Trên cơ sở những phân tích trên, đƣợc sự định hƣớng và chỉ bảo của PGS.TS Trƣơng Ninh Thuận, tôi đã lựa chọn đề tài: “Nghiên cứu và xây dựng công cụ hỗ trợ mô hình hóa hệ thống triggers bằng Event-B” làm luận văn tốt nghiệp của mình. Trong luận văn này, chúng tôi dựa vào một cách tiếp cận hình thức hóa hệ thống trigger cơ sở dữ liệu bằng phƣơng pháp chứng minh Event – B [5]. Ý tƣởng tiếp cận này đƣợc xuất phát từ sự tƣơng quan giữa cấu trúc của sự kiện Event – B và ECA.

Đầu tiên, chúng tôi chuyển đổi hệ thống cơ sở dữ liệu sang mô hình Event – B. Bƣớc tiếp theo chúng tôi đƣa mô hình tiếp cận thực tế bằng cách sử dụng nền tảng Rodin để kiểm chứng thuộc tính là tính dừng và các ràng buộc khác dựa trên công cụ chứng minh tự động. Ƣu điểm của cách tiếp cận này là hệ thống cơ sở dữ liệu thực bao gồm các trigger và các ràng buộc đƣợc mô hình hóa dễ dàng bằng cụm từ diễn tả logic trong Event – B nhƣ INVARIANTS và EVENTS. Do đó, tính đúng đắn của hệ thống có thể đƣợc chứng minh bằng phƣơng pháp hình thức.

Điều đó đặc biệt quan trọng cho các nhà phát triển cơ sở dữ liệu khi mà biết chắc chắn hệ thống trigger tránh đƣợc các vấn đề nghiêm trọng ở thời gian thiết kế. Hơn nữa, cách tiếp cận gần với thực tế mà chúng tôi có thể triển khai một công cụ theo ý tƣởng chính để chuyển đổi mô hình cơ sở dữ liệu từ Event – B sang nền tảng Rodin tự động (hoặc tự động một phần). Luận văn gồm một số nội dung chính nhƣ sau: Chƣơng 1: Tổng quan về Trigger trong cơ sở dữ liệu - nội dung đƣợc trình bày trong chƣơng bao gồm: khái niệm, cách tạo trigger, các thành phần của trigger, phân loại trigger. Chƣơng 2: Ngôn ngữ Event-B - trình bày về cấu trúc của mô hình Event- B gồm Máy, Ngữ cảnh, sự kiện của Event-B.

Chƣơng 3: Mô hình hóa và kiểm chứng hệ thống trigger bằng Event-B – trình bày về các định nghĩa đƣợc ánh xạ sang các khái niệm của Event-B, các luật chuyển đổi giữa hệ thống trigger sang mô hình Event-B; đƣa ra cách tiếp cận chi tiết, mô hình hóa hệ thống trigger cụ thể trong ví dụ 3.4 và giới thiệu những thông tin và các nghiên cứu liên quan đến công việc cho đến nay. Chƣơng 4: Xây dựng công cụ hỗ trợ mô hình hóa hệ thống trigger bằng Event-B – trình bày về chức năng, giao diện và hƣớng dẫn sử dụng chƣơng trình. Học viên: Nông Thị Oanh - K18HTTT TIEU LUAN MOI download : skknchat@gmail.com -8- CHƢƠNG 1: TỔNG QUAN VỀ TRIGGER TRONG CƠ SỞ DỮ LIỆU 1. Khái niệm Trigger cơ sở dữ liệu là một đoạn mã tự động kích hoạt khi xảy ra một sự kiện đƣợc định nghĩa trong cơ sở dữ liệu.

Sự kiện có liên quan đến một thao tác dữ liệu cụ thể của cơ sở dữ liệu nhƣ chèn, xóa hoặc cập nhật một hàng của bảng. Trigger thƣờng đƣợc sử dụng trong một số trƣờng hợp: kiểm tra tiến trình, thực hiện tự động một hành động, thực hiện các luật nghiệp vụ phức tạp. Cấu trúc của trigger giống nhƣ cấu trúc của ECA, vì thế nó có mẫu sau: rule name:: Event(e) IF condition DO action. Điều đó có nghĩa là khi có sự kiện xảy ra và thỏa mãn điều kiện cho trƣớc thì hệ thống cơ sở dữ liệu thực hiện hành động.

Ngƣời sử dụng hệ thống cơ sở dữ liệu quan hệ nhƣ Oracle, MySQL, SyBase quen với triggers biểu diễn dƣới dạng SQL:1999 (dạng chuẩn trƣớc là SQL-3). Trigger cơ sở dữ liệu đƣợc phân thành hai loại chính: trigger DML và trigger DDL. Trigger DML đƣợc thi hành khi dữ liệu đƣợc thao tác, còn trigger DDL đƣợc kích hoạt trong sự kiện DDL nhƣ tạo bảng hoặc các sự kiện nhƣ đăng nhập, xác nhận, hủy… Một trigger thƣờng đƣợc tạo trên một bảng nào đó nhƣng nó cũng có thể truy cập vào dữ liệu của bảng khác. Triggers đƣợc sử dụng thƣờng xuyên và rộng rãi trong hệ thống cơ sở dữ liệu của nhiều ứng dụng để thực hiện các thao tác tự động và đảm bảo tính ràng buộc toàn vẹn.

Trigger đƣợc lƣu trữ trong cơ sở dữ liệu gồm các khối câu lệnh SQL và PL hoặc câu lệnh Java để chạy và có thể gọi thủ tục lƣu trữ. Tuy nhiên, thủ tục và trigger có cách gọi khác nhau. Trong khi thủ tục đƣợc thi hành trực tiếp bởi ngƣời dùng, ứng dụng thì một hay nhiều trigger đƣợc kích hoạt ngầm bởi Oracle khi có câu lệnh trigger INSERT, DELETE hoặc UPDATE đƣợc thực hiện mà không gây ra vấn đề cho ngƣời dùng đang kết nối hoặc ứng dụng đang chạy.1 minh họa một ứng dụng cơ sở dữ liệu với một số câu lệnh SQL kích hoạt các trigger lƣu trữ trong cơ sở dữ liệu [8]. Học viên: Nông Thị Oanh - K18HTTT TIEU LUAN MOI download : skknchat@gmail.com -9- Database Applications Table t Update Trigger UPDATE t SET…; BEGIN ….

Insert Trigger INSERT INTO t…; BEGIN …. DELETE FROM t…; Delete Trigger BEGIN ….1: Ứng dụng cơ sở dữ liệu có sử dụng các trigger. Các sự kiện kích hoạt trigger bao gồm:  Các câu lệnh DML thay đổi dữ liệu trong bảng (insert, delete hoặc update)  Các câu lệnh DDL.  Các sự kiện hệ thống nhƣ bắt đầu, kết thúc hoặc thông báo lỗi.

 Các sự kiện ngƣời dùng nhƣ logon, logoff 1. Tạo trigger Ta có thể tạo trigger thông qua lệnh script.  Cú pháp lệnh tạo trigger mức câu lệnh: CREATE [OR REPLACE] TRIGGER trigger_name timing event1 [OR event2 OR event3] ON table_name BEGIN PL/SQL Block; END;  Cú pháp lệnh tạo trigger mức dòng dữ liệu: Học viên: Nông Thị Oanh - K18HTTT TIEU LUAN MOI download : skknchat@gmail.com -10- CREATE [OR REPLACE] TRIGGER trigger_name timing event1 [OR event2 OR event3] ON table_name [REFERENCING OLD AS old | NEW AS new] FOR EACH ROW [WHEN condition] BEGIN PL/SQL Block; END; Với: Trigger_name Tên trigger timing Thời gian kích hoạt trigger event Loại câu lệnh kích hoạt trigger Tên biến thay thế cho giá trị trước và sau referencing thay đổi của dòng dữ liệu đang xử lý Trigger thuộc loại tác động trên dòng dữ FOR EACH ROW liệu Chỉ ra một số điều kiện ràng buộc thực hiện WHEN trigger Table_name Tên bảng dữ liệu có gắn trigger trên đó PL/SQL Block Nội dung khối lệnh SQL và PL/SQL trong trigger Ví dụ: CREATE OR REPLACE TRIGER secure_emp BEFORE INSERT ON emp BEGIN IF TO_CHAR(sysdate,‟DY‟) IN („SAT‟,‟SUN‟) OR TO_CHAR(sysdate,‟HH24‟) NOT BETWEEN „08‟ AND ‟18‟ THEN RAISE_APPLICATION_ERROR (-20500, ‟Thời gian làm việc không phù hợp‟); END IF; END; CREATE OR REPLACE TRIGER audit_emp_values AFTER DELETE OR INSERT OR DELETE ON emp FOR EACH ROW BEGIN Học viên: Nông Thị Oanh - K18HTTT TIEU LUAN MOI download : skknchat@gmail.com -11- INSERT INTO audit_emp_values (user_name, timestamp, id, old_last_name, new_last_name, old_title, new_tile, old_salary, new_salary) VALUES (USER, SYSDATE, :old. Các thành phần của trigger Một trigger có ba thành phần chính:  Sự kiện hoặc câu lệnh trigger  Điều kiện trigger  Hành động trigger [8] Hành động AFTER UPDATE OF past_on_hand ON inventory Câu lệnh trigger trigger WHEN (new.

past_on_hand<new.record_point) Điều kiện trigger FOR EACH NOW DECLARE /*a dumy variable for counting*/ NUMBER X; BEGIN SELECT COUNT(*) INTO X /*query to find out if part has already been*/ FROM pending_orders /*reodered-if yes,x=1, if no, x-0*/ WHERE past_no=:new,part_no; IF x=0 THEN /*past has not been reodered yet, so reorder*/ INSERT INTO pending_orders VALUE (new1past_no, new,reorder_quantity, sysdate) END IF /*past has already been reodered*/ END.2: Các thành phần của trigger 1. Sự kiện hoặc câu lệnh trigger Sự kiện hoặc câu lệnh trigger là câu lệnh SQL, sự kiện cơ sở dữ liệu hoặc sự kiện ngƣời dùng kích hoạt trigger. Sự kiện trigger có thể là câu lệnh insert, Học viên: Nông Thị Oanh - K18HTTT TIEU LUAN MOI download : skknchat@gmail.com -12- delete hoặc update trong bảng. Một sự kiện trigger có thể có một hoặc nhiều sự kiện sau:  Câu lệnh insert, delete hoặc update trên một bảng cụ thể (trong một số trƣờng hợp là view)  Câu lệnh create, alter hoặc drop trên đối tƣợng lƣợc đồ bất kì.

 Một thông báo lỗi cụ thể hoặc một thông báo lỗi bất kì.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ