web-dev-qa-db-ja.com

正規化の依存関係

私はそれを正しい方法で考えていることを確認しようとしています

1)完全な依存関係とは、1つ以上の主キーが別の属性を決定する場合です。

2)部分的な依存関係は、主キーの1つが別の属性を決定する場合です。

3)推移的な依存関係は、非キー属性が別の属性を決定する場合です

私はそれを正しく考えていますか?

7
user214577

この答えは私のCSコースから直接のものであり、コノリーとベッグの教科書から得られたものです。

enter image description here

完全な機能従属性

候補キー(ここでは、propertyNo、iDate、pAddress)を特定します。これは、これら3つの任意の組み合わせにより、特定のタプルの他の属性が何であるかを見つけることができるためです(これらの3つのことを考慮して、検査を行ったstaffNoを見つけることができます。これらの3つのことを考慮して、carReg thestaffNoを見つけることができます。 。)。ただし、サブセットだけでなく、他の属性を見つけるには、これら3つすべてが必要であることに注意してください。常に完全な依存関係すべてまたは一部に依存する候補キーに応じて、非候補キーに関連します。

部分的な依存関係

これらの3つの候補キーが与えられたら、候補キー内を調べます。他に依存している候補キーのサブセットはありますか?はい、pAddressです。 propertyNoが与えられると、プロパティのアドレスを把握できます。次に、候補キーの外側を見てください。すべてのコンポーネントではなく、候補キーの一部のみに依存するこれらのキーはありますか?この場合はありません。したがって、部分的な依存関係は、常に候補キー内の依存関係、またはすべてのコンポーネントではなく候補キーの一部のみに対する非候補キーの依存関係です

推移的な依存関係

次に、非候補キー(staffNo、comments、iTime(検査時間)、sName、carReg)を確認します。それらの中で、機能的に他に依存しているものはありますか?はい、それはsNameです-staffNoを指定すると、スタッフの名前を把握できます。ただし、staffNoは、3つの候補キーに機能的に依存しています。したがって、推移性により、propertyNo + iDate + pAddress-> staffNo-> sNameであるため、sNameは推移的にstaffNoに依存します。 推移的な依存関係は常に候補キーの外部の属性に関連しています。

9
Dhruv Ghulati

完全ではありません。用語をより正確にすると役立ちます。「1つ以上の主キー」のようなことを言うとき、あなたは(おそらく)本当に「主キーの1つ以上の列」を意味しますか?

完全な依存関係と部分的な依存関係の違いは、キーが複数の列(複合キー)で構成されている場合にのみ発生します。

1)完全な依存関係とは、別の属性を決定するために完全なキー(キーのすべての列)が必要な場合です。

2)部分的な依存関係は、キーが複合であり、キーのすべてではないが一部の列が別の属性を決定する場合です。 (これはまだ複数の列である可能性があります。)

3)推移的な依存関係はあなたが言った通りです。

5
Tony Andrews

完全に依存は、問題のすべての属性に依存することを意味し、通常は候補キーのすべての属性を意味します。主キーは従属理論と正規化において特別な役割を果たさないため、「主」として指定されたキーである必要はありません。

部分的に依存は、これらの属性の適切なサブセットに依存することを意味し、通常、いくつかの候補キーの適切なサブセットを意味します。

コンテキストに応じて、推移的な依存関係は次のいずれかを意味します。

(1)A-> B、B-> Cの形式の依存関係

(2)A-> B、B-> Cの形式の依存関係(Bはスーパーキーではない)

ほとんどの場合、推移的依存という用語は、(2)で説明されている状況を指すときに使用され、(1)がより正式に正しい意味であるにもかかわらず、その意味と実質的に同義語になっています。

3
nvogel