Что такое внешний ключ базы данных? Учебник для новичков

Эта статья написана Бритни Паркер, писателем из Girls Write Tech, специализирующейся на написании технических материалов. Они стремятся побудить больше женщин-разработчиков делиться своими знаниями.


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

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

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

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

Мы узнаем:

  • Что такое внешний ключ в базе данных?
  • Ограничение FK
  • Внешний ключ против первичного ключа
  • Внешний ключ против составного ключа
  • Ссылочные действия внешнего ключа
  • Внешний ключи в SQL и MySQL
  • Что изучать дальше

Изучите фундаментальные концепции баз данных

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

Основы проектирования баз данных для инженеров-программистов

Что такое Внешний ключ в базе данных?

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

Исходная таблица называется родительской таблицей или ссылочной таблицей, а ссылочная таблица с внешним ключом — называется дочерней таблицей .

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

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

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

Допустим, у нас есть две таблицы с именами customer и заказ . Мы можем использовать внешний ключ для создания связи между ними. В таблице orders мы создаем ключ, который ссылается на клиента (т.е. CUSTOMER_ID ) в другой таблице.

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

Примечание. Чтобы вставить запись в таблицу порядка, необходимо выполнить ограничение внешнего ключа.

Если мы попытаемся ввести в CUSTOMER_ID , используя данные, отсутствующие в таблице клиентов, мы нарушили целостность ссылочных полномочий таблицы.

Ограничение FK

Точное соединение данных является простым директива. Интеграция программного обеспечения и возможность безопасного обмена данными между приложениями зависят от целостности данных и взаимоотношений с базами данных.

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

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

  • Cascade: при удалении значений первичного ключа соответствующий столбец в дочерней таблице удаляется

  • Установить значение null: когда указанная строка удаляется/изменяется, ссылочные значения во внешнем ключе установлено значение null

  • Restrict: Значения в родительской таблице не могут быть удалены, если на них ссылается внешний ключ.

  • Установить по умолчанию: значения внешнего ключа в дочерней таблице устанавливаются на значение по умолчанию, если родительская таблица изменена/удалена

Когда дело доходит до именования ограничений внешнего ключа, мы должны соблюдать следующие общие правила:

  • Используется значение символа CONSTRAINT , и оно должно быть уникальным в базе данных.
  • Для таблиц InnoDB имя ограничения генерируется автоматически, если условие символа ограничения не определено
  • Для таблицы NDB s используется значение FOREIGN KEY index_name , или имя ограничения создается автоматически.

Сравнение внешнего ключа и первичного ключа

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

Внешние ключи используются больше как ссылка, чем как уникальный идентификатор конкретной строки или запись.

Хотя в одной таблице или реляционной базе данных можно использовать несколько внешних ключей, для каждой базы данных разрешен только один первичный ключ. Для внешних ключей разрешены повторяющиеся значения, а также для значений NULL.

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

Продолжайте обучение.

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

Основы проектирования баз данных для инженеров-программистов

Внешний ключ против составного ключа

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

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

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

Ссылочные действия внешнего ключа

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

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

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

Совет. Рекомендации указывают на использование ограничения NOT NULL при создании внешних ключей для сохранения структурных целостность базы данных.

Создание структуры данных, которая является гибкой и достаточно расширяемой для долгосрочного использования, может стать все труднее по мере роста сложности и объема данных. Добавление неструктурированных данных может легко привести к ошибкам.

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

Внешние ключи в SQL и MySQL

Давайте взглянем на синтаксис, использующий SQL и MySQL. В следующем примере создается FOREIGN KEY в столбце «PersonID».

Подробнее о различных типах баз данных здесь

MySQL

  СОЗДАТЬ ТАБЛИЧНЫЕ заказы (OrderID int NOT NULL, OrderNumber int NOT NULL, PersonID int, PRIMARY KEY (OrderID), FOREIGN KEY (PersonID)  ССЫЛКИ Лица (PersonID));  

SQL Server

  СОЗДАТЬ ТАБЛИЧНЫЕ заказы (OrderID  int NOT NULL PRIMARY KEY, OrderNumber int NOT NULL, PersonID int FOREIGN KEY REFERENCES Persons (PersonID));  

Следующий синтаксис позволяет нам назвать ограничение FOREIGN KEY:

  СОЗДАТЬ ТАБЛИЧНЫЕ заказы (OrderID int NOT NULL, OrderNumber int NOT NULL, PersonID int, PRIMARY KEY (OrderID), CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID) ССЫЛКИ Лица (PersonID));  

Реальный пример SQL

А теперь давайте более конкретно. Ниже таблица Actors является таблицей, на которую указывает ссылка, и называется родительской таблицей. Здесь ссылающаяся таблица DigitalAssets является дочерней таблицей.

Мы объявляем столбец как внешний ключ в дочерней таблице, только если столбец имеет индекс, определенный на Это. Если столбец не имеет индекса, его нельзя использовать в качестве внешнего ключа.

В нашем примере мы изменяем наши DigitalAssets и устанавливаем ActorID должен быть внешним ключом следующим образом:

  ALTER TABLE DigitalAssetsADD FOREIGN KEY (ActorId) REFERENCES Actors (Id);   

Теперь, если мы добавим строку в таблицу DigitalAssets с идентификатором актера, которого нет в Actors таблица, выдается сообщение об ошибке:

  INSERT INTO DigitalAssetsVALUES ("www.dummy. url "," instagram "," 2030-01-01 00:00:00 ", 100);  

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

Идентификатор менеджера будет ссылаться на сотрудника ID в том же столбце, и ID сотрудника будет действовать как внешний ключ.

Что нужно узнать дальше

Поздравляю! Теперь вы должны иметь хорошее представление о том, как использовать внешние ключи в ваших базах данных, чтобы сделать их более полезными и безопасными. Еще есть чему поучиться. Затем вы должны проверить:

  • Отбросить минусы внешнего ключа traints
  • Внешний ключ SQL в таблице изменений
  • Триггеры
  • Внешние ключи с MariaDB
  • и др.

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

Если у вас уже есть некоторый опыт работы с базами данных, обучающий курс An Introductory Руководство по SQL — еще один важный шаг. Вы изучите основы SQL, такие как создание базы данных, вставка, запрос и обновление данных.

Удачного обучения!

Продолжить чтение о базах данных и SQL

  • Что такое запрос к базе данных? Объяснение запросов SQL и NoSQL
  • Что такое соединения SQL? Объяснение типов соединений SQL
  • Что такое схемы базы данных? 5-минутное руководство с примерами
Оцените статью
nanomode.ru
Добавить комментарий