0

求人ポータルデータベースを作成する予定です。ここに私はいくつかの通知を購読しているいくつかの候補者がいます。

テーブルプレビュー

(もちろん、候補者の名前はIDになり、候補者にはその人に関連付けられた列が多く表示されますが、表示されていません。)4番目または5番目の通常のフォームの問題かどうか混乱しています。冗長性を減らすために助けが必要です。

冗長性を削除できるように、IsEnabled情報を失うことなくこれをこれらのテーブルのようなものに分割できますか?

候補表

通知表

それは可能ですか、それともこれは避けられない冗長性の場合ですか?

4

1 に答える 1

4

それはあなたがそれを見るどんな角度から見ても通常の形の問題ではありません。

その最初のテーブル(ブール属性を含む)をそのままにしておきたい場合は、CONSTRAINTがあります。その最初のテーブルには、(候補、通知タイプ)の可能なすべての組み合わせに対して行が存在する必要があります。しかし、それはNFの問題ではありません!候補のみまたは通知タイプのみを指定して、ブール値を決定できる場合にのみ、NFの問題になります。

このアプローチで「冗長性」であると誤って認識しているのは、まさにその制約の存在と、データベースを更新するときに生活を困難にする影響です。

ブール属性を破棄し、最初のテーブルに「true」を持つ行のみを書き込みます。これで、その制約はなくなり、世界中のデータベースに無数の「ジャンクション」テーブルがあるように、候補を有効な通知タイプにリンクする通常の「ジャンクション」テーブルだけがあります。

于 2012-02-17T14:28:52.730 に答える