Oracle テーブルにいくつかのビジネス ルール (包含および除外ルール) を適用し、ルールに基づいてステータス列を更新しようとしています。ステータス列の値に基づいて、後でこのテーブルからファイルが抽出されます。ここで、企業は UI を使用してルールを構成したいと考えています。したがって、ルールは動的になります。
ユーザーがビジネス ルールを使用する可能性のあるすべての列をステージング テーブルに格納することを計画しています。ルール UI では、このステージング テーブルのすべての列が表示されます。次に、ルール テーブルからルールをフェッチし、動的更新ステートメントを使用してステータス列を更新するストアド プロシージャを作成する予定です。動的 SQL はこれに適していますか?
ルールテーブル:
Id、RuleName、RuleDesc、ColumnName、Operator、Value、Connector、ConnectOperator、RulePrecedence
コネクタ - ルールに接続するには、次のように言います
#1 Code=1001
#2 state='FL'
最初のルールでは、ユーザーは #2 をコネクタとして配置でき、ConnectOperator は「and/or」にすることができます
または、C# コードを使用してテーブルからすべての行をオブジェクトにフェッチし、LINQ クエリを使用してルールに基づいて行をフィルター処理し、テーブルを更新することもできます。Oracle が基礎となるデータベースであるため、NHibernate を ORM として使用することもできます。しかし、パフォーマンスが Oracle で良いかどうかはわかりません。処理される行数は約 500K になる可能性があります
データベースがルールを保存するのに最適な場所になるか、他の手段があるかどうかも混乱していますが、ユーザーがルールを構成および作成したい場合、ルールは異なるテーブルに属する可能性のある列を参照できます(そのため、私は可能なすべての列をステージング テーブルに格納するには、制限があることは理解していますが、ビジネスがこのステージングにない列にルールを作成したい場合、このアーキテクチャは機能しません)
このデザインにどのようにアプローチすべきか提案はありますか?