将用户定义的逻辑存储在数据库中

时间:2015-11-18 08:47:08

标签: database

< p>我正在设计一个数据库来存储有关本质上是动态的事件的信息。我的意思是,每种类型的事件都会附加一些变量,这些变量会根据用户定义的某些规则在每次出现时发生变化。 < / p为H. < p>假设我们的事件类型A包含变量X和Y.在此事件类型中,用户可以定义一些规则来确定每次事件发生时X和Y的值。< / p> < p>用户可能定义的一组规则的示例:< / p> < UL> < li>首次出现时,X = 0; Y = 0;< / li> < li>每次出现时,X = X + 1;< / li> < li>每次出现时,如果X == 100则{X = 0; Y = Y + 1}< / li> < / UL> < p>通过定义这些规则,X和Y的值会在所有事件发生时动态变化,如下所示:< / p> < UL> < li>第一次出现:X = 1,Y = 0< / li> < li>第二次出现:X = 2,Y = 0< / li> <李> ...< /锂> < li>第100次出现:X = 0,Y = 1< / li> < / UL> < p>现在,我不确定如何将“用户定义的规则”存储在数据库中,然后在我的代码中查询它们。谁能指出我正确的方向?这是一个开始:< / p> <预><代码>活动 ID; 名称; 描述; 事件类型; EVENT_TYPE_A_OCCURRENCES ID; 事项标识; X; Ÿ; EVENT_RULES ID; 事项标识; 频率; //此规则适用的频率 at_occurrence; //在特定事件中应用此规则 条件; //存储条件的代码 报表; //存储语句的代码 < /代码>< /预> < p>我不是专家,请帮我解决这个问题。谢谢。< / p>

1 个答案:

答案 0 :(得分:0)

假设存储在表中的以下用户定义规则:

def listToString(list):
    length = len(list)
    if length == 0 :
        return ""
    elif length == 1 :
        return "{}".format(list[0])
    else:
        strings = ["{}".format(x) for x in list[:-1]]
        return "{} and {}".format(", ".join(strings), list[-1])

让我们说在事件X = 10之前,Y = 12。 事件= A,ocuuurance = 1,keep-old-x = T,keep-old-y = F,x-frequency = 1,y-frequency = 100

-----------------------------------------------------------------
|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 = 11,Y = 100

您可能需要再添加两列来更改特定值的X变量值;为:

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

我希望这会有所帮助。