Ключевое различие между внешним ключом и первичным ключом заключается в том, что внешний ключ - это столбец или набор столбцов, которые ссылаются на первичный ключ или ключ-кандидат другой таблицы, в то время как первичный ключ - это столбец или набор столбцов. который можно использовать для уникальной идентификации строки в таблице.
Столбец или набор столбцов, который можно использовать для идентификации или доступа к строке или набору строк в базе данных, называется ключом. Первичный ключ в реляционной базе данных - это комбинация столбцов в таблице, которые однозначно идентифицируют строку таблицы. Внешний ключ в реляционной базе данных - это поле в таблице, которое соответствует первичному ключу другой таблицы. Внешний ключ используется для перекрестных ссылок на таблицы.
Что такое внешний ключ?
Внешний ключ - это реляционное ограничение между двумя таблицами. Он идентифицирует столбец или набор столбцов в одной таблице, называемой ссылочной таблицей, которая ссылается на набор столбцов в другой таблице, называемой ссылочной таблицей. Внешний ключ или столбцы в ссылочной таблице должны быть первичным ключом или ключом-кандидатом (ключом, который можно использовать в качестве первичного ключа) в ссылочной таблице. Более того, внешние ключи позволяют связывать данные между несколькими таблицами. Поэтому внешний ключ не может содержать значения, которых нет в таблице, на которую он ссылается. Затем ссылка, предоставленная внешним ключом, помогает связать информацию в нескольких таблицах, и это станет важным для нормализованных баз данных. Несколько строк в ссылочной таблице могут ссылаться на одну строку в ссылочной таблице.
Рисунок 01: Сопоставление внешнего ключа
В стандарте ANSI SQL ограничение FOREIGN KEY определяет внешние ключи. Кроме того, можно определить внешние ключи при создании самой таблицы. Таблица может иметь несколько внешних ключей, и они могут ссылаться на разные таблицы.
Что такое первичный ключ?
Первичный ключ - это столбец или комбинация столбцов, однозначно определяющая строку в таблице реляционной базы данных. Таблица может иметь не более одного первичного ключа. Первичный ключ применяет неявное ограничение NOT NULL. Следовательно, столбец с первичным ключом не может иметь в нем значений NULL. Первичный ключ может быть обычным атрибутом в таблице, который гарантированно будет уникальным, например, номер социального страхования, или уникальным значением, сгенерированным системой управления базой данных, например глобальным уникальным идентификатором (GUID) в Microsoft SQL Server.
Рисунок 02: Первичный ключ
Кроме того, ограничение PRIMARY KEY в стандарте ANSI SQL определяет первичные ключи. Также возможно определить первичный ключ при создании таблицы. Кроме того, SQL позволяет составлять первичный ключ из одного или нескольких столбцов, и каждый столбец, включенный в первичный ключ, неявно определяется как NOT NULL. Но некоторые системы управления базами данных требуют, чтобы столбцы первичного ключа были явно НЕ NULL.
В чем разница между внешним ключом и первичным ключом?
Внешний ключ против первичного ключа |
|
Внешний ключ - это столбец или группа столбцов в таблице реляционной базы данных, которая обеспечивает связь между данными в двух таблицах. | Первичный ключ - это специальный столбец таблицы реляционной базы данных или комбинация нескольких столбцов, которая позволяет однозначно идентифицировать все записи таблицы. |
NULL | |
Внешний ключ принимает значение NULL. | Значение первичного ключа не может быть NULL. |
Количество клавиш | |
Таблица может иметь несколько внешних ключей. | Таблица может иметь только один первичный ключ. |
Дублирование | |
Кортежи могут иметь повторяющееся значение для атрибута внешнего ключа. | Два кортежа в отношении не могут иметь повторяющихся значений атрибута первичного ключа. |
Сводка – внешний ключ против первичного ключа
Разница между внешним ключом и первичным ключом заключается в том, что внешний ключ - это столбец или набор столбцов, которые ссылаются на первичный ключ или ключ-кандидат другой таблицы, в то время как первичный ключ - это столбец или набор столбцов, которые может использоваться для уникальной идентификации строки в таблице.