2015-11-18 71 views
0

我正在設計一個數據庫來存儲有關動態事件的信息。我的意思是,每種類型的事件都會附加一些變量,並根據用戶定義的一些規則在每次事件中進行更改。假設我們有事件類型A,其中包含變量X和Y.在此事件類型中,用戶可以定義一些規則,以確定每次事件發生時X和Y的值。將用戶定義的邏輯存儲在數據庫中

用戶可以定義一組規則的一個示例:

  • 在第一次出現,X = 0; Y = 0;
  • 在每次出現時,X = X + 1;
  • 在每次出現時,如果X == 100,則{X = 0; Y = Y + 1}

通過定義這些規則,X的值和Y上的事件的所有事件動態地改變如下:

  • 第一發生:X = 1,Y = 0
  • 第二發生:X = 2,Y = 0
  • ...
  • 第百發生:X = 0,Y = 1

現在,我不知道如何將「用戶定義的規則」存儲在數據庫中,然後在我的代碼中查詢它們。任何人都可以將我指向正確的方向嗎?這裏有一個開始:

EVENTS 
id; 
name; 
description; 
event_type; 

EVENT_TYPE_A_OCCURRENCES 
id; 
event_id; 
X; 
Y; 

EVENT_RULES 
id; 
event_id; 
frequency; // the frequency in which this rule applies 
at_occurrence; // apply this rule at a specific occurrence 
condition; // stores the code for the condition 
statements; // stores the code for the statements 

我不是專家,請幫我解決這個問題。謝謝。

回答

0

假設下面的存儲在表用戶定義的規則:

----------------------------------------------------------------- 
|eventid|occurance|keep-old-x|keep-old-y|x-frequency|y-frequency| 
----------------------------------------------------------------- 
| A  | 1  | T  | F  | 1   | 100  | 
----------------------------------------------------------------- 
| B  | 2  | F  | T  | -2  | 0   | 
----------------------------------------------------------------- 
| C  | 5  | T  | T  | 100  | -3  | 
----------------------------------------------------------------- 

允許事件X = 10,Y = 12。 事件之前說= A,ocuuurance = 1,保持老-X = T,保持-old-Y = F,X-頻率= 1,Y - 頻率= 100

if keep-old-x is T then 
     X = X + x-frequency 
else 
     X = x-frequency 
endif 

if keep-old-y is T then 
     Y = Y + y-frequency 
else 
     Y = y-frequency 
endif 

現在,X = 11,Y = 100

您可能需要添加兩個更多的列改變的值特定值的X變量;作爲:

-------------------------- 
|if-x-value| x-new-value | 
-------------------------- 
| 100  | 0   | 
-------------------------- 
| 125  | 5   | 
-------------------------- 
| 150  | 10   | 
-------------------------- 

我希望這可以幫助。

相關問題