Ma'lumotlar bazasida bir-biriga ko'p bo'lgan munosabatlar Jadval A dagi har bir yozuv Jadval Bda ko'plab biriktirilgan yozuvlarga ega bo'lishi mumkin, ammo B-jadvaldagi har bir yozuv A-jadvalda faqat bitta tegishli yozuvga ega bo'lishi mumkin. ma'lumotlar bazasi eng keng tarqalgan ma'lumotlar bazasi hisoblanadi va yaxshi dizaynning markazida joylashgan.
Ustoz va o'qitadigan kurslar o'rtasidagi munosabatni ko'rib chiqing. O'qituvchi ko'p kurslarni o'qitishi mumkin, ammo dars o'qituvchi bilan bir xil munosabatda bo'lmaydi.
Shuning uchun, "O'qituvchilar" stolidagi har bir yozuv uchun "Kurslar" jadvalida ko'plab yozuvlar bo'lishi mumkin. Bu bir-to-ko'p munosabatlar: bir o'qituvchi ko'p kurslarga.
Nima uchun bir-biriga ko'plab munosabatlarni o'rnatish muhim ahamiyatga ega
Ko'pdan-ko'p munosabatlarni ifodalash uchun kamida ikki jadvalga ehtiyoj bor. Keling, nima uchun buni ko'rib chiqaylik.
Ehtimol, biz o'qituvchilar jadvalini yaratdik, unda biz ism va kurslarni yozib olishni xohladik. Buni shunday qilishimiz mumkin:
Teacher_ID | O'qituvchi_Name | Kurs |
---|---|---|
Teacher_001 | Karmen | Biologiya |
Ustoz_002 | Veronica | Matematika |
Teacher_003 | Xorxe | Inglizcha |
Xo'sh, agar Karmen ikki yoki undan ortiq kursni o'qisa, nima qilsa bo'ladi? Ushbu dizayndagi ikkita variant mavjud. Biz buni Carmenning mavjud rekordiga qo'shamiz:
Teacher_ID | Ustoz _Name | Kurs |
---|---|---|
Teacher_001 | Karmen | Biologiya, matematika |
Ustoz_002 | Veronica | Matematika |
Teacher_003 | Xorxe | Inglizcha |
Biroq, yuqoridagi dizayn moslashuvchan emas va keyinchalik ma'lumotlarni qo'shish, tahrirlash yoki o'chirishda muammolarga olib kelishi mumkin.
Ma'lumotni qidirishni qiyinlashtiradi. Ushbu dizayn ma'lumotlar bazasi normallashuvining birinchi tamoyilini buzadi, birinchi Oddiy formada (1NF) , har bir jadval xujayrasi bitta, alohida ma'lumotlardan iborat bo'lishi kerakligini bildiradi.
Boshqa bir dizayn muqobili, Karmen uchun ikkinchi rekordni kiritish uchun bo'lishi mumkin:
Ustoz _ID | Ustoz _Name | Kurs |
---|---|---|
Teacher_001 | Karmen | Biologiya |
Teacher_001 | Karmen | Matematika |
Ustoz_002 | Veronica | Matematika |
Teacher_003 | Xorxe | Inglizcha |
Bu 1NF-ga yopishadi, biroq ma'lumotlar bazasi noyobdir, chunki u ortiqcha ma'lumotlarni taqdim etadi va juda katta ma'lumotlar bazasini shoshirishi mumkin. Eng muhimi, bu ma'lumotlar mos kelmasligi mumkin. Misol uchun, agar Carmenning ismi o'zgargan bo'lsa-chi? Ma'lumotlar bilan ishlaydigan kishi uning ismini bitta yozuvda yangilashi va uni ikkinchi jildda yangilamasligi mumkin. Ushbu dizayn 1NF ga mos keladigan va odatdagilarning ko'plab jadvallarni bir nechta jadvalga ajratib, ular orasidagi munosabatlarni yaratib, bir nechta yozuvlarni qisqartirishidan qochish kerak bo'lgan Ikkinchi Normal Formani (2NF) buzadi.
Ma'lumotlar bazasini bir yoki bir nechta munosabatlar bilan qanday tuzish mumkin
O'qituvchilar va kurslar jadvalida bir-to-ko'p munosabatlarni amalga oshirish uchun jadvallarni ikkiga ajratamiz va ularni xorijiy kalit yordamida bog'laymiz .
Bu erda Ustozlar jadvalidagi Kurs ustunini olib tashladik:
Ustoz _ID | Ustoz _Name |
---|---|
Teacher_001 | Karmen |
Ustoz_002 | Veronica |
Teacher_003 | Xorxe |
Va bu erda kurslar jadvali. Unutmangki, chet el kalit, Teacher_ID, O'qituvchilar jadvali ustoziga kursni yo'naltiradi:
Course_ID | Kurs_Adı | Teacher_ID |
---|---|---|
Kurs_001 | Biologiya | Teacher_001 |
Kurs_002 | Matematika | Teacher_001 |
Kurs_003 | Inglizcha | Teacher_003 |
Chet el kalitini ishlatib, O'qituvchilar va Kurslar jadvali o'rtasidagi munosabatlarni rivojlantirdik.
Bu bizga biologiya va matemni Carmen tomonidan o'rgatilgan va Xorxe ingliz tilini o'rgatganligini bildiradi.
Ushbu dizayn har qanday yuzaga kelishi mumkin bo'lgan ishdan qochishning oldini olish, individual o'qituvchilarga bir nechta darslarni o'rgatish imkonini beradi va bir-biriga ko'plab munosabatlarni amalga oshiradi.
Ma'lumotlar bazalari, shuningdek, birebir munosabatlarni va juda ko'pdan-ko'p aloqalarni amalga oshirishi mumkin.