0

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

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

Rule_id | Field | Operator | value . 

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

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

就像如果管理员规则集金额>500,那么任何小于 500 的帐户都不会显示给他。

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

4

2 回答 2

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
于 2012-07-04T08:27:04.930 回答
0

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

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

于 2013-01-20T14:05:54.157 回答