Како креирати стране кључеве у Мицрософт СКЛ Серверу

Један од најважнијих концепата у бази података је стварање односа између табела базе података. Ови односи обезбеђују механизам за повезивање података сачуваних у више табела и њихово преузимање на ефикасан начин. Да бисте креирали везу између две табеле, морате навести инострани кључ у једној табели која се односи на колону у другој табели.

Табеле и везе базе података

Већ можете да знате да су базе података једноставно низи табела , слично ономе што можда већ користите у програму за рад са табелама , као што је Мицрософт Екцел. Заправо, чак можете претворити Екцелову таблицу у базу података. Међутим, где се базе података разликују од табела, када се ради о изградњи моћних односа између табела.

Размотримо, на примјер, базу података коју користи компанија за праћење информација о људским ресурсима. Та база података може имати таблицу под називом Запослени која садржи следеће податке за сваког члана особља компаније:

У овом примеру, ИД радника је јединствено генерисан интегер који се додељује сваком запосленом када се додају у базу података. ИД позиција је шифра посла који се користи за упућивање на положај запосленог у компанији. У овој шеми, запосленик може имати само једну позицију, али вишеструки (или без) запослени могу попунити сваку позицију. На пример, можда имате стотине запослених са позицијом "Благајна".

База може такође садржати таблицу позвану Позиције са следећим додатним информацијама о свакој позицији:

Поље ИД поља у овој табели је слично пољу ИД запосленика у табели Запослени - то је јединствено генерисан интегер који се креира када се позиција дода у базу података.

Када идемо да извучемо листу запослених из базе података, било би природно тражити име сваке особе и њихов назив. Међутим, ове информације се чувају у више табела базе података, тако да се могу преузети само помоћу ЈОИН упита који захтијева постојећи однос између табела.

Када погледате структуру табела, поље које дефинише однос је вероватно очигледно - Поље ИД поља. Сваки запослени може имати само једну позицију и та позиција се идентификује укључивањем ИД-а положаја са одговарајућег уноса табеле Позиције. Поред тога што је примарни кључ за таблицу Позиције, у овом примеру поље Поље ИД-а је такође инострани кључ из табеле Запослени у табелу Позиције. База може тада користити ово поље за корелацију информација из више табела и осигурати да све измјене или допуне у бази података настављају да спроводе референтни интегритет .

Када идентификујете инострани кључ, можете наставити и извлачити жељене информације из базе података помоћу сљедећег упита:

СЕЛЕЦТ ФирстНаме, ЛастНаме, Наслов ФРОМ Запослени ИННЕР ЈОИН Поситионс ОН Емплоиеес.ПоситионИД = Поситионс.ПоситионИД

Креирање страних кључева у СКЛ Серверу

Технички, не морате експлицитно да дефинишете однос како бисте могли обавити упите као што је горе наведено. Међутим, ако експлицитно дефинишете везу помоћу ограничења за инострани кључ, база података ће моћи да изврши неке кућне послове за вас:

Ево како ћете креирати инострани кључ у СКЛ Серверу:

АЛТЕР ТАБЛЕ Запослени АДД СТРАНИ КЕИ (ПоситионИД) РЕФЕРЕНЦЕ Позиције (ПоситионИД)

Такође можете креирати инострани кључ када креирате табелу додавањем клаузуле:

СТРАНИ КЉУЧИ РЕФЕРЕНЦЕ Позиције (ПоситионИД)

до краја дефиниције ступца за ступац страног кључа.