好的,所以这就是“简而言之”我想要完成的事情......
我的应用程序的用户可以去创建一个新组。他们可以指定其他用户的标准,他们将允许/拒绝确定谁可以加入该组。
实施例: 年龄:12 - 16岁 身高:5 - 6英尺
存储规则的数据表如下: 允许或拒绝标记(Y / N) AgeStart:12 AgeEnd:16 高度启动:5 高度结束:6
然后,我们需要检查用户是否符合标准,以确定是否允许他们加入群组。
这有意义吗? 也可能有违反它的EXCEPTION规则...... 例如,第一个“允许:Y”可能是12到30岁,但第二个记录可能会被添加到25岁到28岁的Deny中,因此用户必须满足两个条件才能进入。
对此人有什么看法?
答案 0 :(得分:1)
非常感谢您的回复! 但是在我发现这篇文章的前一天晚上或前一天晚上: http://msdn.microsoft.com/en-us/library/aa964135%28SQL.90%29.aspx
这解决了我们的问题。 现在,在存储过程中的1个查询可以准确地告诉我们哪些项目符合条件。
-Josh
答案 1 :(得分:0)
是的,您可以使用任何类型的DSL将规则存储在数据库中,但SQL不是解释或执行规则的解决方案。
将规则字段提取到您的应用中并在那里解释它会容易得多。您可以访问功能丰富的解析器库来解释规则,以及编写OO代码以应用它的更简单方法。
由于您只需要在用户尝试加入组时运行规则,因此运行查询以获取规则定义不应该是一个很大的性能成本。与尝试在SQL中实现规则解析器和实施器相比,它确实要少得多 !
另一种思考方式是:数据库存储数据,而不是代码。您可以通过将规则的定义存储为数据库中的字符串来捏造它,但是让数据库将它们视为逐字字符串,而不是尝试将它们集成为RDBMS可以执行的代码。