2016-10-31 4 views
0

私は非常に候補キーについて勉強したときに、私の教授によって与えられたアイデアで混乱していた(しかし、私は彼に尋ねるために偽を感じる:p)をデータベースの候補キーで「最小限度」とは何ですか?

は「Kのない部品が 一意財産を破壊せずに排除することはできません - - 極小」

と私はそれが

言うウィキで検索 『(1)のために、これらの属性のない適切なサブセットは、(セットが最小であることを意味する)が保持していませんさ』。それはまた例を示しますが、私は理解していません。

私の質問は、ここで「除去された」とはどういう意味ですか?データの行全体を削除することを意味する場合は、データの一意性を保持する必要があります(データの行を削除して一意性を失うことはないため)。それは、Kの単一の属性を削除し、空の "ブロック"を持つ行を残すだけであれば、愚かに見え、データを破壊します。だから、誰かが私にこのプロパティが意味するものの簡単な例を教えてもらえますか?(おそらく良いものと悪いもののために1つ)ありがとう〜

+0

一意性プロパティを失うことなく、すべての機能的に依存する列を候補キーに追加する*ことができます。あなたの質問は反対のプロセスです:*これらの完全に依存するフィールドをキーから削除する*。 – joop

答えて

2

ここでの「消去」はデータにまったく触れません。これは、キーから1つの属性/列を削除することを意味します。その縮小された列の組が依然としてキー(すなわち、任意のデータ行を一意に識別する)である場合、前のキーは最小ではなかった。

例:

name id amount 
A 1 1000 
B 2 2000 
C 3 1000 

あなたは、最小限のキーとしてnameまたはidを使用することができます。

[name, id]を(複合、複数列)キーとして使用することもできます。しかし、そのキーは最小限ではありません(そのキーから1つの列を削除してもキーを持つことができるためです)。

カラムamount自体はキーを作成しません。

[amount, id]が鍵になりますが、やはり最小限ではありません。

+0

ありがとうございます。私は前に複合キーの考え方を知らなかった。お手伝いありがとう。候補キーがプライマリキーに非常に近く、プライムキーが候補キーから選択されているという考えが聞こえました。したがって、ほとんどの場合、それらは同じプロパティを持ちますが、プライマリキーはプログラマが選択したものです、それは本当ですか? –

+0

はい、主キーは、そのように指定された可能なキーの1つに過ぎません。他のどのキーもその機能を果たすことができます。 – Thilo

関連する問題