0

ビジネスルールについて質問があります。ビジネス ルールを定義するいくつかのプロパティ (金額、名前、種類など) を持つエンティティ Account を用意しましょう。

次のようにルールをデータベーステーブルに保存します

Rule_id | Field | Operator | value . 

ルールはamount > 1000, name ="abc", type="x"などです。ルールはグループ化され、ユーザーにマップされます。

アカウントはシステムで作成され、管理者はそれらを承認する必要があります。管理者が自分のルール セットに基づいてログインすると、管理者は関連するアカウントを表示する必要があります。

たとえば、管理ルール セットが金額 > 500 の場合、500 未満のアカウントは表示されません。

私の質問は、データベースに実装する最良の方法、基になるルールセットに応じて関連するアカウントを取得できるようにクエリを実行する方法です。

4

2 に答える 2

0

あなたが説明することは、Oracleのきめ細かいアクセス制御(AKA Virtual Private Database)に非常に似ています。これは主にセキュリティ ツールですが、一般的なビジネス ルールを適用するために使用できます。 詳細をご覧ください

FGAC を使用しないことを選択した場合でも (または Enterprise Edition を持っていないために使用できない場合でも)、ソリューションを実装する方法についていくつかのヒントが得られます。sys_context と名前空間を使用してルールを保持し、sys_context 関数を参照するビューを使用して、それらを実施します。

于 2013-01-20T14:05:54.157 に答える
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 に答える