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

How Use Mysql Foreign Key Constraints



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

Карактеристике ограничења страних кључева:

У наставку су објашњене неке важне карактеристике ограничења страног кључа.







  • Тип података страног кључа који се користи у подређеној табели мора бити исти са типом података примарног кључа који се користи у надређеној табели за упућивање страног кључа.
  • Било која колона индекса или више колона могу се референцирати као страни кључ само за табелу ИнноДБ.
  • За стварање страног кључа потребне су референце или барем једна од привилегија израза СЕЛЕЦТ, ИНСЕРТ, УПДАТЕ и ДЕЛЕТЕ.
  • Страни кључ се може креирати на два начина. Један коришћењем израза ЦРЕАТЕ, а други коришћењем израза АЛТЕР.

Предуслов:

Пре него што креирате ограничење страног кључа, морате да направите базу података и надређену табелу са примарним кључем. Претпоставимо да је име базе података „ библиотека “И садржи две надређене табеле под називом„ књиге ' и ' зајмопримац ’. Повежите се са МиСКЛ сервером помоћу мискл клијента и покрените следеће СКЛ изразе за креирање базе података и табела.



КРЕИРАЈ БАЗА ПОДАТАКА библиотека;
УСЕ библиотека;

КРЕИРАЈ СТО књиге(
ид ИНТ НЕ НУЛА АУТО_ИНЦРЕМЕНТ ,
наслов варцхар (педесет) НЕ НУЛА ,
аутор варцхар (педесет) НЕ НУЛА ,
Издавач варцхар (педесет) НЕ НУЛА ,
ПРИМАРНИ КЉУЧ (ид)
) МОТОР = ИННОДБ ;

КРЕИРАЈ СТО зајмопримци(
ид ВАРЦХАР (педесет) НЕ НУЛА ,
име варцхар (педесет) НЕ НУЛА ,
адреса варцхар (педесет) НЕ НУЛА ,
емаил варцхар (педесет) НЕ НУЛА ,
ПРИМАРНИ КЉУЧ (ид)
) МОТОР = ИННОДБ ;



Дефинишите ограничење страног кључа помоћу израза ЦРЕАТЕ

Направите табелу под називом „ боок_борров_инфо „Са ограничењима страних кључева извршавањем следеће наредбе. Овде, боок_ид поље је а страни кључ за ову табелу и свака вредност овог поља мора постојати у ид поље књиге сто. књиге је родитељска табела и боок_борров_инфо је дечији сто. Овде су такође постављена два ограничења са спољним кључем. Су ДЕЛЕТЕ ЦАСЦАДЕ и УПДАТЕ ЦАСЦАДЕ . То значи да ако се било који примарни кључ уклони или ажурира из надређене табеле, тада ће се одговарајући записи који се односе на подређену табелу у вези са спољним кључем уклонити или ће инострани кључ бити ажуриран.





КРЕИРАЈ СТО боок_борров_инфо(
борров_ид ВАРЦХАР (педесет),
боок_ид ИНТ ,
борров_дате ДАТЕ НЕ НУЛА ,
Датум повратка ДАТЕ НЕ НУЛА ,
статус ВАРЦХАР (петнаест) НЕ НУЛА ,
ИНДЕКС пар_инд(боок_ид),
ПРИМАРНИ КЉУЧ (борров_ид,борров_дате),
СТРАНИ КЉУЧ (боок_ид) РЕФЕРЕНЦЕ књиге(ид)
НА ДЕЛЕТЕ ЦАСЦАДЕ
НА АЖУРИРАЊЕ ЦАСЦАДЕ
) МОТОР = ИННОДБ ;

Сада покрените следеће СКЛ изразе да бисте уметнули неке записе у обе табеле. Прва наредба ИНСЕРТ уметнуће четири записа у књиге сто. Четири вредности ид поље књиге табела ће бити 1, 2, 3 и 4 за атрибут аутоматског увећања. Друга наредба ИНСЕРТ уметнуће четири записа у боок_борров_инфо базира на ид Вредност књиге сто.



