保留用户生成函数的最佳架构?

时间:2009-02-13 00:40:41

标签: c# sql database-design schema

我的项目要求用户创建一些基本的数学函数,我需要将它们存储在ms sql数据库中,以便在我的业务逻辑中使用数据集。

这些功能类似于:     当(value1在20和40之间)然后value2 =值2 * 37.8

存储此类内容的最佳架构是什么?

将持久化函数转换回来的最有效方法是什么,以便将其应用于数据集?

我正在使用c#和ms sql 2008

3 个答案:

答案 0 :(得分:1)

这是一个艰难的。基本上你想创建一个解析器。

我相信你需要有两个表:第一个表有一个functionID,orderID,operatorID

第二个表在operatorID和操作数之间有1到多个关系。

FunctionID将是该函数的唯一标识符。 orderID将确定我们需要解析相同functionID的各个行的顺序。操作数将是需要与运算符一起使用的实际变量。

例如:

Table 1 

FuncID         OrderID         OperatorID
1              1               1 (for *)
1              2               2 (for +)

Table 2

OperatorID       Operands
1                a
1                b
2                c

解析后,这将变为f(x)= a * b + c

这是一个非常基本的想法。有很多陷阱。希望有所帮助。

答案 1 :(得分:0)

将它们存储为用户定义的函数

关于他们的好文章here

答案 2 :(得分:0)

如果有反射,请阅读Emit上的一堆帮助和各种形式的Load,看看你是否可以解析用户的功能并以可以存储在数据库中的形式生成.Net可执行文件。

但要注意安全和注射。

对不起,除了指出一个可能有用的方向之外,没有任何其他帮助了。