Ko’p so’zlarni inglizcha variantini ishlatmaganimiz uchun uzr so’raymiz, tushunarli bo’lishiga ishonamiz.
© Mirsaid va uning shogirdlari
Hozir biz tablelarni join ya’ni bir biri bilan bog’lashni qarab chiqamiz.
Buning uchun birinchi users degan table yaratamiz va unga 2 ta yangi user qo’shamiz:
Yuqorida ko’rib turganimizdek bizda 2 ta John va Jane Doe degan aka ukalar bor.
Bizni users tablemiz:
Lardan tashkil topgan.
Endi shu users tableni boshqa biron tablega bog’lashni ko’ramiz. Bu uchun company degan table ochamiz. Bizni companyda faqat bitta user bo’lishi mumkin va user ham faqat bitta companyga tegishli bo’ladi. Biz user deb company xo’jayinini qaraymiz.
Keling avval companies tableni tuzib olaylik va unga biron ma’lumot kiritaylik:
Tepaga aytgan relationshipni One to One deyiladi. Bu turdagi relationship uchun ikkala tabledan biriga ikkinchisini ID sini yozib olish kerak boladi. Bizni holatda biz companies tablega user ID sini yozib boramiz. Hozirgi holatda faqat birinchi user companyga tegishli. Shularni ko’rish uchun quyidagi SQL yozamiz:
Natijasi:
Kutilganidek faqat bitta userni chiqarib berdi. Chunki bizni companiyamizga faqat bitta user bor.
Endi Many to Many relationship yani ko’pga ko’p (uzr to’g’ridan to’g’ri tarjima qildim) usulini ko’ramiz. Bu turdagi relationshipni maqsadi, ikkita tableni bir biri bilan har xil usulda ulash.
Misol tariqasida Branch ya’ni biron Companyni filliali va Zip Codelar orasidagi bog’liqlikni ko’ramiz. Har bitta branchni bir nechta servicelari bor, va har bir servicelarni o’ziga tegishli zip codelari bor. Va har bir zip codeham bir nechta Branch servicelari uchun xizmat qilishi mumkin. Yani bitta Branch servicega bir nechta zip code bolishi mumkin va har bitta Zip Code bit nechta Branch servicega tegishli bo’lishi mumkin. Bu turdagi relationshiplarni tuzish uchun ikkiga bo’lishga to’g’ri keladi. Yani bitta Many to Many relationship ni ikkita Many to One relationshipga bo’laklaymiz. Bu uchun uchinchi table kerak bo’ladi, buni branch_zip_codes deb nomlaymiz. Bu table ichida asosan Branch va Zip codes tableni IDlari saqlanadi. Kerak bolgan hollarda esa ikkoviga tegishli malumotlar saqlanadi.
Endi har bittasini shu uchinchi table bilan Many to One relationshipdek boglab chiqamiz.
Avvaliga ikkita tableni yarataylik:
Zip_codes table:
Branches table:
Endi bularni bog’lash uchun uchinchi branch_zip_codes table:
Etibor bergan bo’lsangiz bu yerda branch_id, zip_code_id va yana 2 ta qo’shimcha columnlar bor. Bu columnlar ikkoviga ham tegishli bo’lganligi uchun shu tablega yoziladi.
Branch tableni to’ldiramiz:
Zip code tableni to’ldiramiz:
Bu SQL kod orqali birinchi branchni hamma zip codelarini olyapmiz.
Do'stlaringiz bilan baham: |