Üçüncü Normal Formada Verilənlər Bazası Verilməsi (3NF)

Üçü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:

İ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:

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

İ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:

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.

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:

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 WidgetOrders

Normallaşdırma qaydalarını pozmadan eyni nəticələr əldə etmək.