1

さて、これが「一言で言えば」私が達成しようとしていることです...

私のアプリケーションのユーザーは、新しいグループを作成できます。グループへの参加を許可するユーザーを決定するために許可/拒否する他のユーザーに関する基準を指定できます。

例: 年齢: 12 - 16 歳 身長: 5 - 6 フィート

ルールを格納するデータ テーブルは次のようになります。許可または拒否フラグ (Y/N) AgeStart: 12 AgeEnd: 16 HeightStart: 5 HeightEnd: 6

次に、ユーザーがグループへの参加を許可されているかどうかを判断する基準を満たしているかどうかを確認する必要があります。

これは理にかなっていますか?それに反する EXCEPTION ルールも存在する可能性があります...たとえば、最初の「許可: Y」は 12 歳から 30 歳である可能性がありますが、2 番目のレコードは 25 歳から 28 歳の拒否に追加される可能性があるため、ユーザーは両方の基準を満たす必要があります。入力。

これに乗る人はいますか?

4

1 に答える 1

0

はい、どのような種類のDSLを使用しても、ルールをデータベースに保存できますが、SQLはルールを解釈または適用するためのソリューションではありません。

ルールフィールドをアプリにフェッチして、そこで解釈する方がはるかに簡単です。ルールを解釈するための機能豊富なパーサーライブラリにアクセスでき、ルールを適用するためのOOコードを簡単に記述できます。

ユーザーがグループに参加しようとするときにのみルールを実行する必要があるため、ルール定義をフェッチするためのクエリを実行することは、パフォーマンスの大きなコストにはなりません。SQLでルールパーサーとエンフォーサーを実装しようとするよりもはるかにコストがかからないことは確かです。

これについての別の考え方は 、データベースはコードではなくデータを格納するというものです。ルールの定義を文字列としてデータベースに保存することでこれを曖昧にすることができますが、データベースにこれらを逐語的な文字列として扱わせ、RDBMSが実行できるコードとして統合しようとしないでください。

于 2009-11-13T03:20:19.683 に答える