Microsoft SQL Serverda xorijiy kalitlarni yaratish

Ma'lumotlar bazalarida eng muhim tushunchalardan biri ma'lumotlar bazasi jadvallari o'rtasidagi aloqalarni yaratishdir. Ushbu munosabatlar bir nechta jadvallarda saqlangan va uni samarali tarzda olib boradigan ma'lumotlarni ulash mexanizmini ta'minlaydi. Ikkala jadval o'rtasida bog'lanishni yaratish uchun boshqa jadvaldagi ustunga ishora qiluvchi bitta jadvalga tashqi kalitni kiritishingiz kerak.

Ma'lumotlar bazasi jadvali va aloqalari

Siz allaqachon ma'lumotlar bazalari faqatgina Microsoft Excel kabi elektron jadval dasturida foydalanishingiz mumkin bo'lgan narsalarga o'xshash jadvallar seriyasidir . Haqiqatdan ham, siz Excel elektron jadvalini ma'lumotlar bazasiga aylantira olasiz. Ma'lumotlar bazalari elektron jadvallardan ajralib qoladigan bo'lsa, jadvallar orasidagi kuchli munosabatlarni qurishda qo'llaniladi.

Masalan, inson resurslari ma'lumotlarini kuzatish uchun kompaniya tomonidan foydalaniladigan ma'lumotlar bazasini ko'rib chiqing. Ushbu ma'lumotlar bazasida xodimlar deb ataladigan jadval mavjud bo'lishi mumkin, unda quyidagi ma'lumotlar mavjud:

Ushbu misolda, xodim identifikatori ma'lumotlar bazasiga qo'shilganda har bir xodimga tayinlangan yagona noyob tamsayı hisoblanadi. Lavozim identifikatori ishchining kompaniyadagi mavqeiga murojaat qilish uchun foydalaniladigan ish kodidir. Ushbu sxemada xodim faqatgina bitta lavozimga ega bo'lishi mumkin, ammo har bir pozitsiyani ko'p (yoki yo'q) xodimlar to'ldirishlari mumkin. Misol uchun, siz "Cashier" lavozimiga ega bo'lgan yuzlab ishchilaringiz bo'lishi mumkin.

Ma'lumotlar bazasida har bir pozitsiya haqida quyidagi qo'shimcha ma'lumotlar mavjud bo'lgan postlar deb ataladigan jadval mavjud bo'lishi mumkin:

Ushbu jadvaldagi Position ID maydoni Employees jadvalidagi Employee ID maydoniga o'xshaydi - bu ma'lumotlar bazasiga manzil kiritilganda yaratilgan noyob hosil bo'lgan tamsayı.

Biz ma'lumotlar bazasidan xodimlar ro'yxatini olish uchun borganimizda, har bir kishining ismini va unvonini so'rash tabiiydir. Ammo, bu ma'lumotlar bir nechta ma'lumotlar bazasi jadvallarida saqlanadi, shuning uchun faqat JOIN so'rovi yordamida jadvallar orasidagi mavjud munosabatni talab qiladigan tarzda olinishi mumkin.

Jadvallar tuzilishiga qaraganda, munosabatlarni belgilaydigan maydon, ehtimol, ochiq-oydindir - Position ID maydoni. Har bir xodim faqatgina bitta pozitsiyaga ega bo'lishi mumkin va u pozitsiyani Joylashuvlar jadvalining tegishli yozuviga qo'shish orqali aniqlanadi. Pozitsiyalar jadvali uchun asosiy kalitdan tashqari bu misolda Position ID maydoni ham xodimlar jadvalidagi manzillar jadvaliga chet el kalit hisoblanadi. Ma'lumotlar bazasi ma'lumotni bir nechta jadvallardagi ma'lumotlar bilan o'zaro bog'lash uchun ishlatishi mumkin va ma'lumotlar bazasiga kiritilgan har qanday o'zgarish yoki qo'shimchalar ma'lumotlar butunligini ta'minlashga yordam beradi.

Chet tugmachasini aniqladikten so'ng, siz quyidagi so'rov yordamida ma'lumotlar bazasidan kerakli ma'lumotlarni olishingiz mumkin:

TANLAShNING ismi, familiyasi, unvoni Xodimlar INNER JOIN Pozitsiyalar Employees.PositionID = Positions.PositionID

SQL Serverda xorijiy kalitlarni yaratish

Texnik sifatida yuqoridagi kabi so'rovlarni bajarish uchun o'zaro bog'liqlikni aniq belgilashga hojat yo'q. Biroq, tashqi kalit cheklovidan foydalangan holda aloqani aniq belgilasangiz, ma'lumotlar bazasi siz uchun ba'zi bir tozalovchi ishlarni bajarishi mumkin:

SQL Serverda xorijiy kalitni qanday yaratadi:

ALTER TABLE Xodimlar XALQ KEYI qo'shing (PositionID) REFERENCES Joylashuvlar (PositionID)

Bundan tashqari, siz ushbu jadvalni qo'shib, chet el kalitini yaratishingiz mumkin:

FOREIGN KEY REFERENCES Obyektlar (PositionID)

chet el kalit ustuni uchun ustun ta'rifining oxirigacha.