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

时间:2013-05-05 18:41:30

标签: .net sql-server design-patterns database-design 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

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

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

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

OR

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

2 个答案:

答案 0 :(得分:1)

您应该考虑使用Flee之类的内容,并避免将数据库用作规则引擎。客户端解析速度会快得多,并且不会对数据库服务器造成太大的负担。只需读入值,然后使用Flee解析表达式。它是一个很棒的评估引擎。试着让我们知道你的想法。

答案 1 :(得分:1)

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

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

在此基础上 - 不,不要去寻求规则引擎。它们是大而复杂的机器,只能在比你描述的问题更大的问题上为自己付出代价。

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