編集後:うわー、この質問は長くなります。許してください=\
30 を超える列で構成される新しいテーブルを作成しています。これらの列は、主にドロップダウン リストからの選択によって入力され、それらのオプションは主に論理的に関連しています。たとえば、[レビュー期間] というラベルの付いたドロップダウンには、[毎月]、[半年ごと]、[毎年] などのオプションがあります。月次、半年次、年次などの値を格納するプリミティブ ルックアップ テーブルを作成することで、これらのオプションを数値識別子に正規化する実行可能な方法を思いつきました。次に、これらのプリミティブの ID をレコードのテーブルに保存し、ビューを使用してそのテーブルをルックアップ テーブルに結合します。このビューを配置すると、外部アプリケーションと管理者がビューに対して SQL を実行し、わかりやすい情報に変換されたデータを返すことを許可しながら、レコードのテーブルにアプリケーションのみが理解できる生データを含めることができます。
複雑になっただけです。これらのドロップダウン リストには、論理的に関連のない項目が含まれるようになります。たとえば、[レビュー期間] ドロップダウン リストには、NA と手動のオプションが必要になりました。これにより、グループ化スキーム全体が水から吹き飛ばされます。
このアプリケーションで使用されている同様の構造は、複数のレコードにわたって繰り返される文字列値を格納することに頼っています。これは、テーブルの ReviewPeriod 列に格納された文字列 'Monthly' を持つ何百ものレコードを持つことができることを意味します。ここで働き始めて以来、このようなことが起こっていると考えると身がすくむようになりましたが、今では正規化されていないデータが最良の選択肢かもしれないと考え始めています。
最初の方法を使用してこれを行うことを考えることができる他の唯一の方法は、それを動的にし、いつでも任意のドロップダウン リストに新しいオプションを常に追加できるようにすることです。ビジネス オブジェクト (この場合は .NET クラス) のプロパティを調べて、プリミティブ テーブルに存在する文字列値を確認します。含まれていない場合は、それを追加して、テーブル オブ レコードに格納するための自動生成された一意の識別子を返します。とても複雑に思えますが、正規化されたデータのためにこれを行う必要がありますか?