Database normalization
Database implement qilishdan oldin juda puxta va uzoq fikr qilishni tavsiya qilaman. Chunki har bir o'zgartirish yoki yangi qo'shimchalar kiritish sizga qimmatga tushishi, ba'zan esa katta muammolar ham keltirishi mumkin. Xuddi shunday muammolarni keltirib chiquvchi omillardan biri bu ne-normal database xisoblanadi.
Database normalization - ma'lumotlarni tartibli va izchil tarzda orginize qilish uchun ma'lumotlar bazasini dizaynlash tamoyili. Keling misollar bilan ko'rib chiqamiz.
1NF - First Normal Form
Birinchi normal formada ma'lumotlar atomic va unique bo'lishi kerak bo'ladi va uzunroq qilganda ushbu prinsiplarga amal qilishi kerak:
- hech bir cell bittadan ko'p ma'lumot saqlamasligi kerak (atomicity)
- identifikatsiya qilish uchun primary key bo'lishi kerak
- duplicate row yoki column bo'lmasligi kerak
...
Tasavvur qiling, foydalanuvchini "Address"ini saqlamoqchisiz. Siz nazarda tutgan "Address" = "Toshkent shahar, Mirobod tumani, Amir Temur ko'chasi, 56 uy" ammo yuqorida aytilganidek atomicity bo'yicha bunday ma'lumot saqlash yaxshi emas. Siz buning o'rniga manzillarni saqlash uchun alohida table yaratasiz va saqlangan ma'lumotni user tabledagi user_id ga foreign key sifatda aloqasini ta'minlaysiz, tamam )
2NF - Second Normal Form
Birinchi normal forma asosan uniqueness va atomicity ga e'tibor qaratsa, Ikkinchi normal forma redundancy and data dependency ni ta'minlashga ximzt qiladi:
- 1NF ni saqlab qolgan holatda ishlashi kerak
- Barcha non-key attributelar faqat primary-keyga dependen bo'lishi kerak.
...
Tasavvur qiling, kutubxona uchun database qildingiz. Sizga keladigan ma'lumotlar asosan kitoblar va avtorlar haqida bo'ladi. Ya'ni bitta avtor ko'p kitob yozishi yoki bitta kitob ko'p avtorlar tomonidan yozilgan bo'lishi mumkin. 2NF da huddi shu muammoni 1NF dan kelib chiqib hal qilasiz. Ya'ni books va authors degan tablelar yaratasiz. har bir kitob uchun book_id bo'lsa, avtor uchun author_id bo'ladi. Bu degani ManyToMany relationshipni endi juda osonroq yo'l bilan yecha olasiz degani. book tableda avtor haqida ma'lumotlarni author tablega, author tableda book haqida ma'lumotlarni olish uchun book tablega foreign key qilasiz holos, tamam.
Post juda cho'zilib ketmasligi uchun qolganlarini o'zingizga sovg'a qilaman, oling va meni eslab yuring (so'kinmasdan)🎁.
@otabekswe
Post #376
1.53K