Phần trƣớc đã cho tổng quan về các khái niệm chính để chỉ ra các quy tắc tích cực. Trong phần này đƣa các vấn đề bổ sung liên quan đến việc thiết kế và cài đặt các quy tắc nhƣ thế nào. Vấn đề thứ nhất liên quan đến việc kích hoạt, thôi kích hoạt và nhóm các quy tắc. Thêm vào việc tạo ra các quy tắc, một hệ thống cơ sở dữ liệu tích cực phải cho phép những ngƣời sử dụng kích hoạt, thôi kích hoạt và bỏ các quy tắc bằng cách tham chiếu đến các tên quy tắc của chúng. Một quy tắc thôi kích hoạt sẽ không bị kích hoạt bởi sự kiện kích hoạt. Tính chất này cho phép các ngƣời sử dụng lựa chọn các quy tắc thôi kích hoạt đối với một chu kỳ thời gian nào đó khi chúng là không cần thiết. Các lệnh kích hoạt sẽ làm cho các quy tắc tích cực trở lại. Lệnh drop loại bỏ các luật ra khỏi hệ thống. Một tùy chọn khác là nhóm các quy tắc vào một cái gọi là thiết lập quy tắc, nhƣ vậy toàn bộ tập hợp các quy tắc có thể đƣợc kích hoạt, ngừng kích hoạt hoặc loại bỏ. Việc có một lệnh có thể kích hoạt một quy tắc hoặc một tập quy tắc thông qua một lệnh PROCESS RULES do ngƣời sử dụng đƣa ra cũng là một điều có lợi.
Vấn đề thứ hai liên quan đến liệu hành động đƣợc kích hoạt có thể đƣợc thực hiện trƣớc, sau, hoặc đồng thời với sự kiện kích hoạt đƣợc hay không. Vấn đề liên quan là liệu hành động đƣợc kích hoạt có thể đƣợc xem nhƣ một giao tác tách rời hay không hay nó phải là một phần của cung giao tác kích hoạt quy tắc. Trƣớc tiên chúng ta phải cố gắng phân loại các tùy chọn khác nhau.
Điều quan trọng là không phải tất cả các tùy chọn có thể sẵn sang sử dụng đối với một hệ cơ sở dữ liệu tích cực. Thật vậy, hầu hết các hệ thống thƣơng mại đƣợc giới hạn đến một hoặc hai tùy chọn.
Giả thiết rằng sự kiện kích hoạt xảy ra nhƣ là một phần của việc thực hiện giao tác. Trƣớc hết chúng ta xét các tùy chọn khác nhau với việc sự kiện kích hoạt liên kết với việc tính giá trị của các điều kiện của quy tắc nhƣ thế nào. Việc tính giá trị của các điều kiện của quy tắc cũng đƣợc xem nhƣ xem xét quy tắc bởi vì hành động chỉ đƣợc thực hiện sau sự xem xét lại điều kiện tính giá trị đến true hoặc fasle. Có ba khả năng chính đối với sự xem xét quy tắc:
[1]. Sự xem xét tức khắc (immediate consideration): Điều kiện đƣợc tính giá trị nhƣ là một phần của cùng giao tác nhƣ là sự kiện kích hoạt và đƣợc tính toán ngay tức khắc. Trƣờng hợp này có thể đƣợc phân loại thành ba tùy chọn:
- Tính giá trị điều kiện trƣớc khi thực hiện sự kiện kích hoạt - Tính giá trị điều kiện sau khi thực hiện sự kiện kích hoạt - Tính giá trị điều kiện thay vì thực hiện sự kiện kích hoạt
[2]. Sự xem xét chậm: Điều kiện đƣợc tính giá trị ở cuối giao tác chứa sự kiện kích hoạt. Trong trƣờng hợp này có thể có nhiều quy tắc đƣợc kích hoạt chờ để có các điều kiện của chúng đƣợc tính.
[3]. Sự xem xét riêng rẽ: Điều kiện đƣợc tính giá trị nhƣ là một giao tác riêng rẽ, tách rời khỏi giao tác kích hoạt.
Tập hợp các tùy chọn tiếp theo liên quan đến mối quan hệ giữa việc tính giá trị điều kiện của quy tắc và việc thực hiện hành động của quy tắc. Ở đây, một lần nữa có ba tùy chọn có thể có: thực hiện tức khắc, thực hiện chậm và thực hiện tách rời. Tuy nhiên, hầu hết các hệ thống tích cực sử dụng tùy chọn thứ nhất. Nghĩa là, khi điều kiện đƣợc tính giá trị, nếu nó trả lại giá trị true, hành động đƣợc thực hiện ngay tức khắc.
Một vấn đề khác liên quan đến các quy tắc của cơ sở dữ liệu tích cực là sự phân biệt các quy tắc mức dòng (row-level rule) và các quy tắc mức lệnh (statement-level rule). Bởi vì các lệnh cập nhật của SQL (đƣợc xem nhƣ các sự kiện kích hoạt) có thể chỉ ra một tập hợp các bộ, ta phải phân biệt giữa liệu quy tắc có thể xem xét một lần đối với toàn bộ lệnh hay không hay liệu nó có thể đƣợc xem xét một cách tách biệt đối với từng hàng bị ảnh hƣởng bởi lệnh. Hệ
thống Oracle cho phép ngƣời sử dụng chọn một trong hai tùy chọn trên sử dụng với từng quy tắc.
Một trong các khó khăn có thể hạn chế việc sử dụng rộng rãi các quy tắc tích cực, mặc dù khả năng của chúng lầm đơn giản việc phát triển cơ sở dữ liệu và phần mềm, là ở chỗ không có các kỹ thuật dễ sử dụng để thiết kế, viết và kiểm tra các quy tắc. Ví dụ, rất khó khăn để kiểm tra rằng một tập hợp các quy tắc là tƣơng thích, nghĩa là hai hoặc nhiều quy tắc trong tập hợp không mâu thuẫn với nhau. Cũng rất khó khăn để đảm bảo sự kết thúc của một tập hợp các quy tắc dƣới mọi hoàn cảnh. Để minh họa ngắn gọn vấn đề kết thúc, hãy xem xét các quy tắc dƣới đây:
R1: CREATE TRIGGER T1 AFTER INSERT ON TABLE1 FOR EACH ROW
UPDATE TABLE 2
SET ATTRIBUTE 1 = ……..; R2: CREATE TRIGGER T2
AFTER UPDATE OF ATTRIBUTE1 ON TABLE 2 FOR EACH ROW
INSERT INTO TABLE 1 VALUE (….);
Ở đây quy tắc R1 đƣợc kích hoạt bởi một sự kiện INSERT trên bảng 1 và hành động của nó gồm một sự kiện UPDATE trên thuộc tính 1 của bảng 2. Tuy nhiên, sự kiện kích hoạt của quy tắc R2 là một sự kiện UPDATE trên thuộc tính 1 của bảng 2 và hành động của nó bao gồm một sự kiện INSERT trên bảng 1. Dễ dàng nhìn thấy trong ví dụ này hai quy tắc có thể kích hoạt lẫn nhau không ngừng, dẫn đến sự không kết thúc. Vì vậy, nếu hàng chục quy tắc đƣợc viết thì sẽ rất khó khăn để xác định sự kết thúc có đƣợc đảm bảo hay không.
Nếu các quy tắc tích cực đạt đến khả năng của nó thì cần phải phát triển các phƣơng tiện để thiết kế, sửa lỗi và hƣớng dẫn các quy tắc tích cực nhằm giúp các ngƣời sử dụng trong việc thiết kế và sửa lỗi các quy tắc đó.