CodeGym /Kurslar /SQL SELF /Mövcud verilənlər bazalarının normal formalarla uyğunluğu...

Mövcud verilənlər bazalarının normal formalarla uyğunluğunun analizi

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

Verilənlər bazasının normal formalarla uyğunluğunu analiz edəndə, cədvəllərin strukturuna, onların əlaqələrinə və atributlar arasındakı asılılıqlara baxırıq. Əsas məqsəd — normalizasiya pozuntularını tapmaq və onların performansa, bütövlüyə və verilənlərlə işləməyə necə təsir etdiyini qiymətləndirməkdir.

Sadə dillə desək, bu, sanki mühasibatlıq auditidir: yoxlayırsan ki, pullar hara gəldi yox, düzgün xərclər üzrə bölünüb.

Verilənlər bazasının analizinə praktik yanaşma

İstənilən verilənlər bazasında biz üç əsas sual veririk, bunlar da üç normal formaya uyğundur.

Tutaq ki, bizdə anbar üçün belə bir cədvəl var:

product_id product_name supplier_name supplier_phone stock_quantity
1 Mismarlar StroyKomplekt +12301112233 150
2 Şurup KrepejPro +12306667788 200
3 Qayka StroyKomplekt +12301112233 100

Bu cədvəli normal formalarla necə yoxlamaq olar?

Xatırladım, cədvəl 1NF-dədir, əgər:

  • Hər hüceyrədə yalnız bir dəyər var.
  • Cədvəldə eyni tip məlumat üçün təkrarlanan sütunlar yoxdur.

Bizim nümunədə 1NF pozuntusu yoxdur: hər hüceyrədə atomik dəyər var. Deməli, cədvəl 1NF-ə gətirilib. Super! Davam edirik.

Cədvəl 2NF-dədir, əgər:

  • O, 1NF-dədir.
  • Bütün açar olmayan atributlar yalnız tam əsas açardan asılıdır (yəni, onun bir hissəsindən yox).

Bu cədvəldə görürük ki, supplier_namesupplier_phone yalnız product_id-dən — əsas açardan asılıdır. Amma burada məlumat təkrarı var: eyni təchizatçı üçün ad və telefon bir neçə sətrdə saxlanılır.

Cədvəli 2NF-ə gətirmək üçün onu iki cədvələ bölə bilərik:

Products cədvəli:

product_id product_name supplier_id stock_quantity
1 Mismarlar 1 150
2 Şurup 2 200
3 Qayka 1 100

Suppliers cədvəli:

supplier_id supplier_name supplier_phone
1 StroyKomplekt +78901112233
2 KrepejPro +78906667788

İndi hər təchizatçı yalnız bir dəfə göstərilib və cədvəllər arasında əlaqə xarici açar supplier_id ilə qurulub.

Cədvəl 3NF-dədir, əgər:

  • O, 2NF-dədir.
  • Bütün açar olmayan atributlar yalnız əsas açardan asılıdır, başqa açar olmayan atributlardan yox.

Normalizasiya olunmuş ProductsSuppliers cədvəllərində heç bir tranzitiv asılılıq yoxdur. Deməli, cədvəllər 3NF-ə gətirilib.

Praktik tapşırıq

Tutaq ki, bizdə "Universitet" adlı ilkin cədvəl var

student_id student_name course_name professor_name professor_email
101 Otto Lin Riyaziyyat Peter Pen pen@university.com
102 Anna Song Fizika Alex Sid sid@university.com
103 Otto Lin Fizika Alex Sid sid@university.com
  1. Cədvəli normal formalarla uyğunluğa görə yoxlayın.
  2. Əgər lazımdırsa, onu 1NF, 2NF və 3NF-ə gətirin.

Həll

ADDIM 1: 1NF üçün yoxlama

Cədvəl artıq 1NF-dədir: hər hüceyrədə bir dəyər var.

ADDIM 2: 2NF üçün yoxlama

Cədvəl 2NF-i pozur: müəllimlər haqqında məlumat (ad və email) təkrarlanır. Onu ayrıca cədvələ çıxara bilərik:

Students cədvəli:

student_id student_name
101 Otto Lin
102 Anna Song

Courses cədvəli:

course_id course_name professor_id
1 Riyaziyyat 1
2 Fizika 2

Professors cədvəli:

professor_id professor_name professor_email
1 Peter Pen pen@university.com
2 Alex Sid sid@university.com

Enrollments cədvəli:

enrollment_id student_id course_id
1 101 1
2 102 2
3 103 2

ADDIM 3: 3NF üçün yoxlama

Yeni struktura tranzitiv asılılıqlar yoxdur. Cədvəllər 3NF-ə uyğundur.

Praktik məsləhətlər

  1. Lazımsız yerə ideala can atma. Bəzən həddindən artıq normalizasiya sorğuları çətinləşdirir.
  2. Analizə detektiv kimi yanaş. Dublikatları, artıq asılılıqları və başqa "anomaliyaları" axtar.
  3. Performansı unutma. Normalizasiya — məlumatın təmizliyi ilə sürət arasında balansdır.

İndi sən verilənlər bazasında problemləri tapıb həll edə bilirsən, istənilən ölçüdə bazada "reviziya" aparmağa hazırsan. Unutma: yaxşı verilənlər bazası — təkcə funksional yox, həm də gözəl (yəni normalizasiya olunmuş) layihədir.

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