1

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

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

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

存储规则的数据表如下: Allow or Deny Flag (Y/N) AgeStart: 12 AgeEnd: 16 HeightStart: 5 HeightEnd: 6

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

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

有这个的接盘侠吗?

4

1 回答 1

0

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

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

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

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

于 2009-11-13T03:20:19.683 回答