Силата на чуждестранните ключове в релационни бази данни

Чуждестранен ключ отваря вратата към цял свят данни

Дизайнерите на бази данни използват широко ключовете при разработването на релационни бази данни. Сред най-честите от тези клавиши са първичните ключове и чуждите ключове. Външен ключ на база данни е поле в релационна таблица, която съвпада с колоната за първичен ключ на друга таблица. За да разберем как работи чужд ключ, нека да разгледаме по-отблизо идеята за релационна база данни.

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

В релационна база данни данните се съхраняват в таблици, съдържащи редове и колони, което улеснява търсенето и манипулирането. Съществува сериозна математика зад концепцията за релационна база данни (релационна алгебра, предложена от EF

Codd в IBM през 1970 г.), но това не е темата на тази статия.

За практически цели (и не-математици) релационна база данни съхранява "свързани" данни в редове и колони. Освен това - и тук става интересно - повечето бази данни са проектирани така, че данните в една таблица да имат достъп до данните в друга таблица. Тази способност за създаване на отношения между таблици е истинската мощ на релационна база данни.

Използване на чужди ключове

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

За да използвате често цитираната база данни на Northwinds, тук е извлечение от продуктовата таблица:

Извадката от таблицата за продуктите на Northwind Database
Идентификация на продукта Име на продукта CategoryId QuantityPerU Единична цена
1 Chai 1 10 кутии х 20 торби 18.00
2 Чанг 1 24 - 12 унция бутилки 19.00
3 Анасонен сироп 2 12 - 550 ml бутилки 10.00
4 Готвач на Антон Cajun подправка 2 Буркани от 48 до 6 унции 22.00
5 Готвач на Антон Гъмбо микс 2 36 кутии 21.35
6 Бъзънбери на баба се разпространи 2 Буркани от 12 до 8 унции 25.00
7 Органичните сушени круши на чичо Боб 7 12 - 1 lb pkgs. 30.00

Графата ProductID е първичният ключ на тази таблица. Тя придава уникален идентификационен номер на всеки продукт.

Тази таблица съдържа и колона за чужди ключове, CategoryID . Всеки продукт в таблицата с продуктите препраща към запис в таблицата с категории, която определя категорията на продукта.

Обърнете внимание на този откъс от таблицата с категории в базата данни:

Таблица с отрязъци за категориите в Northwind Database
CategoryId Име на категория описание
1 напитки Безалкохолни напитки, кафе, чай, бира и алергии
2 подправки Сладки и солени сосове, благоухания, спрейове и подправки
3 Confections Десерти, бонбони и сладкиши
5 Млечни продукти Сирена

Колоната CategoryID е първичният ключ на тази колона. (Няма чуждестранен ключ, защото няма нужда да има достъп до друга таблица.) Всеки чужд ключ в таблицата с продуктите се свързва с първичен ключ в таблицата с категории. Например, продуктът Chai получава категория "Напитки", а ароматът на анасон е в категорията "Подправки".

Този вид свързване създава безброй начини за използване и повторно използване на данните в релационна база данни.