Üçüncü normal forma (3NF) Birinci Normal Form (1NF) və İkinci Normal Form (2NF) tərəfindən verilən verilənlər bazası normallaşdırma prinsipləri əsasında qurularaq məlumatların bütövlüyünü dəstəkləyən məlumat bazası prinsipidir.
Üçüncü Normal Form Tələbləri
Verilənlər bazası üçüncü normal forma üçün iki əsas tələb vardır:
- Verilənlər bazası həm də 1NF və 2NF tələblərini yerinə yetirməlidir.
- Bütün verilənlər bazası sütunları əsas sildən asılı olmalıdır, yəni hər hansı bir sütunun dəyəri yalnız birincil əsasdan əldə edilə bilər.
İbtidai Açar Depozit haqqında
Gəlin, bütün sütunların birincil əsasa asılı olması gerektiğinden daha çox şey öyrənirik.
Bir sütunun dəyəri, həm də əsas sətirdən, həm də masanın digər sütunundan əldə oluna bilərsə, bu, 3NF-i pozur. İşçilərin cədvəlini bu sütunlarla nəzərdən keçirin:
- Əməkdaşı
- Adı
- Soyad
Hər iki Sonname və FirstName yalnız EmployeeID dəyərinə bağlıdırmı? Yaxşı, LastName adına asılı ola bilərmi? No, çünki LastName-a aid olmayan bir şey, FirstName-in dəyərini təklif edəcəkdir. Soyadınız Soyadınıza bağlı ola bilərmi? Yenə də eyni deyil, çünki bir Soyad nə olursa olsun, FirstName dəyərinə bir işarə verə bilmədi. Buna görə, bu masa 3NF uyğun.
Amma bu Vasitələrin cədvəlinə nəzər salın
- VehicleID
- İstehsalçı
- Model
İstehsalçı və Model VehicleID-dən çıxa bilərdi, lakin Model bir İstehsalçıdan çıxa bilərdi, çünki bir model yalnız bir istehsalçı tərəfindən hazırlanıb. Bu cədvəl dizaynı qeyri-3NF uyğun və bu səbəbdən məlumat anomaliyaları ilə nəticələnə bilər. Məsələn, modelini yeniləmədən, yanlışlıqları təqdim etmədən istehsalçını yeniləyə bilərsiniz.
Uyğundur etmək üçün, əlavə sütunun başqa bir cədvəlinə köçürülməsi və xarici bir anahtara istinad etməsi lazımdır. Bu iki cədvəl ilə nəticələnər:
Vasitə cədvəli
Aşağıdakı cədvəldə ModelID Modellər üçün xarici bir açar:
- VehicleID
- İstehsalçı
- Modelİd
Modellər Cədvəli
Bu yeni cədvəl istehsalçıları modelləri modelləşdirir. Bir modelə aid hər hansı bir avtomobilin məlumatını yeniləmək istəyirsinizsə, bu cədvəldə, Avtomobil cədvəlində deyil, bunu edərdiniz.
- Modelİd
- İstehsalçı
- Model
3NF Modelində Təbii Alanlar
Cədvəldə əldə edilmiş bir sahə ola bilər - bir masada digər sütunlara əsaslanan hesablanır. Məsələn, widget sifarişlərinin bu cədvəlini nəzərdən keçirin:
- Sifariş nömrəsi
- Müştəri nömrəsi
- Vahid qiymət
- Miqdarı
- Ümumi
Birincil qiymətə tamamilə asılı olmayaraq vahid qiyməti miqdarla çarpdırmaqla əldə edilə biləcəyi üçün, 3NF uyğunluğunun ümumi pozulmasıdır. Üçüncü normal formaya uyğunlaşdırmaq üçün onu masadan çıxarmaq lazımdır.
Əslində, bu əldə olduğundan, məlumat bazasında saxlamamaq daha yaxşıdır.
Verilənlər bazası sorğusunu yerinə yetirdikdə, sadəcə "uçmaqda" hesablaya bilərik. Məsələn, əvvəllər bu sorguyu sifariş nömrələrini və yekunlarını almaq üçün istifadə etmişdik:
SELECT Sifariş Numarası, Cəmi WidgetOrders dənİndi aşağıdakı sorğudan istifadə edə bilərik:
SEÇİM Sifariş Numarası, Birim Qiyməti * Miqdarı AS Cəmi WidgetOrdersNormallaşdırma qaydalarını pozmadan eyni nəticələr əldə etmək.