この主キーの定義はどういう意味ですか?


8

私の教科書では、リレーショナルデータベースの主キーの次の定義を説明していますが、完全には理解していません。助けをいただければ幸いです。

ましょ関係すること。次に、Rの主キーは、次の2つのプロパティを満たすの属性セットのサブセット、たとえばです。RRRK

  1. 一意性プロパティ: 2つの異なるタプルがに対して同じ値を持つことはありません。RK

  2. 不可逆性プロパティ:適切なサブセットに一意性プロパティはありません。K

Irreducibilityプロパティに迷っています。


注意:1)列の複数のサブセットがこれらのプロパティを満たす可能性があるため、最終的に、主キーは、主キーを定義するユーザーが選択するものになります。2)実際には、主キーをサポートするDBMSはプロパティ1を適用しますが、プロパティ2は適用しません(ただし、これについては多くの人がチェックしていません)。
reinierpost 2016

2
注:本は言うならば、「主キー」、それは誤解されています。PKとして使用できる複数の異なる列のセットが存在することは可能であり、珍しいことではありません。
AnoE 2016

回答:


7

次の表を検討してください。

FirstName  LastName  Pet  FavColour
-----------------------------------
Alice      Jones     dog  red
Alice      Smith     dog  green
Bob        Smith     cat  blue

キーは属性の任意のセットです:{FirstName、LastName、Pet、FavColour}の任意のサブセット。uniquenessプロパティは、2つのレコードがキーの属性に同じ値を持つことはできないことを示しています。したがって、たとえば、{FavColour}は一意性プロパティを持つキーです。2つのレコードが同じ値を持つことはありません。{Firstname、Lastname}も一意です。同じ姓名を持つレコードは2つありません。一方、{Pet}は、最初のレコードと2番目のレコードの属性の値が同じであるため、一意ではありません。

現在、{FirstName、LastName、Pet、FavColour}も一意のキーです。2つのレコードがすべての属性に同じ値を持つことはありません。しかし、それは一種のばかげた鍵ですよね?既約性により、キーからいずれかの属性を削除すると、一意性が失われます。したがって、{Firstname、LastName、Pet、FavColour}は還元できません。これは、FavColourを削除した場合でも、一意性を持つキー{FirstName、LastName、Pet}が取得されるためです。また Petを破棄して、まだ一意である{FirstName、LastName}を取得できるため、これは還元不可能はありません。ただし、{FirstName}も{LastName}も一意ではないため、{FirstName、LastName}は既約です。つまり、同じ姓と名を持つ2人がいます。


tl; dr:レコードを一意に識別できる最小の列セット
DForck42

1
@ DForck42いいえ、一意に識別できる列の最小セットすべてのレコードを。
David Richerby 2016

質問はデータベースの観点から表現されています。これは、単一の関係インスタンスではなく、スキーマを意味すると理解します。リレーションスキーマのキーは、サンプルデータを調べても判別できません。サンプルデータから、キーではない属性のセットがわかる場合があります(たとえば、{Pet}はこのインスタンスではキーではありません)。しかし、実際のキーを決定するための唯一の根拠は、機能の依存関係です。
nvogel 2016年

14

K

K

たとえば、この関係を考えてみましょう。

A   B   C

1   4   4
2   4   6
3   6   6

考えられるすべてのキーを調べてみましょう。

  1. A -ユニークで既約。
  2. B -一意ではありません。
  3. C -一意ではありません。
  4. A,B-に還元可能A
  5. A,C-に還元可能A
  6. B,C -ユニークで既約。
  7. A,B,C-に還元可能A

したがって、そこここでPRIMAREキーの2つの選択肢がある:AB,C


5
K

@ruakhポイントを取る。
ラファエル

1

既約性とは、一意性を失うことなく下に行くことができない属性の最小セットを単に指します。たとえば、人のテーブルで、(姓、名)は一意であるのに、(姓)と(名)は一意ではない場合があります。

一意性が得られたら、属性を失うことなく追加し続けることができるため、既約性はその問題に対処します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.