Внешние ключи позволяют администраторам баз данных легко идентифицировать различные соединения, существующие в системе управления базой данных SQL.
SQL выполняет математические операции с данными в системе управления базами данных. Эти базы данных содержат разные таблицы, каждая из которых хранит данные об определенной сущности. Если у вас есть база данных по аренде автомобилей, сущностью (или таблицей) в этой базе данных будут клиенты (в которых будут храниться все личные данные о каждом клиенте).
Эти таблицы базы данных содержат строки и столбцы, где каждая строка содержит запись, а каждый столбец содержит данные, относящиеся к атрибутам.
В системе управления базами данных каждая запись (или строка) должна быть уникальной.
Первичные ключи
Хотя оговорено, что каждая запись в таблице должна быть отдельной, это не всегда так. Продолжая пример с базой данных по аренде автомобилей, если в базе данных есть два клиента, каждый из которых иметь имя «Джон Браун», от Джона Брауна можно было ожидать, что он вернет Mercedes-Benz, которого он не отдал. арендная плата.
Создание первичного ключа снизит этот риск. В системе управления базой данных SQL первичный ключ - это уникальный идентификатор, который отличает одну запись от другой.
Следовательно, каждая запись в системе управления базами данных SQL должна иметь первичный ключ.
Использование первичных ключей в базе данных
Чтобы включить первичные ключи в систему управления базами данных с использованием SQL, вы можете просто добавить его как обычный атрибут при создании новой таблицы. Таким образом, таблица клиентов будет содержать четыре атрибута (или столбца):
- CarOwnerID (в котором будет храниться первичный ключ)
- Имя
- Фамилия
- Телефонный номер
Связанный: Как создать таблицу в SQL
Теперь каждая запись о клиенте, попадающая в базу данных, будет иметь уникальный идентификационный номер, а также имя, фамилию и номер телефона. Номер телефона недостаточно уникален, чтобы быть первичным ключом, потому что, хотя он уникален для одного человека за раз, человек может легко изменить свой номер, то есть теперь он будет принадлежать кому-то другому.
Запись с примером первичного ключа
/ * создает новую запись в таблице клиентов * /
ВСТАВИТЬ ЦЕННОСТИ клиентов
('0004',
'Джон',
'Коричневый',
'111-999-5555');
Приведенный выше код SQL добавит новую запись к уже существующей Клиенты Таблица. В таблице ниже показана новая таблица клиентов с двумя записями Джона Брауна.
Внешний ключ
Теперь у вас есть первичные ключи, которые однозначно отличают одного арендатора автомобиля от другого. Единственная проблема в том, что в базе данных нет реальной связи между каждым Джоном Брауном и машиной, которую он арендует.
Следовательно, возможность ошибиться все же существует. Здесь в игру вступают внешние ключи. Использование первичного ключа для решения проблемы неоднозначности владения возможно только в том случае, если первичный ключ дублирует внешний ключ.
Что такое внешний ключ?
В системе управления базой данных SQL внешний ключ - это уникальный идентификатор или комбинация уникальных идентификаторов, которые соединяют две или более таблиц в базе данных.
Из четырех существующих систем управления базами данных SQL наиболее популярной является система управления реляционными базами данных. Решая, какая таблица в реляционной базе данных должна иметь внешний ключ, вы должны сначала определить, какая таблица является субъектом, а какая - объектом в их отношениях.
Возвращаясь к базе данных по аренде автомобилей, чтобы связать каждого клиента с нужным автомобилем, вам нужно понять, что клиент (субъект) арендует автомобиль (объект). Следовательно, внешний ключ должен быть в таблице cars.
Код SQL, который генерирует таблицу с внешним ключом, немного отличается от нормы.
Создание таблицы с примером внешнего ключа
/ * создает новую таблицу автомобилей в базе данных по аренде автомобилей * /
СОЗДАТЬ ТАБЛИЦЫ Машины
(
LicenseNumber varchar (30) NOT NULL PRIMARY KEY,
CarType varchar (30) NOT NULL,
CustomerID varchar (30) ИНОСТРАННЫЕ КЛЮЧЕВЫЕ ССЫЛКИ Клиенты (CustomerID)
);
Как вы можете видеть в приведенном выше коде, внешний ключ должен быть явно идентифицирован как таковой вместе со ссылкой на первичный ключ, который подключается к новой таблице.
Связанный: Шпаргалка по основным командам SQL для начинающих
Чтобы добавить запись в новую таблицу, вам нужно убедиться, что значение в поле внешнего ключа совпадает со значением в поле первичного ключа исходной таблицы.
Пример добавления записи с внешним ключом
/ * создаёт новую запись в таблице cars * /
ВСТАВИТЬ ЗНАЧЕНИЯ
('100012',
'Мерседес Бенц',
'0004');
Приведенный выше код создает новую запись в новом Легковые автомобили table, давая следующий результат.
Таблица автомобилей
Из приведенной выше таблицы вы можете определить того Джона Брауна, который арендует Mercedes-Benz, по внешнему ключу, указанному в записи.
Предварительные внешние ключи
Есть два других способа использовать внешний ключ в базе данных.
Если вы посмотрите на определение внешнего ключа, приведенное выше, то обнаружите, что в нем говорится, что внешний ключ может быть уникальным идентификатором или комбинацией уникальных идентификаторов.
Вернувшись к примеру с базой данных по аренде автомобилей, вы увидите, что создание новой записи (той же машины) каждый раз, когда клиент арендует эту машину, сводит на нет цель Легковые автомобили Таблица. Если автомобили выставлены на продажу и проданы одному покупателю один раз, существующая база данных идеальна; но, учитывая, что автомобили сдаются в аренду, есть лучший способ представить эти данные.
Составные ключи
Составной ключ имеет два или более уникальных идентификатора. В реляционной базе данных будут случаи, когда использование одного внешнего ключа не будет в достаточной степени отражать отношения, существующие в этой базе данных.
В примере с прокатом автомобилей наиболее практичным подходом является создание новой таблицы, в которой хранятся данные об аренде. Чтобы информация в таблице аренды автомобилей была полезной, она должна подключаться как к таблице автомобилей, так и к таблицам клиентов.
Создание таблицы с составными внешними ключами
/ * создает таблицу CarRental в базе данных по аренде автомобилей * /
СОЗДАТЬ СТОЛ CarRental
(
DateRented DATE NOT NULL,
LicenseNumber varchar (30) NOT NULL ИНОСТРАННЫЕ КЛЮЧЕВЫЕ ССЫЛКИ Автомобили (LicenseNumber),
CustomerID varchar (30) NOT NULL ИНОСТРАННЫЕ КЛЮЧЕВЫЕ ССЫЛКИ Клиенты (CustomerID),
ПЕРВИЧНЫЙ КЛЮЧ (DateRented, LicenseNumber, CustomerID)
);
Приведенный выше код отражает важный момент; хотя таблица в базе данных SQL может иметь более одного внешнего ключа, она может иметь только один первичный ключ. Это потому, что должен быть только один уникальный способ идентифицировать запись.
Чтобы получить уникальный ключ, необходимо объединить все три атрибута в таблице. Клиент может арендовать более одного автомобиля в один день (так Пользовательский ИД а также DateRented не лучшая комбинация) несколько клиентов могут арендовать один и тот же автомобиль в один день (так Лицензионный номер а также DateRented не лучшая комбинация).
Однако создание составного ключа, который сообщает, какой клиент, какая машина и в какой день делает отличный уникальный ключ. Этот уникальный ключ представляет собой составной внешний ключ и составной первичный ключ.
Иностранные первичные ключи
Ах да, внешние первичные ключи выходят. Хотя официального названия для него нет, внешний ключ также может быть первичным ключом в той же таблице. Это происходит, когда вы создаете новую таблицу, содержащую специализированные данные о существующей сущности (или записи в другой таблице).
Скажем, Фред (который работает в компании по аренде автомобилей) находится в базе данных компании под таблицей сотрудников. Через несколько лет он становится супервизором и попадает в список супервизоров.
Фред по-прежнему работает и будет иметь тот же идентификационный номер. Итак, идентификатор сотрудника Фреда теперь находится в таблице супервизора как внешний ключ, который также станет первичным. ключ в этой таблице (поскольку нет смысла создавать новый идентификационный номер для Фреда теперь, когда он является супервизором).
Теперь вы можете определять внешние ключи в базах данных SQL
Внешние ключи соединяют разные таблицы в базе данных SQL. Из этой статьи вы узнаете, что такое внешний ключ, как он работает и почему важно иметь его в базе данных. Вы также понимаете основные и даже более сложные формы внешних ключей.
Если вы считаете, что внешние ключи интересны, у вас будет рабочий день, когда вы начнете использовать операции проекта и выбора для запроса своих баз данных SQL.
Разберитесь с реляционными базами данных SQL, изучив операции Project и Selection с этими примерами.
Читать далее
- Программирование
- Программирование
- SQL
- база данных
Кадейша Кин (Kadeisha Kean) - разработчик программного обеспечения полного стека и автор статей по техническим / технологическим вопросам. У нее отличная способность упрощать некоторые из самых сложных технологических концепций; производство материала, понятного любому новичку в технологии. Она увлечена писательством, разработкой интересного программного обеспечения и путешествиями по миру (с помощью документальных фильмов).
Подписывайтесь на нашу новостную рассылку
Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!
Еще один шаг…!
Пожалуйста, подтвердите свой адрес электронной почты в электронном письме, которое мы вам только что отправили.