私のデータベースに私はのルールテーブルがあります。アプリケーションのユーザーは、さまざまなフィールドを比較できる多数のルールを構築できます。 FieldAがFieldBより大きい。等しくない、より小さい、等間隔で置き換えることができる唯一の条件ではない。シンプルなデータを変更しないための外部キーテーブルを作成しますか?数学的操作対説明的なテキストを使用して
この条件は、自分のルールテーブルに保存する必要があります。 2つのオプションがあります。1つは、それを識別するテキストを含む列を含めることです。データは次のようになります。
Id,Name,FieldId,FieldToCompareId,Condition
1000,RuleA,2000,2001,GreaterThan
2番目のオプションは、これらすべての条件で、ルールテーブルの上にFKを持つ、最初のオプションは、最も簡単かつ迅速である。この
ConditionTable RuleTable
--------------- ----------
Id,ConditionName Id,Name,FieldId,FieldToCompareId,ConditionId
1000,GreaterThan 1000,RuleA,2000,2001,1000
1001,Equals
ようなもので、外部キーテーブルを作成することです条件の記述が決して変更できないという欠点があります。 2つ目のオプションは、他の列を追加して、たとえば、そのテキストに基づいて自分のアプリケーション内で作業するのではなく、ユーザーに表示されるわかりやすい名前です。
2番目の選択肢の主な問題は、この構造に従う場所が多いため、非常に静的なデータのためにさまざまなテーブルを作成することになり、アプリケーションのデータにアクセスする複雑さが増します。 。
最初のオプションは賢明な解決策ですか、私は常に外部キーテーブルをリファクタリングする必要があるので、テキストの代わりに行内にIDだけを格納していますか?