Kalitlar va bog‘lanishlar
107 daq
Haqiqiy bazada ma’lumot bitta katta jadvalda emas, bir nechta bog‘langan jadvallarda turadi. Ularni bog‘laydigan narsa — kalitlar.
Nega bitta jadval yetmaydi?
Agar har bir talaba qatorida fakultet nomi, dekani, binosi ham yozilsa, bir fakultet ma’lumoti yuzlab marta takrorlanadi. Dekan almashsa — yuzlab qatorni o‘zgartirish kerak, bittasi esdan chiqsa — baza o‘ziga zid bo‘lib qoladi.
Yechim: fakultet haqidagi ma’lumot alohida faculties jadvalida bir marta saqlanadi, guruh esa faqat fakultetning raqamini (faculty_id) eslab qoladi.
Birlamchi kalit (PRIMARY KEY)
Har bir qatorni aniq ajratib turadigan ustun. Odatda bu id:
- takrorlanmaydi — ikkita talabada bir xil
idbo‘lmaydi; - bo‘sh bo‘lmaydi;
- o‘zgarmaydi — ism o‘zgarishi mumkin,
idhech qachon.
Tashqi kalit (FOREIGN KEY)
Boshqa jadvalning birlamchi kalitiga ishora qiladigan ustun. students.group_id → study_groups.id, study_groups.faculty_id → faculties.id.
faculty_id = 1 — bu guruh 1-raqamli fakultetga tegishli degani. Qaysi fakultet ekanini ko‘rish uchun ikkinchi jadvalga qaraymiz:
Tashqi kalit bazani himoya qiladi: mavjud bo‘lmagan fakultet raqamini yozib bo‘lmaydi, ichida guruhlari bor fakultetni esa o‘chirib bo‘lmaydi. «Mashq» bo‘limida buni o‘z qo‘lingiz bilan sinab ko‘rasiz.
Bog‘lanish turlari
- Birga-ko‘p (1:N) — eng keng tarqalgani: bitta fakultetda ko‘p guruh, bitta guruhda ko‘p talaba. Tashqi kalit «ko‘p» tomonida turadi.
- Ko‘pga-ko‘p (M:N) — bitta talaba ko‘p fandan baho oladi, bitta fandan ko‘p talaba baho oladi. Buning uchun o‘rtaga uchinchi jadval qo‘yiladi — bizda bu
grades(student_id+subject_id). - Birga-bir (1:1) — kam uchraydi: masalan, xodim va uning pasport ma’lumotlari.
Sxemani o‘qish
«Arena» bo‘limida har bir bazaning sxemasi bor: chiziqlar tashqi kalitlarni ko‘rsatadi. So‘rov yozishdan oldin sxemaga qarash — yaxshi odat: qaysi jadvalda nima turibdi va ular qaysi ustun orqali bog‘langan.
students jadvalidan id = 1 bo‘lgan talabaning group_id qiymatini chiqaring.
Esda qoldiring
- Birlamchi kalit — qatorning takrorlanmas raqami.
- Tashqi kalit — boshqa jadvaldagi qatorga ishora; noto‘g‘ri bog‘lanishga yo‘l qo‘ymaydi.
- M:N bog‘lanish oraliq jadval orqali quriladi.