CodeGym /Kurslar /SQL SELF /Məlumatların normallaşdırılmasına giriş

Məlumatların normallaşdırılmasına giriş

SQL SELF
Səviyyə , Dərs
Mövcuddur

Heç vaxt database cədvəlini görmüsən ki, elə bil qarışıq anbar kimidir? Bir hüceyrədə telefonların siyahısı, o birində ünvanlar bir uzun cümlə kimi yazılıb, üçüncüsündə isə bir neçə tarix vergüllə ayrılıb. Belə bir "xaos" məlumatların axtarışını, yenilənməsini və idarə olunmasını çətinləşdirir. Amma bunun bir çıxış yolu var. Onun adı — məlumatların normallaşdırılmasıdır.

Sadə dillə desək, məlumatların normallaşdırılması — məlumatların cədvəllərdə elə təşkil olunması prosesidir ki, məlumatların təkrarlanması minimuma endirilsin və onların yenilənməsi, silinməsi və əlavə olunması ilə bağlı problemlər aradan qaldırılsın.

Bax, normallaşdırma bu problemləri həll edir:

  1. Məlumatların təkrarlanmasının aradan qaldırılması. Niyə eyni informasiyanı iki dəfə, ya da üç dəfə saxlamalıyıq? Bu, bazanın həcmini artırır və məlumatların uyğunsuzluğuna gətirib çıxarır.
  2. Anomaliyaların minimuma endirilməsi. Bilirsən də, həyatda da anomaliyalar olur. Məsələn, keçmiş iş yoldaşını kontakt siyahısından silməyi unutmusan. Database-də də belə şeylər baş verir. Normallaşdırma belə gülməli vəziyyətlərin qarşısını alır.
  3. Məlumat strukturunun sadələşdirilməsi. Struktur nə qədər sadə olsa, idarə etmək də bir o qədər asan olur.
  4. Database-in işinin sürətlənməsi. Məlumat azdırsa, sorğular da daha sürətli işləyir.

Bəs normallaşdırma olmasa nə olar?

Normallaşdırma olmadan database-dəki məlumatlar "yapışqan" olur — daim artıq informasiyanı da özü ilə aparır.

Təsəvvür elə cədvəl Tələbələr:

Tələbə ID Ad Kurslar
1 Otto Lin Riyaziyyat, Fizika
2 Anna Song Kimya
3 Otto Lin Biologiya, Kimya

Nə problem ola bilər:

  • Məlumatların təkrarlanması: Otto Lin bir neçə dəfə çıxır. Niyə? Çünki o, bir neçə kursda oxuyur.
  • Məlumatı yeniləmək çətindir: əgər Otto Lin-in telefon nömrəsi dəyişibsə, bütün onunla bağlı qeydləri tapıb nömrəni yeniləməliyik.
  • Məlumatı silmək bütövlüyü poza bilər: təsəvvür elə, Otto kursları atmaq qərarına gəlib. Əgər onun bütün sətrlərini silsək, onun haqqında bütün məlumatı, o cümlədən adını da itirəcəyik.

Normallaşdırma nə vaxt artıq olur?

Düzünü desək, normallaşdırma elə bil sərt cədvəl kimidir: həmişə yaxşıdır, amma bəzən spontanlıq da istəyirsən. Əslində elə hallar olur ki, denormallaşdırma daha üstün olur:

  1. Analitik database-lərdə, burada əsas məsələ sorğuların sürətidir, məlumatların həcminin azaldılması yox.
  2. Struktur çox mürəkkəb olanda: əgər normal formaları qorumaq üçün onlarla cədvəllə işləməli oluruqsa, sorğular getdikcə daha ağır olur.
  3. Tez-tez istifadə olunan aggregatlar üçün: əgər daim eyni cəmi hesablamaq lazımdırsa, onu cədvəldə saxlamaq daha yaxşıdır.

Tutaq ki, bizdə online mağaza var. Əgər istifadəçilər tez-tez sifarişlərin ümumi məbləğini axtarırsa, bu məbləği birbaşa Sifarişlər cədvəlində saxlamaq olar, hər dəfə yenidən hesablamağa ehtiyac yoxdur.

Sadəcə yadında saxla ki, denormallaşdırma kompromisdir. O, məlumatların yenilənməsi zamanı səhvlərin yaranma ehtimalını artırır.

Problemli struktur nümunəsi və onun normallaşdırılması

Gəlin normallaşdırmadan əvvəl cədvələ baxaq:

Sifariş ID Müştəri Məhsullar Sifariş məbləği
1 Otto Lin Telefon, Qulaqlıq 20000
2 Anna Song Soyuducu 30000
3 Otto Lin Televizor 40000

Burada açıq-aşkar pozuntu var:

  • Müştəri məlumatları təkrarlanır.
  • Məhsullar siyahı şəklində saxlanılır — bu, məlumatların atomarlığı prinsipinin pozulmasıdır.

Normallaşdırmadan sonra

Bu cədvəli üç yerə böləcəyik: Cədvəl Müştərilər

Müştəri ID Ad
1 Otto Lin
2 Anna Song

Cədvəl Məhsullar

Məhsul ID Adı Dəyəri
1 Telefon 10000
2 Qulaqlıq 10000
3 Soyuducu 30000
4 Televizor 40000

Cədvəl Sifarişlər

Sifariş ID Müştəri ID Məhsul ID
1 1 1
1 1 2
2 2 3
3 1 4

İndi bizdə:

  • Məlumatların təkrarı yoxdur.
  • Hər məhsul ayrıca sətrdədir.
  • Yeni məhsul və sifariş əlavə etmək asandır.

Normallaşdırma — xaosdan nizam yaratmaq sənətidir. Bəli, bəzən çox sərt və tələbkar görünə bilər, amma onun əsas məqsədi bütün bu əziyyətə dəyər. Növbəti leksiyalarda normal formaları ardıcıllıqla öyrənəcəyik: əvvəlcə 1NF, sonra 2NF, və nəhayət 3NF. Davam, nizamlı məlumatlar dünyasına!

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION