SQL normalizatsiya — ma'lumotni tartibli bo'lish
Nega namuna bazamiz uch jadvalga bo’lingan — mahsulotlar, mijozlar,
buyurtmalar? Nega hammasi bitta katta jadval emas? Javob —
normalizatsiya: ma’lumotni takrorsiz va tartibli saqlash tamoyili.
Muammo: bitta katta jadval
Aytaylik, hamma narsani bitta jadvalda saqlaymiz:
| buyurtma | mijoz_ism | mijoz_shahar | mahsulot | narx |
|---|---|---|---|---|
| 1 | Aziz | Toshkent | Non | 3000 |
| 2 | Aziz | Toshkent | Choy | 15000 |
| 6 | Aziz | Toshkent | Suv | 4000 |
Aziz uch marta buyurtma bergani uchun ismi va shahri uch marta takrorlandi. Bu ikki muammo tug’diradi:
- Joy isrofi — bir xil ma’lumot qayta-qayta saqlanadi.
- Yangilash xatosi — Aziz Samarqandga ko’chsa, shaharni hamma qatorda tuzatish kerak. Bittasi unutilsa — ma’lumot ziddiyatli bo’ladi.
Yechim: jadvallarga bo’lish
Normalizatsiya bu takrorni yo’qotadi. Mijoz ma’lumoti bir marta mijozlar da
saqlanadi, buyurtma esa faqat uning raqamiga ishora
qiladi. Endi Azizning shahrini o’zgartirish — bitta joyda tuzatish.
Jadvallar JOIN bilan qayta birlashtiriladi.
Uch asosiy shakl (qisqacha)
Normalizatsiya bosqichlari normal shakllar deyiladi:
- 1NF — har katakda bitta qiymat bo’lsin (bir katakka “Non, Choy” deb ikki narsa yozilmasin).
- 2NF — har ustun butun kalitga bog’liq bo’lsin (qisman bog’liqlik yo’q).
- 3NF — ustunlar bir-biriga emas, faqat kalitga bog’liq bo’lsin.
Amalda ko’p loyiha uchun 3NF gacha yetarli. Namuna bazamiz aynan shu tamoyilga ko’ra tuzilgan: har fakt (mijoz, mahsulot, buyurtma) o’z jadvalida.
Jonli namuna
O’zingiz ishga tushirib ko’ring — so’rovni tahrirlashingiz ham mumkin:
Amaliy mashq
Tuzilmani tahlil qiling:
- Uch jadvalni
JOINbilan bitta natijaga birlashtiring; - natijadagi takrorlanishlarni toping — qaysi qiymat ko’p marta chiqdi?
- tasavvur qiling: hammasi bitta jadvalda bo’lsa, mijoz ismini o’zgartirish uchun nechta qator yangilanardi?
mijozlarjadvalida esa nechta qator?- qog’ozda yozing: normalizatsiya qanday muammoni hal qildi?
2 va 3-qadam normalizatsiyaning asosiy sababini ko’rsatadi.
Qisqacha xulosa
- Normalizatsiya — ma’lumotni takrorsiz, bog’liq jadvallarga bo’lish.
- Takror ma’lumot joy isrof qiladi va yangilash xatolariga olib keladi.
- Har fakt bazada bir marta saqlanadi, jadvallar
JOINbilan bog’lanadi. - Asosiy shakllar: 1NF (bitta qiymat), 2NF, 3NF; ko’pincha 3NF yetarli.
- Namuna baza (3 jadval) shu tamoyilga ko’ra tuzilgan.
Keyingi darsda so’rov optimizatsiyasi — so’rovlarni qanday tezlashtirishni ko’ramiz.