Что такое внешние ключи в базах данных SQL?

Что такое внешние ключи в базах данных SQL?

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





SQL выполняет математические операции с данными в системе управления базами данных. Эти базы данных содержат разные таблицы, каждая из которых хранит данные об определенной сущности. Если у вас есть база данных по аренде автомобилей, сущностью (или таблицей) в этой базе данных будут клиенты (в которых будут храниться все личные данные о каждом клиенте).





Эти таблицы базы данных содержат строки и столбцы, где каждая строка содержит запись, а каждый столбец содержит данные, относящиеся к атрибутам.





В системе управления базами данных каждая запись (или строка) должна быть уникальной.

Первичные ключи

Хотя оговорено, что каждая запись в таблице должна быть отдельной, это не всегда так. Продолжая пример с базой данных по аренде автомобилей, если база данных содержит двух клиентов, каждый из которых имеет имя Джон Браун, можно ожидать, что Джон Браун вернет Mercedes-Benz, который он не арендовал.



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

сочетание клавиш для сна Windows 10

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





Использование первичных ключей в базе данных

Чтобы включить первичные ключи в систему управления базами данных с использованием SQL, вы можете просто добавить его как обычный атрибут при создании новой таблицы. Таким образом, таблица клиентов будет содержать четыре атрибута (или столбца):

  • CarOwnerID (в котором будет храниться первичный ключ)
  • Имя
  • Фамилия
  • Номер телефона

Связанный: Как создать таблицу в SQL





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

Запись с примером первичного ключа

/* creates a new record in the customers table */
INSERT INTO Customers VALUES
('0004',
'John',
'Brown',
'111-999-5555');

Приведенный выше код SQL добавит новую запись к уже существующей Клиенты стол. В таблице ниже показана новая таблица клиентов с двумя записями Джона Брауна.

Внешний ключ

Теперь у вас есть первичные ключи, которые однозначно отличают одного арендатора автомобиля от другого. Единственная проблема в том, что в базе данных нет реальной связи между каждым Джоном Брауном и машиной, которую он арендует.

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

Что такое внешний ключ?

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

Из четырех существующих систем управления базами данных SQL наиболее популярной является система управления реляционными базами данных. Решая, какая таблица в реляционной базе данных должна иметь внешний ключ, вы должны сначала определить, какая таблица является субъектом, а какая - объектом в их взаимосвязи.

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

Код SQL, который генерирует таблицу с внешним ключом, немного отличается от нормы.

Создание таблицы с примером внешнего ключа

/* creates a new cars table in the car rental database */
CREATE TABLE Cars
(
LicenseNumber varchar(30) NOT NULL PRIMARY KEY,
CarType varchar(30) NOT NULL,
CustomerID varchar(30) FOREIGN KEY REFERENCES Customers(CustomerID)
);

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

это устройство не запускается. (код 10) указано несуществующее устройство.

Связанный: Шпаргалка по основным командам SQL для начинающих

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

Пример добавления записи с внешним ключом

/* creates a new record in the cars table */
INSERT INTO Cars VALUES
('100012',
'Mercedes-Benz',
'0004');

Приведенный выше код создает новую запись в новом Машины table, что дает следующий результат.

Таблица автомобилей

Из приведенной выше таблицы вы можете определить того Джона Брауна, который арендует Mercedes-Benz, по внешнему ключу, указанному в записи.

Предварительные внешние ключи

Есть два других способа использовать внешний ключ в базе данных.

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

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

Составные ключи

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

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

Создание таблицы с составными внешними ключами

/* creates a CarRental table in the car rental database */
CREATE TABLE CarRental
(
DateRented DATE NOT NULL,
LicenseNumber varchar(30) NOT NULL FOREIGN KEY REFERENCES Cars(LicenseNumber),
CustomerID varchar(30) NOT NULL FOREIGN KEY REFERENCES Customers(CustomerID),
PRIMARY KEY (DateRented, LicenseNumber, CustomerID)
);

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

Чтобы получить уникальный ключ, необходимо объединить все три атрибута в таблице. Клиент может арендовать более одного автомобиля в один день (так Пользовательский ИД а также DateRented не лучшая комбинация) несколько клиентов могут арендовать один и тот же автомобиль в один день (так Лицензионный номер а также DateRented не лучшая комбинация).

Однако создание составного ключа, который сообщает, какой клиент, какая машина и в какой день делает отличный уникальный ключ. Этот уникальный ключ представляет собой составной внешний ключ и составной первичный ключ.

как включить рабочий стол Mac

Иностранные первичные ключи

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

Скажем, Фред (который работает в компании по аренде автомобилей) находится в базе данных компании под таблицей сотрудников. Через несколько лет он становится супервизором и попадает в список супервизоров.

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

Теперь вы можете определять внешние ключи в базах данных SQL

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

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

Делиться Делиться Твитнуть Эл. адрес Узнайте, как использовать операции проекта и выбора в SQL

Разберитесь с реляционными базами данных SQL, изучив операции Project и Selection с этими примерами.

Читать далее
Похожие темы
  • Программирование
  • Программирование
  • SQL
  • база данных
Об авторе Кадейша Кин(Опубликовано 21 статья)

Кадейша Кин (Kadeisha Kean) - разработчик программного обеспечения полного стека и автор статей по техническим / технологическим вопросам. У нее отличная способность упрощать некоторые из самых сложных технологических концепций; производить материал, понятный любому новичку в технологии. Она увлечена писательством, разработкой интересного программного обеспечения и путешествиями по миру (с помощью документальных фильмов).

Ещё от Kadeisha Kean

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!

Нажмите здесь, чтобы подписаться