2016-11-19 7 views
1

私は主キーが自然なキーであると考えられるときと代理キーと見なされるときを理解しようとしています。私は代理キー、自然のキーは次の性質を持っていることを読んだ:プライマリキーがナチュラルキーと見なされ、サロゲートキーと見なされるときは、

自然キーがすでに現実の世界で 存在する属性から構成されているキーです。

サロゲートキーは、データベース環境外では意味を持ちません。

は、私は(employee_idが主キーである)次の表を持って言ってやるがいい。

enter image description here

今度は、例えば、employee_idは、現実の世界で知られていると言ってみましょう:各従業員がIDカードを持っていますそれはemployee_idが印刷されています。つまり、employee_idは自然なキーですか?今

のは、employee_idは、現実の世界では知られていない別のシナリオを、考えてみよう

は(それがデータベース環境外では意味を持たない)、および従業員は SSN使用して、現実の世界で識別され、それは、 employee_idであることを意味していサロゲートキー?

+0

"natural key"の引用された定義は矛盾していますが、多くは "already"のない定義を使用します。外部的に見えるIDがデータベースで新しいものであっても、それらはまだ自然です。あなたの「すでに」定義を使用する人は、あなたが与えたものとは異なる「サロゲート」の定義を「内部」ではなく「新しい」ものとして使用し、自然ではない代理人ではない新しい従業員IDを呼び出すでしょう。 – philipxy

答えて

2

要約が正しいです。すべてのキーは、自分が識別したものの「サロゲート」です。データベース管理に関連する唯一の有用な区別は、キー属性が存在するか、またはビジネスドメイン(談話のドメイン)にが使用されるかどうかである。キーがビジネスドメインで使用される場合、それは自然キー(別名ビジネスキーまたはドメインキー)と呼ばれます。それ以外の場合は代理キーと呼ばれます。

しかし、これらの用語は多少非公式であり、異なる人々によって微妙に異なる方法で使用されます。

E.F.CoddのRM/T紙では、サロゲートの厳密な定義が使用されていました。彼は、データベースの表でさえも見えなかった "キー"という考えを提案しました。彼の提案はそれに重大な問題を抱えており、彼が記述した方法で広く実装されていません。それは主に歴史的な関心事です。

Coddの定義の1つの側面は、サロゲートが一般的には見えないようにすることです。少なくともビジネスドメインのデータのユーザーには見えません。実際にビジネスドメインにキー値を公開すると、そのキーは代理キーではなくドメインキーになります。サロゲートキーはドメインキーの役割を果たさず、ドメインキーの必要性を排除します。

関連する問題