Bir jadval boshqa jadvalning asosiy kalitiga havola qiluvchi tashqi kalitdan foydalanganda ikkita ma'lumotlar bazasi jadvali o'rtasida aloqa o'rnatiladi. Bu relyatsion maʼlumotlar bazasi atamasi ortidagi asosiy tushunchadir.
Aloqa oʻrnatish uchun xorijiy kalit qanday ishlaydi
Birlamchi kalit jadvaldagi har bir yozuvni noyob tarzda aniqlaydi. Bu odatda jadvalning birinchi ustuni bo'lgan nomzod kalitining bir turi bo'lib, uning noyobligini ta'minlash uchun ma'lumotlar bazasi tomonidan avtomatik ravishda yaratilishi mumkin. Chet el kaliti yozuvni boshqa jadvaldagi maʼlumotlar bilan bogʻlash uchun foydalaniladigan boshqa nomzod kalit (asosiy kalit emas).
Masalan, qaysi oʻqituvchi qaysi kursni oʻrgatishini aniqlaydigan ushbu ikkita jadvalni koʻrib chiqing. Bu yerda Kurslar jadvalining asosiy kaliti Course_ID hisoblanadi. Uning chet el kaliti - Teacher_ID:
Kurs_ID | Kurs_nomi | Oʻqituvchi_ID |
---|---|---|
Kurs_001 | Biologiya | Teacher_001 |
Kurs_002 | Matematika | Teacher_002 |
Kurs_003 | Inglizcha | Teacher_003 |
Kurslar boʻlimidagi xorijiy kalit “Oʻqituvchilar”dagi asosiy kalitga mos kelishini koʻrishingiz mumkin:
Oʻqituvchi_ID | Oʻqituvchi_Ismi |
---|---|
Teacher_001 | Karmen |
Teacher_002 | Vronika |
Teacher_003 | Xorxe |
Aytishimiz mumkinki, Teacher_ID tashqi kaliti Kurslar va O'qituvchilar jadvallari o'rtasida aloqa o'rnatishga yordam berdi.
Ma'lumotlar bazasi aloqalarining turlari
Xorijiy kalitlar yoki boshqa nomzod kalitlardan foydalanib, jadvallar oʻrtasida uchta turdagi munosabatlarni amalga oshirishingiz mumkin:
Birga-bir
Bu turdagi munosabatlar munosabatlarning har bir tomonida faqat bitta yozuvga ruxsat beradi. Birlamchi kalit boshqa jadvaldagi faqat bitta yozuvga (yoki hech biriga) tegishli. Misol uchun, nikohda har bir turmush o'rtog'i faqat bitta boshqa turmush o'rtog'iga ega. Bunday munosabatlar bitta jadvalda amalga oshirilishi mumkin va shuning uchun xorijiy kalit ishlatilmaydi.
Birdan kopga
Birga-koʻp munosabati bitta jadvaldagi bitta yozuvni boshqa jadvaldagi bir nechta yozuvlar bilan bogʻlash imkonini beradi. Mijozlar va Buyurtmalar jadvallari mavjud maʼlumotlar bazasiga ega biznesni koʻrib chiqing.
Bir mijoz bir nechta buyurtmalar xarid qilishi mumkin, biroq bitta buyurtmani bir nechta mijozlar bilan bogʻlab boʻlmaydi. Shuning uchun Buyurtmalar jadvalida Mijozlar jadvalining asosiy kalitiga mos keladigan xorijiy kalit bo'lishi kerak, Mijozlar jadvalida esa Buyurtmalar jadvaliga ishora qiluvchi xorijiy kalit bo'lmaydi.
Ko'pdan ko'p
Bu murakkab munosabatlar boʻlib, unda jadvaldagi koʻplab yozuvlar boshqa jadvaldagi koʻplab yozuvlar bilan bogʻlanishi mumkin. Masalan, bizning biznesimizga Mijozlar va Buyurtmalar jadvali kerak, balki Mahsulotlar jadvali ham kerak.
Yana, Mijozlar va Buyurtmalar jadvali oʻrtasidagi munosabatlar birdan koʻpga teng, lekin Buyurtmalar va Mahsulotlar jadvali oʻrtasidagi munosabatni koʻrib chiqing. Buyurtma bir nechta mahsulotni o'z ichiga olishi mumkin va mahsulot bir nechta buyurtmalarga bog'lanishi mumkin, chunki bir nechta mijozlar bir xil mahsulotlarni o'z ichiga olgan buyurtma yuborishi mumkin. Bunday munosabatlar kamida uchta jadvalni talab qiladi.
Ma'lumotlar bazasi bilan aloqalar nima uchun muhim?
Ma'lumotlar bazasi jadvallari o'rtasida izchil aloqalarni o'rnatish ma'lumotlar yaxlitligini ta'minlashga yordam beradi va ma'lumotlar bazasini normallashtirishga hissa qo'shadi. Misol uchun, agar biz hech qanday jadvalni xorijiy kalit orqali bog‘lamasak va o‘rniga Kurslar va O‘qituvchilar jadvalidagi ma’lumotlarni birlashtirsak nima bo‘ladi, masalan:
Oʻqituvchi_ID | Oʻqituvchi_Ismi | Kurs |
---|---|---|
Teacher_001 | Karmen | Biologiya, matematika |
Teacher_002 | Vronika | Matematika |
Teacher_003 | Xorxe | Inglizcha |
Ushbu dizayn moslashuvchan emas va ma'lumotlar bazasini normallashtirishning birinchi printsipi bo'lgan Birinchi Oddiy shakl, ya'ni har bir jadval katakchasi bitta, diskret ma'lumotlar qismini o'z ichiga olishi kerakligini bildiradi.
Yoki 1NF: qoidalarini qoʻllash uchun Karmen uchun ikkinchi rekord qoʻshishga qaror qilgandirmiz.
Oʻqituvchi_ID | Oʻqituvchi_Ismi | Kurs |
---|---|---|
Teacher_001 | Karmen | Biologiya |
Teacher_001 | Karmen | Matematika |
Teacher_002 | Vronika | Matematika |
Teacher_003 | Xorxe | Inglizcha |
Bu hali ham zaif dizayn boʻlib, keraksiz takrorlash va maʼlumotlarni kiritish anomaliyalari deb ataladi, yaʼni u nomuvofiq maʼlumotlarga hissa qoʻshishi mumkin. Misol uchun, agar o'qituvchining bir nechta yozuvlari bo'lsa, ba'zi ma'lumotlarni tahrirlash kerak bo'lsa-chi, lekin ma'lumotlarni tahrirlashni amalga oshiruvchi shaxs bir nechta yozuvlar mavjudligini tushunmasa? Jadvalda bir xil shaxsga oid har xil maʼlumotlar boʻladi, uni aniqlash yoki undan qochishning aniq usuli yoʻq.
Ushbu jadvalni ikkita jadvalga, Oʻqituvchilar va Kurslarga boʻlish maʼlumotlar oʻrtasida toʻgʻri munosabatni yaratadi va shuning uchun maʼlumotlar izchilligi va aniqligini taʼminlashga yordam beradi.