Ma'lumotlar bazasidagi birdan-ko'p aloqalar

Mundarija:

Ma'lumotlar bazasidagi birdan-ko'p aloqalar
Ma'lumotlar bazasidagi birdan-ko'p aloqalar
Anonim

Ma'lumotlar bazasidagi bittadan ko'pga bog'liqlik A jadvalidagi har bir yozuv B jadvalidagi ko'plab bog'langan yozuvlarga ega bo'lishi mumkin, ammo B jadvalidagi har bir yozuv A jadvalida faqat bitta mos yozuvga ega bo'lishi mumkin bo'lganda yuzaga keladi.

Ma'lumotlar bazasidagi bir-ko'p munosabatlari eng keng tarqalgan relyatsion ma'lumotlar bazasi dizayni bo'lib, yaxshi dizaynning asosini tashkil qiladi.

Ma'lumotlar bazalari, shuningdek, yakka-yakka va ko'p-ko'p munosabatlarni amalga oshirishi mumkin.

Image
Image

Birga-koʻp munosabatlarga misol

O'qituvchi va ular o'qitadigan kurslar o'rtasidagi munosabatni ko'rib chiqing. O‘qituvchi bir nechta darslarga dars berishi mumkin, lekin kurs o‘qituvchi bilan bir xil munosabatda bo‘lmaydi.

Shuning uchun, Oʻqituvchilar jadvalidagi har bir yozuv uchun Kurslar jadvalida koʻplab yozuvlar boʻlishi mumkin. Bu misol bittadan ko‘pga munosabatni ko‘rsatadi: bir o‘qituvchidan bir nechta kurslarga.

Nima uchun birdan-koʻp munosabatlarni oʻrnatish muhim

Birga-koʻp munosabatni ifodalash uchun sizga kamida ikkita jadval kerak boʻladi. Keling, sababini bilib olaylik.

Birinchi Oddiy Shakl dizayniga rioya qilish

Ehtimol, biz nom va oʻqitiladigan kurslarni yozib olmoqchi boʻlgan jadval yaratdik. O'qituvchilar va kurslar jadvalini shunday loyihalashimiz mumkin:

Oʻqituvchi_ID Oʻqituvchi_Ismi Kurs
Teacher_001 Karmen Biologiya
Teacher_002 Vronika Matematika
Teacher_003 Xorxe Inglizcha

Agar Karmen ikki yoki undan ortiq kurslarni oʻrgatsa-chi? Ushbu dizayn bilan bizda ikkita variant mavjud. Biz buni Karmenning mavjud rekordiga qo'shishimiz mumkin, masalan:

Oʻqituvchi_ID Oʻqituvchi_Ism Kurs
Teacher_001 Karmen Biologiya, matematika
Teacher_002 Vronika Matematika
Teacher_003 Xorxe Inglizcha

Biroq, yuqoridagi dizayn moslashuvchan emas va keyinchalik maʼlumotlarni kiritish, tahrirlash yoki oʻchirishda muammolarga olib kelishi mumkin. Bu maʼlumotlarni qidirishni qiyinlashtiradi.

Ushbu dizayn ma'lumotlar bazasini normallashtirishning birinchi printsipi bo'lgan Birinchi Oddiy shakl (1NF)ni ham buzadi, unda har bir jadval yacheykasida bitta, diskret ma'lumotlar bo'lagi bo'lishi kerak.

Ikkinchi oddiy shakl qoidasi

Boshqa dizayn varianti Karmen uchun ikkinchi rekord qoʻshish boʻlishi mumkin:

Oʻqituvchi_ID Oʻqituvchi_Ism Kurs
Teacher_001 Karmen Biologiya
Teacher_001 Karmen Matematika
Teacher_002 Vronika Matematika
Teacher_003 Xorxe Inglizcha

Ushbu yondashuv 1NF-ga mos keladi, ammo ma'lumotlar bazasi dizayni hali ham yomon, chunki u ortiqchalikni keltirib chiqaradi va katta ma'lumotlar bazasini keraksiz ravishda to'ldirishi mumkin. Eng muhimi, maʼlumotlar mos kelmasligi mumkin.

Masalan, agar Karmenning ismi o'zgartirilsa-chi? Kimdir maʼlumotlar bilan ishlayotgan boʻlsa, uning ismini bitta yozuvda yangilashi mumkin, ikkinchisida esa uni yangilamasligi mumkin.

Ushbu dizayn Ikkinchi Oddiy Shakl (2NF) standartini buzadi, u 1NFga amal qiladi va bir nechta yozuvlarning ortiqcha boʻlishiga yoʻl qoʻymasligi kerak. 2NF qoidasi bunga maʼlumotlarning quyi toʻplamlarini bir nechta jadvallarga ajratish va ular oʻrtasida munosabat yaratish orqali erishadi.

Ma'lumotlar bazasini qanday qilib bittadan ko'p aloqalar bilan loyihalash mumkin

Oʻqituvchilar va Kurslar jadvalida birdan koʻpga munosabatni amalga oshirish uchun jadvallarni ikkiga boʻling va ularni xorijiy kalit yordamida bogʻlang.

Ustozlar jadvalidagi Kurs ustunini olib tashladik:

Oʻqituvchi_ID Oʻqituvchi_Ism
Teacher_001 Karmen
Teacher_002 Vronika
Teacher_003 Xorxe

Mana esa Kurslar jadvali. Uning chet el kaliti Teacher_ID kursni O‘qituvchilar jadvalidagi o‘qituvchi bilan bog‘laydi:

Kurs_ID Kurs_nomi Oʻqituvchi_ID
Kurs_001 Biologiya Teacher_001
Kurs_002 Matematika Teacher_001
Kurs_003 Inglizcha Teacher_003

Biz chet el kaliti yordamida Oʻqituvchilar va Kurslar jadvali oʻrtasida aloqa oʻrnatdik. Bu kelishuv bizga Karmen ham biologiya, ham matematikadan, Xorxe esa ingliz tilidan dars berishini aytadi.

Ushbu dizayn har qanday mumkin boʻlgan ortiqcha ishlarning oldini olishini, individual oʻqituvchilarga bir nechta kurslarni oʻrgatish imkonini berishini va birdan-koʻp aloqasini amalga oshirishini koʻrishimiz mumkin.

Tavsiya: