Как да създадете чужди ключове в Microsoft SQL Server

Едно от най-важните понятия в базите данни е създаването на връзки между таблиците на базата данни. Тези взаимоотношения осигуряват механизъм за свързване на данни, съхранявани в множество таблици, и за извличането им по ефективен начин. За да създадете връзка между две таблици, трябва да посочите чужд ключ в една таблица, която препраща към колона в друга таблица.

Бази данни и отношения

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

Обмислете, например, база данни, използвана от компания за проследяване на информацията за човешките ресурси. Тази база данни може да има таблица, наречена "Служители", която съдържа следната информация за всеки член на персонала на компанията:

В този пример ID на служителя е уникално генерирано цяло число, което е присвоено на всеки служител, когато се добавят към базата данни. Идентификационният номер на позицията е код на работа, използван за посочване на позицията на служителя в компанията. В тази схема служител може да има само една длъжност, но множество (или не) служители могат да заемат всяка длъжност. Например, може да имате стотици служители с позиция "Каса".

Базата данни може да съдържа и таблица, наречена Позиции, със следната допълнителна информация за всяка позиция:

Полето ID на позицията в тази таблица е подобно на полето Employee ID в таблицата Employees - това е уникално генерирано цяло число, което се създава при добавяне на позиция към базата данни.

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

Когато погледнете структурата на масите, полето, дефиниращо връзката, вероятно е очевидно - полето ID Position. Всеки служител може да има само една позиция и тази позиция се идентифицира чрез включване на идентификационния номер на позицията от съответното вписване в таблицата "Позиции". В допълнение към това, че е основен ключ за таблицата Позиции, в този пример полето за Позиция на позицията е също чужд ключ от таблицата "Служители" до таблицата "Позиции". След това базата данни може да използва това поле за корелация на информацията от множество таблици и да гарантира, че всички промени или допълнения към базата данни продължават да налагат референтна цялост .

След като идентифицирате чуждия ключ, можете да продължите и да изтеглите желаната информация от базата данни, като използвате следната заявка:

SELECT FirstName, LastName, Title FROM Служители INNER JOIN Позиции ON Employees.PositionID = Positions.PositionID

Създаване на чужди ключове в SQL Server

Технически не е нужно да дефинирате изрично връзката, за да можете да извършвате заявки като горепосочената. Ако обаче изрично дефинирате връзката, като използвате ограничения за чужди ключове, базата данни ще може да изпълнява някои дейности за домакинството ви:

Ето как ще създадете чуждия ключ в SQL Server:

ALTER TABLE Служители Добавете чужд ключ (PositionID) РЕФЕРЕНЦИИ Позиции (PositionID)

Можете също така да създадете чужд ключ, когато създавате таблица, като добавите клаузата:

ВЪНШНИ КЛЮЧОВИ РЕФЕРЕНЦИИ Позиции (PositionID)

до края на дефиницията на колоната за колоната с чужди ключове.