存储和查询业务规则

时间:2012-07-04 07:56:48

标签: sql oracle tsql business-rules

我有与业务规则有关的问题。让我们有一个实体账户,其中包含我们定义业务规则的一些属性(金额,名称,类型等)。

我将规则存储在数据库表中,如下所示

Rule_id | Field | Operator | value . 

规则可以是,amount > 1000, name ="abc", type="x"等。 规则被分组并映射到用户。

帐户是在系统中创建的,管理员必须批准它们。当管理员根据其规则集登录时,管理员应该看到相关帐户。

如果管理规则设置的金额> 500,则不会向他显示任何少于500的帐户。

我的问题是在数据库中实现它的最佳方法,如何查询以便根据基础规则集获取相关帐户。

2 个答案:

答案 0 :(得分:0)

创建类似这样的用户表

用户

 userId | Username | UserType | Rule_id

当用户登录时,使用Rule_id上​​的规则表加入用户表   并使用像这样的查询生成条件

select 'Select * from Account where '+Field+Operator+value from rules   
where Rule_id=1

此查询的结果将为执行相同操作提供另一个sql查询,以获取该用户可访问的帐户

上述查询的结果

Select * from Account where amount>1000

答案 1 :(得分:0)

您所描述的与Oracle的细粒度访问控制(AKA虚拟专用数据库)非常相似。这主要是一种安全工具,但它可用于实施通用业务规则。 Find out more

即使您选择不使用FGAC(或因为您没有企业版而不能),它也会为您提供有关如何实施解决方案的一些提示:使用sys_context和命名空间来保存规则和视图引用sys_context用于强制执行它们。