数据库设计用于存储和评估规则表达式

Vai*_*ain 5 .net sql-server database-design design-patterns data-modeling

我有一个场景,我需要为访客分配一些项目.

GuestTable has columns like
1. Guest ID
2. GuestType
3. Age
4. Height
5. Gender

ItemTable has columns like
1. ItemID
2. Item Name
Run Code Online (Sandbox Code Playgroud)

每件商品都根据商品的可用性以及客人的属性(即年龄组或高度范围等)出售给客人.

例如.对于男性水疗中心的客人以及高度大于5"且小于5'5"的酒店客人,每周一和周二下午2-4点和下午6-8点都有一件商品.

由于过滤条件的数量很大并且可由最终用户配置.除了系统应该足够可扩展以适应新的过滤条件,我应该如何管理这些规则.可以将这些规则存储为数据库表中的表达式吗?如何为此方案建模数据库表?

要么

我应该考虑使用一些规则引擎吗?

Nev*_*uyt 1

正如 APC 在评论中所写,决定是否使用业务规则引擎不应该信任互联网上的一群陌生人。

然而......你的场景相对简单且受到限制。这似乎是一个步骤,而不是一个工作流程——“如果客户满足标准 x,则提供产品 y”,而不是“所有符合标准 x 的客户必须得到经理的批准”。它似乎仅限于数据库 - 不调用 Web 服务来决定产品是否合适。

在此基础上 - 不,不要选择规则引擎。它们是庞大而复杂的机器,只有在解决比您所描述的问题大得多的问题时才能收回成本。

我建议使用 .Net“示例查询”库来允许您的用户创建过滤条件;有几个商业选项,例如EasyQuery