用户需要创建适用于其他用户访问该组的动态规则

时间:2009-11-13 02:20:31

标签: tsql database-design dynamic-data business-logic rule-engine

好的,所以这就是“简而言之”我想要完成的事情......

我的应用程序的用户可以去创建一个新组。他们可以指定其他用户的标准,他们将允许/拒绝确定谁可以加入该组。

实施例: 年龄:12 - 16岁 身高:5 - 6英尺

存储规则的数据表如下: 允许或拒绝标记(Y / N) AgeStart:12 AgeEnd:16 高度启动:5 高度结束:6

然后,我们需要检查用户是否符合标准,以确定是否允许他们加入群组。

这有意义吗? 也可能有违反它的EXCEPTION规则...... 例如,第一个“允许:Y”可能是12到30岁,但第二个记录可能会被添加到25岁到28岁的Deny中,因此用户必须满足两个条件才能进入。

对此人有什么看法?

2 个答案:

答案 0 :(得分:1)

非常感谢您的回复! 但是在我发现这篇文章的前一天晚上或前一天晚上: http://msdn.microsoft.com/en-us/library/aa964135%28SQL.90%29.aspx

这解决了我们的问题。 现在,在存储过程中的1个查询可以准确地告诉我们哪些项目符合条件。

-Josh

答案 1 :(得分:0)

是的,您可以使用任何类型的DSL将规则存储在数据库中,但SQL不是解释或执行规则的解决方案。

将规则字段提取到您的应用中并在那里解释它会容易得多。您可以访问功能丰富的解析器库来解释规则,以及编写OO代码以应用它的更简单方法。

由于您只需要在用户尝试加入组时运行规则,因此运行查询以获取规则定义不应该是一个很大的性能成本。与尝试在SQL中实现规则解析器和实施器相比,它确实要少得多

另一种思考方式是:数据库存储数据,而不是代码。您可以通过将规则的定义存储为数据库中的字符串来捏造它,但是让数据库将它们视为逐字字符串,而不是尝试将它们集成为RDBMS可以执行的代码。