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

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

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

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

Что такое первичный ключ?

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

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

Пример первичного ключа

Синтаксис:

Ниже приведен синтаксис первичного ключа:

CREATE TABLE <Table-Name>
(
Column1 datatype,
Column2 datatype,  PRIMARY KEY (Column-Name)
.
);    

Здесь,

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

Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.

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

В приведенном выше примере мы создали таблицу учащихся с такими столбцами, как StudID, Roll No., Имя, Фамилия и E.mail. StudID выбран в качестве первичного ключа, поскольку он может однозначно идентифицировать другие строки в таблице.

Зачем использовать первичный ключ?

За годы работы с системами баз данных я заметил следующие недостатки и преимущества использования первичного ключа:

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

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

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

Пример внешнего ключа

Синтаксис:

Ниже приведен синтаксис внешнего ключа:

CREATE TABLE <Table Name>( 
column1    datatype,
column2    datatype,  
constraint (name of constraint) 
FOREIGN KEY [column1, column2...] 
REFERENCES [primary key table name] (List of primary key table column) ...);

Здесь,

  • Параметр Имя таблицы указывает имя таблицы, которую вы собираетесь создать.
  • Параметры столбец1, столбец2… обозначают столбцы, которые необходимо добавить в таблицу.
  • Ограничение обозначает имя создаваемого вами ограничения.
  • Ссылки указывают на таблицу с первичным ключом.

Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.

Код отдела Название отдела
001 Наука
002 Английский
005 Компьютер
Идентификатор учителя Fимя Имя
B002 Давид Сигнализатор
B017 Сара Джозеф
B009 Майк Брантон

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

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

Идентификатор учителя Код отдела Fимя Имя
B002 002 Давид Сигнализатор
B017 002 Сара Джозеф
B009 001 Майк Брантон

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

Зачем использовать внешний ключ?

Из того, что я видел, вот важные причины для реализации внешних ключей:

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

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

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

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

Как выбрать между первичным ключом и внешним ключом

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