Прежде чем изучать разницу между первичным ключом и внешним ключом, давайте узнаем:
Что такое ключи?
Ключи - это атрибут, который помогает вам идентифицировать строку (кортеж) в отношении (таблице). Они позволяют найти взаимосвязь между двумя таблицами. Ключи помогают однозначно идентифицировать строку в таблице по комбинации одного или нескольких столбцов в этой таблице. Ключ базы данных также полезен для поиска уникальной записи или строки из таблицы.
Что такое отношения с базой данных?
Отношения с базой данных - это ассоциации между одной или несколькими таблицами, созданными с помощью операторов соединения. Он используется для эффективного извлечения данных из базы данных. В основном существует три типа отношений: 1) один-к-одному, 2) один-ко-многим, 3) многие-ко-многим.
Что такое первичный ключ?
Ограничение первичного ключа - это столбец или группа столбцов, которые однозначно идентифицируют каждую строку в таблице системы управления реляционной базой данных. Это не может быть дубликат, то есть одно и то же значение не должно появляться в таблице более одного раза.
Таблица может иметь более одного первичного ключа. Первичный ключ может быть определен на уровне столбца или таблицы. Если вы создаете составной первичный ключ, он должен быть определен на уровне таблицы.
Что такое внешний ключ?
Внешний ключ - это столбец, который создает связь между двумя таблицами. Назначение внешнего ключа - поддерживать целостность данных и обеспечивать навигацию между двумя разными экземплярами объекта. Он действует как перекрестная ссылка между двумя таблицами, поскольку ссылается на первичный ключ другой таблицы. Каждая связь в базе данных должна поддерживаться внешним ключом.
КЛЮЧЕВЫЕ ОТЛИЧИЯ:
- Ограничение первичного ключа - это столбец, который однозначно идентифицирует каждую строку в таблице системы управления реляционными базами данных, а внешний ключ - это столбец, который создает связь между двумя таблицами.
- Первичный ключ никогда не принимает значения NULL, тогда как внешний ключ может принимать несколько значений NULL.
- В таблице может быть только один первичный ключ, а в таблице может быть несколько внешних ключей.
- Значение первичного ключа нельзя удалить из родительской таблицы, тогда как значение внешнего ключа можно удалить из дочерней таблицы.
- Никакие две строки не могут иметь одинаковые значения для первичного ключа, с другой стороны, внешний ключ может содержать повторяющиеся значения.
- Нет ограничений на вставку значений в столбец таблицы при вставке любого значения в таблицу внешнего ключа, убедитесь, что значение присутствует в столбце первичного ключа.
Зачем использовать первичный ключ?
Вот минусы / преимущества использования первичного ключа:
- Основная цель первичного ключа - идентифицировать каждую запись в таблице базы данных.
- Вы можете использовать первичный ключ, если не разрешаете кому-либо вводить нулевые значения.
- Если вы удалите или обновите записи, будет предпринято указанное вами действие для обеспечения целостности данных.
- Выполните операцию ограничения, чтобы отклонить операцию удаления или обновления для родительской таблицы.
- Когда вы физически организуете таблицу СУБД, данные упорядочиваются в виде последовательности кластеризованного индекса.
Зачем использовать внешний ключ?
Вот важные причины использования внешнего ключа:
- Внешние ключи помогают переносить объекты с использованием первичного ключа из родительской таблицы.
- Внешний ключ позволяет связать две или более таблиц вместе.
- Это делает данные вашей базы данных непротиворечивыми.
- Внешний ключ может использоваться для сопоставления столбца или комбинации столбцов с первичным ключом в родительской таблице.
- Ограничение внешнего ключа SQL используется для обеспечения соответствия ссылочной целостности родительских данных значениям в дочерней таблице.
Пример первичного ключа
Синтаксис:
Ниже приведен синтаксис первичного ключа:
CREATE TABLE(Column1 datatype,Column2 datatype, PRIMARY KEY (Column-Name).);
Здесь,
- Table_Name - это имя таблицы, которую вы должны создать.
- Column_Name - это имя столбца, имеющего первичный ключ.
Пример:
StudID | Ролл Нет | Имя | Фамилия | Электронное письмо |
---|---|---|---|---|
1 | 11 | Том | Цена | Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. |
2 | 12 | Ник | Райт | Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. |
3 | 13 | Дана | Натан | Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. |
В приведенном выше примере мы создали таблицу студентов с такими столбцами, как StudID, Roll No, First Name, Last Name и Email. StudID выбран в качестве первичного ключа, поскольку он может однозначно идентифицировать другие строки в таблице.
Пример внешнего ключа
Синтаксис:
Ниже приведен синтаксис внешнего ключа:
CREATE TABLE