Ma'lumotlar bazasi aloqasi nima?

Mundarija:

Ma'lumotlar bazasi aloqasi nima?
Ma'lumotlar bazasi aloqasi nima?
Anonim

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.

Image
Image

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.

Tavsiya: