Учебники

9) Ключи СУБД

Какие ключи?

Ключ СУБД — это атрибут или набор атрибутов, который помогает идентифицировать строку (кортеж) в отношении (таблице). Они позволяют найти связь между двумя таблицами. Клавиши помогают однозначно идентифицировать строку в таблице по комбинации одного или нескольких столбцов в этой таблице.

Пример:

ID сотрудника Имя Фамилия
11 Эндрю Джонсон
22 Том Дерево
33 Alex здоровый

В приведенном выше примере идентификатор сотрудника является первичным ключом, поскольку он однозначно идентифицирует запись сотрудника. В этой таблице ни один другой сотрудник не может иметь такой же идентификатор сотрудника.

В этом уроке вы узнаете:

Зачем нам нужен ключ?

Вот причины использования ключей в системе СУБД.

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

Различные ключи в системе управления базами данных

СУБД имеет следующие семь типов ключей, каждый из которых имеет свои различные функции:

  • Супер Ключ
  • Основной ключ
  • Ключ-кандидат
  • Альтернативный ключ
  • Внешний ключ
  • Составной ключ
  • Композитный ключ
  • Суррогатный ключ

Что такое супер ключ?

Суперключ — это группа из одного или нескольких ключей, которая идентифицирует строки в таблице. Супер ключ может иметь дополнительные атрибуты, которые не нужны для уникальной идентификации.

Пример:

EmpSSN EmpNum EmpName
9812345098 AB05 показанный
9876512345 AB06 Рослин
199937890 AB07 Джеймс

В приведенном выше примере имена EmpSSN и EmpNum являются суперключами.

Правила определения первичного ключа:

  • Две строки не могут иметь одинаковое значение первичного ключа
  • Для каждой строки должно быть значение первичного ключа.
  • Поле первичного ключа не может быть пустым.
  • Значение в столбце первичного ключа никогда не может быть изменено или обновлено, если какой-либо внешний ключ ссылается на этот первичный ключ.

Пример:

В следующем примере <code> StudID </ code> является первичным ключом.

StudID Ролл № Имя Фамилия Электронное письмо
1 11 Том Цена abc@gmail.com
2 12 Ник Райт xyz@gmail.com
3 13 Dana Натана mno@yahoo.com

Пример:

В этой таблице StudID, Roll No, Email могут стать первичным ключом. Но поскольку StudID является первичным ключом, Roll No, Email становится альтернативным ключом.

StudID Ролл № Имя Фамилия Электронное письмо
1 11 Том Цена abc@gmail.com
2 12 Ник Райт xyz@gmail.com
3 13 Dana Натана mno@yahoo.com

Что такое ключ-кандидат?

CANDIDATE KEY — это набор атрибутов, которые однозначно идентифицируют кортежи в таблице. Ключ-кандидат — это супер-ключ без повторяющихся атрибутов. Первичный ключ должен быть выбран из возможных ключей. В каждой таблице должен быть хотя бы один ключ-кандидат. Таблица может иметь несколько ключей-кандидатов, но только один первичный ключ.

Свойства ключа-кандидата:

  • Он должен содержать уникальные значения
  • Ключ-кандидат может иметь несколько атрибутов
  • Не должен содержать нулевые значения
  • Он должен содержать минимальные поля для обеспечения уникальности
  • Уникальная идентификация каждой записи в таблице

Пример: в данной таблице идентификатор студента, номер ролика и адрес электронной почты являются ключами-кандидатами, которые помогают нам однозначно идентифицировать запись студента в таблице.

StudID Ролл № Имя Фамилия Электронное письмо
1 11 Том Цена abc@gmail.com
2 12 Ник Райт xyz@gmail.com
3 13 Dana Натана mno@yahoo.com

Пример:

DeptCode DEPTNAME
001 Наука
002 английский
005 компьютер
ID учителя Fname Lname
B002 Дэвид сигнализатор
B017 Сара Джозеф
B009 Майк Брантон

В этом примере у нас есть два стола, учить и отдел в школе. Тем не менее, нет способа узнать, какой поиск работает в каком отделе.

В этой таблице, добавив внешний ключ в Deptcode к имени учителя, мы можем создать связь между двумя таблицами.

ID учителя DeptCode Fname Lname
B002 002 Дэвид сигнализатор
B017 002 Сара Джозеф
B009 001 Майк Брантон

Эта концепция также известна как ссылочная целостность.

Пример:

№ заказа PorductID наименование товара Количество
B005 JAP102459 мышь 5
B005 DKT321573 USB 10
B005 OMG446789 ЖК монитор 20
B004 DKT321573 USB 15
B002 OMG446789 Лазерный принтер 3

В этом примере OrderNo и ProductID не могут быть первичным ключом, поскольку они не уникально идентифицируют запись. Однако можно использовать составной ключ из идентификатора заказа и идентификатора продукта, поскольку он однозначно идентифицирует каждую запись.

Разница между составным и составным ключом заключается в том, что любая часть составного ключа может быть внешним ключом, но составной ключ может быть или не быть частью внешнего ключа.

Что такое суррогатный ключ?

Искусственный ключ, предназначенный для уникальной идентификации каждой записи, называется суррогатным ключом. Такие ключи уникальны, потому что они создаются, когда у вас нет естественного первичного ключа. Они не придают никакого значения данным в таблице. Суррогатный ключ обычно является целым числом.

Fname Фамилия Время начала Время окончания
Энн кузнец 9:00 18:00
Джек Фрэнсис 8:00 17:00
Анна McLean 11:00 20:00
показанный Willam 14:00 23:00

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

Суррогатные ключи разрешены, когда

  • Ни одно свойство не имеет параметра первичного ключа.
  • В таблице, когда первичный ключ слишком большой или сложный.

Разница между первичным и внешним ключом

Основной ключ Внешний ключ
Помогает вам однозначно идентифицировать запись в таблице. Это поле в таблице, которое является первичным ключом другой таблицы.
Первичный ключ никогда не принимает нулевые значения. Внешний ключ может принимать несколько нулевых значений.
Первичный ключ — это кластеризованный индекс, а данные в таблице СУБД физически организованы в последовательности кластерного индекса. Внешний ключ не может автоматически создавать индекс, кластеризованный или некластеризованный. Однако вы можете вручную создать индекс по внешнему ключу.
Вы можете иметь один первичный ключ в таблице. Вы можете иметь несколько внешних ключей в таблице.

Резюме

  • Ключ СУБД — это атрибут или набор атрибутов, который помогает вам идентифицировать строку (кортеж) в отношении (таблице)
  • Ключи СУБД позволяют установить связь и идентифицировать связь между таблицами
  • Семь типов ключей СУБД: супер, первичный, кандидатный, альтернативный, внешний, составной, составной и суррогатный ключ.
  • Суперключ — это группа из одного или нескольких ключей, которая идентифицирует строки в таблице.
  • Столбец или группа столбцов в таблице, которая помогает нам однозначно идентифицировать каждую строку в этой таблице, называется первичным ключом.
  • Все ключи, которые не являются первичными ключами, называются альтернативными ключами.
  • Супер ключ без повторяющегося атрибута называется ключом-кандидатом
  • Составной ключ — это ключ, который имеет много полей, которые позволяют однозначно распознать конкретную запись
  • Ключ, имеющий несколько атрибутов для уникальной идентификации строк в таблице, называется составным ключом.
  • Искусственный ключ, предназначенный для уникальной идентификации каждой записи, называется суррогатным ключом.
  • Первичный ключ никогда не принимает нулевые значения, в то время как внешний ключ может принимать несколько нулевых значений.