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

Внешний ключ открывает дверь в целый мир данных

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

Некоторые основы реляционных баз данных

В реляционной базе данных данные хранятся в таблицах, содержащих строки и столбцы, что упрощает поиск и управление. За концепцией реляционной базы данных стоит серьезная математика (реляционная алгебра, предложенная Э. Ф. Коддом в IBM в 1970 году), но это не тема данной статьи.

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

Использование иностранных ключей

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

Чтобы использовать обычно цитируемую базу данных Northwinds, вот выдержка из таблицы Product:

Код товара
Наименование товара
CategoryID
QuantityPerU
Цена за единицу








1 Чай 1 10 коробок по 20 сумок 18,00
2 Chang 1 бутылки на 24 – 12 унций 19,00
3 Сироп анисовый 2 12 – 550 мл флаконы 10,00
4 Приправа шеф-повара Антона Каджуна 2 банки на 48 – 6 унций 22,00
5 Шеф-повар Антон Гамбо Микс 2 36 коробок 21,35
6 Распространение бабушкины ягоды черники 2 банки на 12 – 8 унций 25,00
7 Органические сушеные груши дяди Боба 7 12 – 1 фунт фунтов. 30,00

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

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

Обратите внимание на этот отрывок из таблицы категорий базы данных:

CategoryID
CategoryName
Описание





1 Напитки Безалкогольные напитки, кофе, чай, пиво и эль
2 Приправы Сладкие и соленые соусы, приправы, спреды и приправы
3 Кондитерские изделия Десерты, конфеты и сладкое печенье
5 Молочные продукты Cheeses

Столбец CategoryID является первичным ключом этого столбца. (Он не имеет внешнего ключа, поскольку ему не требуется доступ к другой таблице.) Каждый внешний ключ в таблице Product ссылается на первичный ключ в таблице Categories. Например, продукту Чай назначена категория «Напитки», в то время как сироп анисовый находится в категории «Приправы».

Этот вид связи создает множество способов использовать и повторно использовать данные в реляционной базе данных.

Оцените статью
Solutics.ru
Добавить комментарий