好的,这就是我想要完成的事情……
我的应用程序的用户可以去创建一个新的组。他们可以指定关于其他用户的标准,他们将允许/拒绝这些标准来确定允许谁加入该组。
示例:年龄: 12 - 16岁身高:5-6英尺
存储规则的数据表如下:允许或拒绝标志(Y/N) AgeStart: 12 AgeEnd: 16 HeightStart: 5 HeightEnd: 6
然后,我们需要检查用户是否满足条件,以确定是否允许他们加入该组。
这有意义吗?也可能有与之相反的例外规则……例如,第一个"Allow: Y“可能是12岁到30岁,但可能会添加第二个记录来拒绝25岁到28岁,因此用户必须满足两个条件才能输入。
有没有人愿意接受这个?
发布于 2009-11-13 11:20:20
是的,您可以使用对您有意义的任何类型的DSL将规则存储在数据库中,但SQL不是用于解释或执行规则的解决方案。
将规则字段提取到您的应用程序中并在那里解释它会容易得多。您将可以访问功能丰富的解析器库来解释规则,并可以更轻松地编写OO代码来应用它。
由于您只需要在用户尝试加入组时运行规则,因此运行查询来获取规则定义应该不会带来很大的性能成本。这肯定比尝试用SQL实现规则解析器和执行器的成本要低得多!
另一种思考方式是:数据库存储数据,而不是代码。您可以通过将规则的定义作为字符串存储在数据库中来伪造这些规则,但是让数据库将这些规则作为逐字字符串处理,而不是尝试将它们集成为RDBMS可以执行的代码。
https://stackoverflow.com/questions/1726730
复制相似问题