ИНСЕРТ У књиге ВРЕДНОСТИ
( НУЛА , 'Убити птицу ругалицу', 'Харпер Лее', „Гранд Централ Публисхинг“),
( НУЛА , 'Сто година самоће', 'Гарциа Маркуез', 'Лутфи Озкок'),
( НУЛА , 'Пролаз у Индију', 'Форстер, Е.М.', 'Библиотека слика ББЦ Хултон'),
( НУЛА , 'Невидљиви човек', 'Ралпх Еллисон', 'Енцицлопӕдиа Британница, Инц.');

ИНСЕРТ У боок_борров_инфо ВРЕДНОСТИ
('123490', 1, '2020-02-15', '2020-02-25', „Враћено“),
('157643', 2, '2020-03-31', '2020-03-10', 'Нерешен'),
('174562', 4, '2020-04-04', '2020-04-24', „Позајмљено“),
('146788', 3, '2020-04-10', '2020-01-20', „Позајмљено“);

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

ИНСЕРТ У боок_борров_инфо ВРЕДНОСТИ
('195684', 10, '2020-04-15', '2020-04-30', „Враћено“);

Након извршавања следеће наредбе ДЕЛЕТЕ, када ће четврти запис бити уклоњен из књиге табеле затим повезане записе из боок_борров_инфо табела ће се аутоматски уклонити због ограничења страног кључа.

ДЕЛЕТЕ ФРОМ књиге ГДЕ ид= 4;
СЕЛЕЦТ * фром књиге;
СЕЛЕЦТ * фром боок_борров_инфо;

Дефинишите ограничење страног кључа помоћу израза АЛТЕР

Прво уметните неке записе у зајмопримци табела и ова табела ће бити дефинисана као надређена табела у следећој АГЕ изјава.

ИНСЕРТ У зајмопримци ВРЕДНОСТИ
('123490', 'Патрицк Воод', '34 Вест Стреет ЛАНЦАСТЕР ЛА14 9ЗХ ', '[заштићена е -пошта]'),
('157643', 'Езра Мартин', '10 Тхе Грове БИРМИНГХАМ Б98 1ЕУ ', '[заштићена е -пошта]'),
('174562', 'Јохн Иннес Арцхие', '55 Главни пут ЛИВЕРПООЛ Л2 3ОД ', '[заштићена е -пошта]'),
('146788', 'Фредерицк Хансон', '85 Хигхфиелд Роад СХРЕВСБУРИ СИ46 3МЕ ', '[заштићена е -пошта]');

Покрените следеће АГЕ изјаву за коју треба поставити друго ограничење страног кључа боок_борров_инфо сто са којим ћете успоставити однос зајмопримци сто. Овде, борров_ид је дефинисан као страни кључ за боок_борров_инфо сто.

АЛТЕР ТАБЛЕ боок_борров_инфо ДОДАЈТЕ ОГРАНИЧЕЊЕ фк_борровер
СТРАНИ КЉУЧ(борров_ид)ЛИТЕРАТУРА зајмопримци(ид)ОН ДЕЛЕТЕ ЦАСЦАДЕ ОН УПДАТЕ РЕСТРИЦТ;

Сада уметните запис у боок_борров_инфо са важећим борров_ид вредност која постоји у ид поље зајмопримци сто. 157643 вредност постоји у табели зајмопримаца и следећа наредба ИНСЕРТ ће се успешно извршити.

ИНСЕРТ У боок_борров_инфо ВРЕДНОСТИ
('157643', 1, '2020-03-10', '2020-03-20', „Враћено“);

Следећи израз ИНСЕРТ ће генерисати поруку о грешци због вредности ид 195680 не постоји у табели зајмопримаца.

ИНСЕРТ У боок_борров_инфо ВРЕДНОСТИ
('195680', 1, '2020-04-15', '2020-04-30', „Враћено“);

Закључак:

Правилно дефинисање ограничења страних кључева је веома важан задатак за креирање релационе базе података и одговарајуће управљање подацима међу табелама. Познавање употребе ограничења страних кључева је веома важно за дизајнере база података. Надам се да ће овај чланак помоћи новим дизајнерима база података да разумеју концепт ограничења страних кључева и правилно их примене у својим задацима.