Разница между первичным ключом и внешним ключом
Ключевые различия между первичным ключом и внешним ключом
- Ограничение первичного ключа — это столбец, который уникально идентифицирует каждую строку в таблице системы управления реляционной базой данных, а внешний ключ — это столбец, который создает связь между двумя таблицами.
- Первичный ключ никогда не принимает нулевые значения, тогда как внешний ключ может принимать несколько нулевых значений.
- В таблице может быть только один первичный ключ, а в таблице может быть несколько внешних ключей.
- Значение первичного ключа нельзя удалить из родительской таблицы, тогда как значение внешнего ключа можно удалить из дочерней таблицы.
- Никакие две строки не могут иметь одинаковые значения первичного ключа; с другой стороны, внешний ключ может содержать повторяющиеся значения.
- Нет ограничений на вставку значений в столбец таблицы при вставке любого значения в таблицу внешнего ключа; убедитесь, что значение присутствует в столбце первичного ключа.
Здесь я проанализировал разницу между первичным ключом и внешним ключом и всесторонне оценю их плюсы и минусы.
Что такое первичный ключ?
Ограничение первичного ключа — это столбец или группа столбцов, которые однозначно идентифицируют каждую строку в таблице системы управления реляционной базой данных. Оно не может быть дубликатом, то есть одно и то же значение не должно появляться в таблице более одного раза.
Таблица не может иметь более одного первичного ключа. первичный ключ может быть определен на уровне столбца или таблицы. Если вы создаете составной первичный ключ, его следует определить на уровне таблицы.
Пример первичного ключа
Синтаксис:
Ниже приведен синтаксис первичного ключа:
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., First Name, Last Name и Email. StudID выбран в качестве первичного ключа, поскольку он может однозначно идентифицировать другие строки в таблице.
Зачем использовать первичный ключ?
За годы работы с системами баз данных я заметил следующие недостатки и преимущества использования первичного ключа:
- Основная цель первичного ключа — идентифицировать каждую запись в таблице базы данных.
- Вы можете использовать первичный ключ, если не разрешаете кому-либо вводить нулевые значения.
- Если вы удалите или обновите записи, будет предпринято указанное вами действие для обеспечения целостности данных.
- Выполните операцию ограничения, чтобы отклонить операцию удаления или обновления родительской таблицы.
- При физической организации таблицы СУБД данные организуются в последовательность кластеризованных индексов.
Что такое внешний ключ?
Внешний ключ — это столбец, который создает связь между двумя таблицами. Цель внешнего ключа — поддерживать целостность данных и обеспечивать навигацию между двумя разными экземплярами объекта. Он действует как перекрестная ссылка между двумя таблицами, поскольку ссылается на первичный ключ другой таблицы. Каждое отношение в базе данных должно поддерживаться внешним ключом.
Пример внешнего ключа
Синтаксис:
Ниже приведен синтаксис внешнего ключа:
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, | Первичный ключ никогда не принимает нулевые значения. | Внешний ключ может принимать несколько нулевых значений. |
Индексирование | Первичный ключ представляет собой кластеризованный индекс, а данные в таблице СУБД физически организованы в последовательности кластеризованного индекса. | Внешний ключ не может автоматически создать индекс, кластеризованный или некластеризованный. |
Количество | В таблице может быть один первичный ключ. | В таблице может быть несколько внешних ключей. |
удаление | Значение первичного ключа не может быть удалено из родительской таблицы. | Значение внешнего ключа можно удалить из дочерней таблицы. |
Временный стол | Вы можете неявно определить первичный ключ во временных таблицах. | Вы не можете определить внешние ключи в локальных или глобальных временных таблицах. |
Родство | Первичный ключ — это кластеризованный индекс. | По умолчанию это не кластеризованный индекс. |
дупликация | Никакие две строки не могут иметь одинаковые значения первичного ключа. | Внешний ключ может содержать повторяющиеся значения. |
Вносимые | Нет ограничений на вставку значений в столбец таблицы. | При вставке любого значения в таблицу внешнего ключа убедитесь, что это значение присутствует в столбце первичного ключа. |
Как выбрать между первичным ключом и внешним ключом
Судя по тому, что мы видели, первичные ключи однозначно идентифицируют записи таблицы, а внешние ключи связывают эти записи между таблицами, что критически важно для поддержания целостности данных и облегчения эффективного поиска данных.