Normalization və Denormalization
Normalization, verilənlər bazası sxemasını təşkil etmək üçün istifadə olunan bir prosesdir ki, məlumat təkrarlanmasını azaltsın və məlumat bütövlüyünü təmin etsin.
Normalization Formaları
-
Birinci Normal Forma (1NF):
- Hər sütun atomik (bölünməz) dəyərlər saxlamalıdır
- Hər sətir unikal identifikator (primary key) ilə müəyyən edilməlidir
- Eyni cədvəldə təkrarlanan qruplar olmamalıdır
-
İkinci Normal Forma (2NF):
- 1NF-in bütün tələblərini qarşılamalıdır
- Bütün non-key atributlar primary key-dən tam funksional asılı olmalıdır
-
Üçüncü Normal Forma (3NF):
- 2NF-in bütün tələblərini qarşılamalıdır
- Heç bir non-key atribut digər non-key atributdan tranzitiv asılı olmamalıdır
-
Boyce-Codd Normal Forma (BCNF):
- 3NF-in daha güclü versiyası
- Hər funksional asılılıq üçün, determinant superkey olmalıdır
-
Dördüncü Normal Forma (4NF):
- BCNF-in bütün tələblərini qarşılamalıdır
- Multi-valued dependencies aradan qaldırılmalıdır
Normalization-ın Üstünlükləri
- Məlumat təkrarlanmasının azaldılması
- Məlumat bütövlüyünün təmin edilməsi
- Daha az update anomaliyaları
- Daha kiçik cədvəl ölçüləri
- Daha yaxşı sorğu performansı (bəzi hallarda)
Normalization-ın Çatışmazlıqları
- Daha mürəkkəb sorğular (çoxlu JOIN əməliyyatları)
- Bəzi hallarda oxuma performansının azalması
- Daha mürəkkəb sxema dizaynı
Denormalization
Denormalization, performans səbəbləri ilə normalization edilmiş verilənlər bazası sxemasına məqsədyönlü şəkildə redundancy (artıqlıq) əlavə etmək prosesidir.
Denormalization Texnikaları
-
Cədvəllərin Birləşdirilməsi:
- Tez-tez birlikdə istifadə olunan cədvəllərin birləşdirilməsi
- JOIN əməliyyatlarının sayını azaldır
-
Hesablanmış Sütunlar:
- Tez-tez hesablanan dəyərlərin saxlanması
- Sorğu zamanı hesablama yükünü azaldır
-
Məlumat Təkrarlanması:
- Eyni məlumatın bir neçə cədvəldə saxlanması
- JOIN əməliyyatlarını aradan qaldırır
-
Materialized Views:
- Sorğu nəticələrinin əvvəlcədən hesablanıb saxlanması
- Mürəkkəb sorğuların performansını artırır
Denormalization-ın Üstünlükləri
- Daha yaxşı oxuma performansı
- Daha az JOIN əməliyyatları
- Daha sadə sorğular
- Daha az indeks ehtiyacı
Denormalization-ın Çatışmazlıqları
- Məlumat təkrarlanması
- Daha çox disk tutumu
- Yazma əməliyyatlarının mürəkkəbləşməsi
- Məlumat uyğunsuzluğu (inconsistency) riski
Nə Zaman Normalization və ya Denormalization İstifadə Etməli?
-
Normalization üçün:
- Məlumat bütövlüyü kritik əhəmiyyət daşıdıqda
- Yazı əməliyyatları üstünlük təşkil etdikdə
- Disk tutumu məhdud olduqda
-
Denormalization üçün:
- Oxuma əməliyyatları üstünlük təşkil etdikdə
- Performans kritik əhəmiyyət daşıdıqda
- Mürəkkəb analitik sorğular tez-tez icra olunduqda
- Disk tutumu bol olduqda