2016-12-31 11 views
0

第1正規形になるように関係を正規化する必要があります。私は複数の値を持つ属性を正規化する方法を知っていますが、それは私に問題を与えている複合属性です。たとえば、コンポジット属性の1つが「Employee-Address」で、期待通りに「House-Number」、「Street-Name」などのサブ属性が含まれます。複合属性を正規化する方法は?

これを正規化するにはどうすればよいですか?これらの複合属性は複数値/複合ではなく、すなわち、単一の従業員は1つのアドレスしか持たない。また、「employee-id」属性を使用してアドレスのすべてのサブ属性を識別できるとも考えています。複合属性を分割して各サブ属性をリレーション内の独自の属性として保存するのは簡単ですか?このようにして、すべてのサブ属性は単純で単一の値と格納された値になりますか?

誰もが苦情を言います。この質問は大学の課題と関連しており、私は見つけられなかった答えのために推奨される教科書(とインターネット)の全体を見てきました。もちろん、私は自分の答えに対する解決策を望んでいますが、もしあなたが自分の例をあげたいなら、それは素晴らしいです。任意のアドバイスやポインタは非常に感謝しています!

+0

実際には、アドレスは文字列に格納された住所と、他のフィールドの他の場所(郵便番号など)に格納された単一の行としてテーブルに格納されます。フィーチャは他の列(アパート番号)に抽出されることもありますが、アドレス行自体は、おそらく上位レベルの地域を除いて、追加のIDで埋められません。 –

+0

@Gordon私は同意します。私の唯一のコンポジットファッションのアドレスは、割り当てグレーディングのためのものです!私は個人的に複合 "かっこ"を取り除くだけで、それぞれ別々のフィールドに格納されていることは何の違いもありません。 –

+0

「正規化」とはどういう意味ですか?その&関連用語は異なる意味で使用されています(誤用されることもあります)。入力とは何ですか?出力は何であるはずですか?あなたのtexbookは何ですか? "正規化"についての混乱は、[this](http://stackoverflow.com/a/24038895/3404097)を参照してください。また[これ](http://stackoverflow.com/a/41395340/3404097)。 – philipxy

答えて

0

1NFの唯一の要件は、各アトリビュートに1つの「アトミック」値が含まれていることです。

アドレスがコンポジット値で、アドレスの各部分が別々のサブ値であることが示唆された場合は、サブ値ごとに属性を作成する必要があります。

アドレスの各部分を独自の属性に格納すると、インデックスを作成して「ニューヨーク市のみんなを見つけよう」のようなクエリを効率的に実行できます。

+0

ありがとう、たくさんの意味があります。 Btw、関係は多値属性を持ち、私はそれに対して別の関係を作成することに決めました。これを行うには、元の関係の主キーを持っていき、それを多値属性と組み合わせて新しい関係の主キーを作成する必要があります。元の関係の主キーはコンポジットですが、これは大丈夫ですか?ありがとう、幸せな新年! –

+0

私はあなたが言っていることを理解しているのか分からない。あなたは、住所などのための別の関係を作成していますか?それが意味をなさないかどうかは、元の関係にあるものに依存します。それは「従業員」なのでしょうか? –

+0

申し訳ありませんが、私は明確にします。私が参照している多値属性はAddressではなく、Employee-Qualificationsと呼ばれるものです。元の関係は非常に良くマッピングされておらず、データベースのすべての属性、顧客データから従業員データ、さらには製品情報までが含まれています。この関係は譲渡によって設定されました。もし1NFより前にできれば、私はそれを変更します。基本的に、元の関係の複合キーは、資格のための別個の関係を作成するときに機能しますか?元の関係PKに従業員IDは含まれていませんが、教科書にはPKを使用する必要があると言われています。 –

関連する問題