Ma'lumotlar bazasi munosabatlari

Ma'lumotlar bazasi munosabatlari barcha tegishli ma'lumotlar bazalarining asosiy qismi hisoblanadi

Agar jadvalda boshqa jadvalning asosiy kalitiga ishora qiluvchi tashqi kalit bo'lsa, ikki ma'lumotlar bazasi jadvallari orasidagi munosabat o'rnatiladi. Bu atamalar bazasini tashkil etuvchi asosiy tushunchadir.

Tashqi munosabatlarning qanday aloqasi bor?

Asosiy va chet el kalitlarining asoslarini ko'rib chiqaylik. Asosiy kalit , jadvaldagi har bir yozuvni aniqlaydi. Odatda, jadvaldagi birinchi ustun bo'lgan va u noyob bo'lishi uchun ma'lumotlar bazasi tomonidan avtomatik tarzda yaratilishi mumkin bo'lgan nomzod kalitining turi.

Chet el kaliti boshqa yozuvlardagi ma'lumotlarga ulanish uchun ishlatiladigan boshqa nomzod kalit (asosiy kalit emas).

Masalan, qaysi ikkita o'qituvchi qaysi darsni o'rgatayotganligini ko'rsatadigan ikkita jadvalni ko'rib chiqing.

Kurslar jadvalidagi asosiy kalit - Kurs_ID. Uning tashqi kaliti Teacher_ID:

Kurslar
Course_ID Kurs_Adı Teacher_ID
Kurs_001 Biologiya Teacher_001
Kurs_002 Matematika Teacher_001
Kurs_003 Inglizcha Teacher_003

Kurslardagi xorijiy kalit o'qituvchilarning asosiy kalitiga mos kelishini ko'rishingiz mumkin:

O'qituvchilar
Teacher_ID O'qituvchi_Name
Teacher_001 Karmen
Ustoz_002 Veronica
Teacher_003 Xorxe

Teacher_ID chet el kalitlari Kurslar va O'qituvchilar jadvallari orasidagi munosabatlarni o'rnatishga yordam berdi.

Ma'lumotlar bazasi munosabatlari turlari

Chet tugmalari yoki boshqa nomzod kalitlarini ishlatib, jadvallar orasidagi uch xil munosabatni amalga oshirishingiz mumkin:

Birebir : Ushbu turdagi munosabatlar o'zaro munosabatlarning har bir tomonida faqat birgina rekord o'rnatishga imkon beradi.

Asosiy kalit faqat bitta yozuv bilan bog'liq - yoki hech biri - boshqa jadvalda. Misol uchun, nikohda har bir turmush o'rtog'i faqat bitta turmush o'rtog'iga ega. Bunday aloqalar yagona jadvalda amalga oshirilishi mumkin, shuning uchun chet el kalitini ishlatmaydi.

Ko'pchilikka ko'p : birdan ko'pgacha munosabatlar bir stolda boshqa jadvalda bir nechta qaydlar bilan bog'liq bo'lishi uchun bitta qaydni beradi.

Iste'molchilar va Buyurtma jadvallari bo'lgan ma'lumotlar bazasi bilan biznesni ko'rib chiqing.

Bitta buyurtmachi bir nechta buyurtma olishlari mumkin, ammo bitta buyurtma bir nechta mijozga bog'lana olmaydi. Shuning uchun Xaridorlar jadvali Xaridorlar jadvalining asosiy kalitiga mos keladigan xorijiy kalitni o'z ichiga oladi, mijozlar jadvali Buyurtma jadvaliga ishora qiluvchi chet el kalitiga ega bo'lmaydi.

Ko'pchilikka ko'p : Bu murakkab munosabatlardir, unda jadvaldagi ko'plab yozuvlar boshqa jadvalda ko'plab qaydlarni bog'lashi mumkin. Misol uchun, bizning biznesimiz mijozlar va buyurtma jadvallarini emas, balki, shuningdek, Mahsulotlar jadvaliga ham muhtoj.

Shunga qaramay, mijozlar va Buyurtma stoli o'rtasidagi munosabatlar juda ko'p, lekin Buyurtma va Mahsulotlar jadvali o'rtasidagi munosabatni ko'rib chiqing. Buyurtmada bir nechta mahsulotlar bo'lishi mumkin va mahsulot bir nechta buyurtma bilan bog'lanishi mumkin: bir nechta mijozlar bir xil mahsulotni o'z ichiga olgan buyurtma berishlari mumkin. Ushbu turdagi munosabatlar kamida uchta jadvalda talab qilinadi.

Ma'lumotlar bazasi munosabatlari muhimmi?

Ma'lumotlar bazalari jadvallari orasidagi izchil aloqalarni o'rnatish ma'lumotlarning yaxlitligini ta'minlashga, ma'lumotlar bazasini normallashtirishga yordam beradi. Misol uchun, agar bironta jadvalni xorijiy kalit orqali bog'lamagan bo'lsak va buning o'rniga faqat Kurslar va O'qituvchilar jadvalidagi ma'lumotlarni birlashtirsak nima bo'ladi:

O'qituvchilar va kurslar
Teacher_ID O'qituvchi_Name Kurs
Teacher_001 Karmen Biologiya, matematika
Ustoz_002 Veronica Matematika
Teacher_003 Xorxe Inglizcha

Ushbu dizayn moslashuvchan emas va ma'lumotlar bazasi normallashuvining birinchi tamoyilini buzadi. Birinchi Oddiy form (1NF), har bir jadval xujayrasi bitta, alohida ma'lumotlardan iborat bo'lishi kerakligini bildiradi.

Yoki, ehtimol, biz 1NFni qo'llash uchun faqat Karmen uchun ikkinchi rekord qo'yishga qaror qildik:

O'qituvchilar va kurslar
Teacher_ID O'qituvchi_Name Kurs
Teacher_001 Karmen Biologiya
Teacher_001 Karmen Matematika
Ustoz_002 Veronica Matematika
Teacher_003 Xorxe Inglizcha

Bu hali ham zaif dizayn bo'lib, ortiqcha takrorlashni keltirib chiqaradi va bu ma'lumotlarning kiritilishi anomaliyalari deb ataladi, bu faqat barqaror bo'lmagan ma'lumotlarga hissa qo'shishi mumkin degan ma'noni anglatadi.

Misol uchun, agar o'qituvchining bir nechta yozuvlari mavjud bo'lsa, ba'zi ma'lumotlarni tahrir qilish kerak bo'lsa, lekin ma'lumotlarni tahrirlashni amalga oshiruvchi shaxs bir nechta yozuvlar mavjudligini anglamaydi? Jadval, keyinchalik uni identifikatsiya qilish yoki uni bartaraf etishning aniq usuli bo'lmagan bir xil shaxs uchun turli xil ma'lumotlarni o'z ichiga oladi.

Ushbu jadvalni ikkita jadvalga, O'qituvchilar va kurslarga (yuqorida ko'rilganidek) aylantirib, ma'lumotlar orasidagi to'g'ri munosabatlarni hosil qiladi va shuning uchun ma'lumotlar ishonchliligi va aniqligini ta'minlashga yordam beradi.