Чим відрізняється Первинний ключ від Супер ключа в СУБД


20

Я новачок у СУБД і все ще вивчаю теорію.

Я дуже заплутався в цьому ключовому бізнесі, і після googling я звузив його лише до двох клавіш, які я не отримую (первинний і супер ключ).

У мене є кілька запитань щодо СУБД. Буду вдячний, якщо ви можете відповісти на них за мене.

1) Яка різниця між первинним ключем та клавішем Super у СУБД? Дуже вдячний, якщо ви можете використовувати вичерпний приклад, щоб правильно пояснити

2) ключ може Первинний ключ і супер як вже декілька стовпців об'єднуються в первинний ключ і супер ключ?

3) Чи є первинний ключ підмножиною клавіші Super або навпаки?


1
Одна річ, яка заграє багато, - це те, що кортеж (ряд) сам по собі є суперквітом. Оскільки наміром є можливість однозначно ідентифікувати рядок, тобто мати можливість однозначно ідентифікувати кортеж, що містить певну комбінацію значень, один із способів зробити це - вже мати усі наявні значення. Отже, кортеж - це суперквітка для себе, оскільки як тільки ми знаємо значення кортежу, то ми чітко знаємо, як знайти кортеж, що має ці значення. Спочатку це здається нерозумним, але він встановлює верхню межу того, що може бути суперкером для кортежу - самим кортежем.
Дейв

@Dave Набір усіх назв стовпців співвідношення / таблиці (а отже, кожного з його кортежів / рядків) - це супер-ключ. Не "сам кортеж (рядок)".
філіпсі

@philipxy ви праві, і я помиляюсь - я виправлений. Дякуємо, що додали пояснення.
Дейв

Відповіді:


23

Супер Ключ просто немінімально кандидат ключа , тобто один з додатковими стовпцями не строго необхідних для забезпечення унікальності ряду.

Первинний ключ є мінімальним кандидатом ключ , який повинен сказати , що всі стовпці установчих строго необхідні для того , щоб забезпечити унікальність.

Як розробник / дизайнер баз даних з 30-річним досвідом, я навіть не чув навіть терміна " Супер ключ", поки не побачив це питання, і подивився його. Концепція Super Key здається більшою мірою темою продуктивності та дизайну фізичної схеми, оскільки безпосередньо відображає концепцію унікального некластеризованого індексу з додатковими колонками для покращеного охоплення запитів.


3
Це досить неточно. Ви використовуєте superkey, CK & PK замість належних superkey, superkey & CK. Супер ключ - це УНІКАЛЬНИЙ набір. (CK - це "мінімальний" суперкейк. Не існує поняття "мінімальний CK". Кожен CK - це суперкейк. Отже, у суперкалі не повинно бути більше стовпців, ніж у CK. PK - це CK, який викликає ПК. Якби це був "мінімальний CK", тоді "мінімальний" повинен означати "довільний".) SQL PK & UNIQUE NOT NULL оголошують супер-ключі. (SQL PK може бути або не може бути ПК). Клавіші зразків є критичними для визначення CK, що є критичним для проектування, включаючи нормалізацію. Дивіться мою відповідь.
Філіпсі

1
Крім того, для розуміння СК потрібне використання Бойса-Кодда НФ
Танком

16

Супер-клавіші: Супер-клавіша означає суперсет ключа. Супер ключ - це набір одного або декількох атрибутів, які приймаються спільно і можуть однозначно ідентифікувати всі інші атрибути.

Наприклад, у нас є таблиця

Book (BookId, BookName, Author)

Тож у цій таблиці ми можемо мати

   (BookId)
   (BookId,BookName)
   (BookId, BookName, Author)
   (BookId, Author)
   (BookName, Author)

Як наш супер ключ. Кожен супер ключ здатний однозначно ідентифікувати кожен кортеж (запис).

Ключі кандидата Ключі кандидата - це супер ключ, який не має зайвих атрибутів. Іншими словами, ключові кандидати - це мінімальні супер-ключі. Наприклад, на наведеній вище ілюстрації

   (BookId)
   (BookName,Author)

Ці два ключі можуть бути ключами-кандидатами, оскільки інші клавіші мають зайві атрибути. Значення запису супер-ключа (BookId, BookName) можна однозначно ідентифікувати лише за допомогою bookid, і тому Bookname є надмірним атрибутом

Первинний ключ: це ключ-кандидат, який обирається дизайнером бази даних для ідентифікації сутностей, що знаходяться в наборі об'єктів. АБО Ключ, який використовується для однозначної ідентифікації кожного запису, відомий як первинний ключ.

Зверху ключі кандидата будь-який з них може бути первинним ключем. А ще один, який не обраний в якості основного ключа, буде відомий як альтернативний ключ


Це відповідає на питання і заслуговує на підвищення цінності.
srk

Також відзначимо , що інша назва alternative keyце secondary keyвони однакові. Чудова відповідь!
Ваель Альшабані

2

З цієї моєї відповіді stackoverflow.com :

Ключ-кандидат - це набір стовпців, який однозначно ідентифікує рядки і містить не менший ("правильний") підмножина стовпців, що однозначно ідентифікує рядки.

Супер ключ - це набір стовпців, що однозначно ідентифікує рядки. Отже, ключ-кандидат - це супер-ключ, який не містить меншої супер-ключа.

У SQL ви не можете оголосити порожній ключ-кандидат. Крім того, UNIQUE NOT NULL та PRIMARY KEY (що з точки зору обмежень просто означає УНІКАЛЬНИЙ НЕ NULL) оголошують супер-ключі, а не ключі самі по собі. Якщо набір стовпців такої декларації не містить менший набір стовпців, оголошений як супер-ключ, то супер-ключ, який він оголошує, є ключем-кандидатом.

Із цієї stackoverflow.com моєї відповіді про дану таблицю:

Для наборів стовпців X і Y можна записати X -> Y . Ми говоримо, що X - це визначальний набір, а Y - визначений набір / у функціональній залежності ( FD ) X -> Y.

Ми говоримо, що X функціонально визначає Y, а Y функціонально визначає X. Ми говоримо, що X є визначником X -> Y. У {C} -> Y ми говоримо, що C функціонально визначає Y. У X -> {C} ми говоримо X функціонально визначає C. Коли X є супермножиною Y, ми говоримо X -> Y тривіально .

Ми говоримо, що X -> Y має місце в таблиці T, коли кожне підсумкове значення для X завжди / відображається лише з однаковим підсумком значень для Y. Або ми кажемо, що X -> Y - FD / в T. Коли X є визначальним фактором деяких таблиць FD в таблиці T ми говоримо, що X є визначником / в T.

Суперключ з таблиці Т являє собою набір стовпців , які функціонально визначає кожен атрибут. Ключ - кандидат ( CK ) є суперключ , який містить не менше суперключ. Ми можемо вибрати один CK як первинний ключ ( PK ), а потім зателефонувати іншим CKs alternate keys . Стовпчик є простим, коли він знаходиться в якомусь CK.

(Як я прокоментував там, "чотирьох жирних речень для FD, hold, superkey та CK було б достатньо.")

(Таблиця з порожнім CK обмежена, щоб містити щонайменше один рядок. Набір стовпців, визначений порожнім набором, обмежений тим, що має однакове значення підрядів у кожному рядку.)


1

Ключ Ключ - це одиничне або комбінація декількох полів. Її мета - отримати доступ або отримати рядки даних із таблиці відповідно до вимоги. Клавіші визначені в таблицях, щоб швидко та плавно отримувати доступ до послідовностей, що зберігаються, або послідовно зберігати їх. Вони також використовуються для створення зв’язків між різними таблицями.

Типи ключів Наступні таблиці або відносини будуть використовуватися для визначення різних типів ключів.

Первинний ключ Атрибут або комбінація атрибутів, що однозначно ідентифікує рядок або запис у відношенні, називається первинним ключем.

Вторинний ключ Поле або комбінація полів, що є основою для отримання, називається вторинним ключем. Вторинний ключ - це не унікальне поле. Одне значення вторинного ключа може стосуватися багатьох записів.

Ключ кандидата або альтернативний ключ Відношення може мати лише один первинний ключ. Він може містити багато полів або комбінацію полів, які можна використовувати в якості основного ключа. Одне поле або комбінація полів використовується в якості основного ключа. Поля або комбінація полів, які не використовуються в якості первинного ключа, відомі як кандидатський ключ або альтернативний ключ.

Складений ключ або з'єднаний ключ Первинний ключ, що складається з двох або більше атрибутів, називається складовим ключем.

Клавіша сортування або керування Поле чи комбінація полів, які використовуються для фізичної послідовності збережених даних, що називаються ключем сортування. Він також відомий як керуючий ключ.

Суперключ являє собою комбінацію атрибутів , які можуть бути однозначно використані для ідентифікації запису в базі даних. У таблиці може бути багато суперкерів. Ключі-кандидати - це спеціальний підмножина супер-ключів, що не мають в них сторонніх даних.

Приклад супер ключа: Уявіть таблицю з полями Ім'я, Вік, SSN та <Розширення телефону>. У цій таблиці є багато можливих супер-ключів. Три з них - SSN, розширення телефону та ім'я. З перерахованих, лише SSN є ключовим кандидатом, оскільки інші містять інформацію, необхідну для однозначної ідентифікації записів.

Зовнішній ключ Зовнішній ключ - це атрибут або комбінація атрибутів у відношенні, значення якого відповідає первинному ключу в іншому відношенні. Таблиця, в якій створюється зовнішній ключ, називається залежною таблицею. Таблиця, на яку вказується іноземний ключ, відома як батьківська таблиця.

для мінімального клавіші Super перейдіть за цим посиланням, там зрозуміліше http://www.answers.com/topic/superkey-1

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.