Адным з найбольш важных паняццяў у базах дадзеных з'яўляецца стварэнне сувязяў паміж табліцамі базы дадзеных. Гэтыя адносіны забяспечваюць механізм для звязвання дадзеных, якія захоўваюцца ў некалькіх табліцах і здабывання яго эфектыўным спосабам. Для таго , каб стварыць сувязь паміж двума табліцамі, неабходна ўказаць знешні ключ у адной табліцы , якая спасылаецца на слупок ў іншы табліцы.
Табліцы баз дадзеных і адносіны
Магчыма , вы ўжо ведаеце , што базы дадзеных проста шэраг табліц , падобных тым, што вы маглі б ужо выкарыстоўваць у праграме электронных табліц , такіх як Microsoft Excel. На самай справе, вы можаце нават пераўтварыць табліцу Excel ў базу дадзеных. Калі базы дадзеных разыходзяцца з электроннымі табліцамі, аднак, калі справа даходзіць да пабудовы магутных сувязяў паміж табліцамі.
Разгледзім, напрыклад, база дадзеных, выкарыстоўваная кампаніяй для адсочвання інфармацыі людскіх рэсурсаў. Гэтая база дадзеных можа мець табліцу з імем Служачыя, які змяшчае наступную інфармацыю для кожнага супрацоўніка кампаніі:
- супрацоўнік ID
- Імя
- Прозвішча
- OfficePhone
- Хатні тэлефон
- PositionID
У гэтым прыкладзе ідэнтыфікатар супрацоўніка адназначна генеруецца цэлы лік, якое прысвойваецца кожнаму супрацоўніку, калі яны дадаюцца ў базу дадзеных. Становішча ID гэта код заданні выкарыстоўваецца для спасылкі на пазіцыю супрацоўніка ў кампаніі. У гэтай схеме, работнік можа мець толькі адну пазіцыю, але некалькі (ці не) супрацоўнікі могуць запоўніць кожную пазіцыю. Напрыклад, вы можаце мець сотні супрацоўнікаў з пазіцыі «Касір».
База дадзеных можа таксама ўтрымліваць табліцу з імем пазіцыі з наступнага дадатковай інфармацыяй аб кожнай пазіцыі:
- PositionID
- тытульны
- джоб
- SkillCategory
- размяшчэнне
Поле ідэнтыфікатара Становішча ў гэтай табліцы падобная на поле ВД супрацоўніка ў табліцы супрацоўнікаў - гэта адназначна генеруецца цэлы лік, якое ствараецца, калі пазіцыя дададзеная ў базу дадзеных.
Калі мы ідзем, каб выцягнуць спіс супрацоўнікаў з базы дадзеных, натуральна было б прасіць імя кожнага чалавека і іх назва. Тым не менш, гэтая інфармацыя захоўваецца ў некалькіх табліцах базы дадзеных, таму ён можа быць атрымана толькі з дапамогай JOIN запыту, які патрабуе існуючых адносін паміж табліцамі.
Калі вы глядзіце на структуру табліц, поле вызначэння адносіны, верагодна, відавочна, - поле Пазіцыі ID. Кожны супрацоўнік можа мець толькі адну пазіцыю, і гэта пазіцыя вызначаецца шляхам ўключэння Пазіцыя ідэнтыфікатар з адпаведнай запісу табліцы пазіцый у. У дадатак да таго, першасны ключ для табліцы пазіцый, у гэтым прыкладзе, поле ID Палажэнне таксама знешні ключ з табліцы супрацоўнікаў да табліцы пазіцый. База дадзеных можа затым выкарыстоўваць гэта поле для супастаўлення інфармацыі з некалькіх табліц і пераканайцеся , што любыя змены ці дапаўненні да базы дадзеных па- ранейшаму забяспечваць захаванне спасылачныя цэласнасці .
Пасля таго, як вы вызначылі знешні ключ, вы можаце пайсці наперад і выцягнуць патрэбную інфармацыю з базы дадзеных з дапамогай наступнага запыту:
Стварэнне знешніх ключоў у SQL Server
Тэхнічна, вы не павінны вызначаць адносіны відавочна, каб мець магчымасць выконваць запыты, як паказана вышэй. Аднак, калі вы відавочна вызначыць адносіны з выкарыстаннем знешняга ключа, база дадзеных будзе мець магчымасць выконваць некаторыя ўборка працу за вас:
- Пры даданні новай запісу ў табліцы супрацоўнікаў, база дадзеных будзе гарантаваць , што пазіцыя ID ўводу з'яўляецца сапраўдным першасным ключом у табліцы пазіцый.
- Калі змяніць ідэнтыфікатар пазіцыі ў табліцы Пазіцыі, база дадзеных можа выканаць неабходныя абнаўлення ў табліцы супрацоўнікаў, каб захаваць кансістэнцыю.
- База дадзеных можа абараніць ад уздзеяння дзялок пазіцыі з табліцы становішча з дапамогай альбо адмовы выдаліць пазіцыю адпаведныя запісы супрацоўніка або выкананне каскаднае выдаленне ўсіх звязаных з супрацоўнікамі.
Вось як вы можаце стварыць знешні ключ у SQL Server:
ALTER TABLE Супрацоўнікі ADD FOREIGN KEY (PositionID) Літ пазіцый (PositionID)Вы таксама можаце стварыць знешні ключ, калі вы ствараеце табліцу, дадаўшы пункт:
Спасылкі на знешнія ключы Пазіцыі (PositionID)у канец вызначэння слупка для ключавога слупка знешняга.