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:

SQL · namuna baza

Amaliy mashq

Tuzilmani tahlil qiling:

  1. Uch jadvalni JOIN bilan bitta natijaga birlashtiring;
  2. natijadagi takrorlanishlarni toping — qaysi qiymat ko’p marta chiqdi?
  3. tasavvur qiling: hammasi bitta jadvalda bo’lsa, mijoz ismini o’zgartirish uchun nechta qator yangilanardi?
  4. mijozlar jadvalida esa nechta qator?
  5. 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 JOIN bilan 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.

Bu dars foydali bo'ldimi?

marta ko'rildi