会社で行っている設計作業の情報を保存するデータベースを作成しました。メインテーブルには現在、多数の「オプション」フィールドがあるため、多くの Null フィールドがあります....私が理解しているように、正規化の最有力候補です!
私の問題は、構造の理解から生じます。私の問題を説明するために最善を尽くします:
メイン テーブルには、エントリ (私の PK) と、いくつかのグループ化されたオプション (AY/N とメモ) があります。テキストはオプションですが、関連する Y/N が「はい」に設定されている場合のみです。簡単な例は次のとおりです (Excel で簡単なモックアップを作成しました)。
これら以外にも多くのオプションがあることに注意してください (さらに多くの null があります)。これらを 2 つの新しいテーブルに正規化したいのですが、その構造は私のスキル レベルを超えています。理論的には、次のようになります。
これにより、Y/N とテキストが分離され、元のオプション番号を介して 2 つが関連付けられ、すべての null が削除されます。
しかし、構造的には、すべてを設計する方法がわかりません。どこかにジャンクションテーブルが必要だと思いますが、「注文と製品」の標準的なチュートリアルの例は、私がやろうとしていることにうまく適合しません (または、少なくとも、それを見ることができません)。
追加の問題として、対応する「OptionA」に「Yes」が存在する場合にのみ、「OptionB」のレコードを受け入れる必要があります。元のテーブルの検証ルールを使用してこれを設定できましたが、フィールドが分割されている場合に同じ方法を使用できるかどうかはわかりません。
2番目の2つのテーブルのキーを設定する方法についても途方に暮れています-「エントリ」と「オプション」の両方が重複できる必要がありますが、これら2つのフィールドの一意の組み合わせの重複を停止する必要があります( 「エントリ 1|オプション 1」のレコードは 1 つだけである必要があります)
それは長文でしたが、それが理にかなっていることを願っています...さらに明確にすることができれば幸いです。