Увод у страни кључ у СКЛ-у

Страни кључ је ограничење у СКЛ-у. Користи се за повезивање две табеле. Страни кључ у једној табели упућује на примарни кључ у другој табели. Страни кључ се може користити за осигуравање да ред у једној табели има одговарајуће редове / редове у другој табели. Референтна таблица се зове матична таблица, а таблица са страним кључем позната је као надређена таблица. Овај однос родитељ-дете спроводи правило које је познато и као Референцијални интегритет. Референтни интегритет је својство података који наводе да су све његове референце валидне.

Дакле, ако у бази података имате односе с бројем 1 на мноштво или мноштво, страни кључеви ће бити врло корисни. Дјелује као унакрсна референца између двије таблице (надређене_реде и матичне_табеле) јер се односи на примарни кључ друге таблице. На тај начин се успоставља веза између матичног_ матичног и матичног_табла.

Синтакса

Стварање нове табеле са страним кључем захтева ЦРЕАТЕ ТАБЛЕ дозволу у бази података

CREATE TABLE child_Table
(
column_1 datatype ( NULL |NOT NULL ),
column_2 datatype ( NULL |NOT NULL ),

CONSTRAINT F_key
FOREIGN KEY (child_column1, child_column2, … child_column_n)
REFERENCES parent_Table (parent_column1, parent_column2, … parent_column_n)
( ON DELETE ( NO ACTION |CASCADE |SET NULL |SET DEFAULT ) ) ( ON UPDATE ( NO ACTION |CASCADE |SET NULL |SET DEFAULT ) ) );

  • Цхилд_Табле је назив табеле коју ћемо креирати
  • колона_1, колона_2- ступци који се додају у табелу.
  • Ф_кеи - Ово је ограничење страног кључа.
  • цхилд_цолумн1, цхилд_цолумн2… цхилд_цолумн_н- То је име ступца цхилд_Табле за упућивање на примарни кључ у родитељској табели.
  • Парент_Табле - Ово је назив матичне табеле. Примарни кључ надређеног табеле упућује се у систем за децу
  • ОН ДЕЛЕТЕ - Овај параметар дјелује на подређене податке након брисања надређених података. СЕТ НУЛЛ, НО АЦТИОН, ЦАСЦАДЕ, СЕТ ДЕФАУЛТ су неке од вредности овог параметра.
  • ОН УПДАТЕ - Ово је опциони параметар који предузима радњу надређених података након ажурирања надређених података. СЕТ НУЛЛ, НО АЦТИОН, ЦАСЦАДЕ, СЕТ ДЕФАУЛТ су неке од вредности овог параметра.
  • ЦАСЦАДЕ - То можемо користити заједно са ОН ДЕЛЕТЕ и ОН УПДАТЕ. Након брисања или ажурирања родитељских података Подређени подаци или ће бити избрисани или ажурирани.

Стварање страног кључа у постојећој табели захтева АЛТЕР дозволу на табели.

ALTER table_name
ADD CONSTRAINT constraint_name
FOREIGN KEY foreign_key_name(columns)
REFERENCES parent_table(columns)

Правила

  1. Страни кључеви нису применљиви на привремене таблице.
  2. Ограничење страног кључа не мора бити повезано само са примарним кључем друге табеле, већ се може повезати и с УНИКУЕ ограничењем друге табеле.
  3. Ограничења страног кључа могу упућивати на други ступац у истој табели. То се назива само референцама.
  4. Ограничења страних кључева могу се односити на табеле унутар исте базе података.
  5. Такође можемо убацити НУЛЛ вредности у дечију табелу.
  6. Када у ограничење страног кључа убацимо другу вредност осим НУЛЛ, вредност мора постојати у референцираном ступцу ако се догодила друга порука о кршењу.
  7. Вриједност јединствених кључева родитеља не може се промијенити ако је правило ажурирања РЕСТРИЦТ и постоје један или више зависних редака. Међутим, ако правило ажурирања НЕМА АКЦИЈЕ, јединствени надређени кључеви могу се ажурирати све док свако дете има родитељски кључ до тренутка када се израда ажурирања заврши.

Примери

Рецимо да имамо две табеле Купци и Наруџбе. Табела купаца садржи све податке који се односе на купца и табелу са налозима који садрже податке који се односе на наруџбине.

Купци

Цуст_идПримарни кључ
Цуст_наме
Локација

Налози

ИД поруџбинеПримарни кључ
Датум поруџбине
Количина
Цуст_идСтрани кључ
Укупна сума

У горњем примјеру, ступац Цуст_ид у таблици ОРДЕРС је страни кључ који упућује на колону Цуст_ид у таблици КУПЦИ.

Претпоставимо да ове табеле имају следеће вредности

Купци

1001АлекСАД
1002ЦареиСАД
1003СидУК
1004ТомеАУС
1005КапилИНД

Налози

7820-10-2018510021200
7912-10-201741001800
8020-11-201621005369
8109-10-201651002258
8219-08-20161110041900
8330-06-20164510012300
8416-02-201671001890
8502-01-201621002260

За цуст_ид 1001 постоје три налога у табели налога.

За цуст_ид 1003 нема наруџбе.

Дакле, ако у родитељској табели имамо одређене податке (рецимо ид 1003), није неопходно да се ти подаци налазе у дечијој табели, већ обрнуто нису тачни.

Не можемо имати никакве податке у подређеној табели (табела налога) која не постоји у матичној табели (купци.)

На пример, не можемо да уметнемо нову рецимо рекорд за цуст_ид 1006 у табелу налога, јер у табели купаца не постоји курс_ид 1006.

Испод су примери који крше референтни интегритет овог односа:

  1. Уметање ретка у таблицу ОРДЕРС гдје се Цуст_ИД не појављује у колони Цуст_ИД у табели КУПЦИ.
  2. Брисање ретка из табеле ЦУСТОМЕРС где је Цуст_ИД ретка који се брише и даље присутан у колони Цуст_ИД у табели ОРДЕРС.

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

  • Он Делете Цасцаде : Ово ће уклонити запис из подређене таблице ако се та вриједност страног кључа избрише из главне таблице.
  • Он Делете НУЛЛ: Ово ће поставити све вредности у том запису Цхилд таблице као НУЛЛ, за које се вриједност страног кључа брише из главне таблице.

Закључак - Страни кључ у СКЛ-у

Стога је препоручљиво користити Фореигн Кеи у бази података која има један према један или један према многим везама. Главна предност употребе ограничења страних кључева је у томе што побољшава перформансе. Програмери могу лако идентификовати структуру базе података. Такође можемо испитати како ће упит потражити податке.

Препоручени чланци

Ово је водич за страни кључ у СКЛ-у. Овде смо разговарали о правилима и примерима страног кључа у СКЛ-у са синтаксом. Можда ћете такође погледати следеће чланке да бисте сазнали више -

  1. СКЛ Виевс
  2. Врсте придруживања у СКЛ Серверу
  3. Шта је ПЛ / СКЛ?
  4. Ограничења СКЛ сервера
  5. Топ 6 врста придруживања у МиСКЛ-у са примерима

Категорија: