Има ли разлика между два първични ключа и композитен ключ?


Отговор 1:

Да, има разлика. Преди да стигнете до разликата, трябва да разберете, че „ключ“ е поле, чиято стойност ще идентифицира уникално ред. Това се нарича свойството „уникалност“ на ключ. Има второ свойство на ключ (в това се крие разликата между съставен ключ и множество клавиши) - т.е., свойството „минималност“. Това определя, че не трябва да е възможно да се премахне поле от ключа, така че уникалността да бъде унищожена.

Помислете за таблица с резултати от изпитите на студентите, както следва:

  • ScoreId (уникален текущ номер) StudentId (идентификационният номер за регистрация на студенти, гарантирано уникален за всеки студент, независимо от учебната година; FK в таблицата на студентите) SubjectNameSubjectTestIdentifier (уникален идентификационен номер за всеки тест, провеждан някога от институцията; FK в TestMaster таблица, която обозначава учебната година, темата, датата на теста и други атрибути на теста) SubjectScore

В горния случай {ScoreId}, {StudentId, SubjectName, SubjectTestIdentifer, SubjectScore} и {StudentId, SubjectTestIdentifier} са ключове - всеки от тези набори полета ще идентифицира уникално реда, за който говорите.

Но сега помислете за {StudentId, SubjectName, SubjectTestIdentifier, SubjectScore} и {StudentId, SubjectTestIdentifier} - докато и двете удовлетворяват свойството на уникалността, първото се проваля на теста за „минималност” - откачайте от „SubjectName” и „SubjectScore” и можете да все още уникално идентифицират реда.

Така че сега идваме към вашия въпрос: В този случай {ScoreId} е ключ, но не и съставен ключ, докато {StudentId, SubjectTestIdentifier} е съставен ключ. Всички съставни ключове са уникални ключове, но не всички уникални клавиши са съставни ключове.


Отговор 2:

Ако декларирате няколко атрибута като първични ключове, те заедно образуват съставен ключ. Композитните ключове обикновено се създават, когато няма нито един такъв ключ, чрез който можете еднозначно да идентифицирате всеки ред. Така създавате комбинация от полета, които заедно могат еднозначно да идентифицират редове.

Когато имате няколко ключа, от които може да се направи първичен ключ, такива полета се наричат ​​кандидат или вторичен ключ.

Така че дефинираните множество първични ключове и съставен ключ са основно еднакви.