Verilənlər Bazasında Bir-çox Əlaqələr

Mündəricat:

Verilənlər Bazasında Bir-çox Əlaqələr
Verilənlər Bazasında Bir-çox Əlaqələr
Anonim

Verilənlər bazasında bir-çox əlaqə o zaman baş verir ki, Cədvəl A-dakı hər bir qeyd Cədvəl B-də çoxlu əlaqəli qeydlərə malik ola bilər, lakin Cədvəl B-dəki hər bir qeyd Cədvəl A-da yalnız bir müvafiq qeydə malik ola bilər.

Verilənlər bazasında bir-çox əlaqəsi ən ümumi əlaqəli verilənlər bazası dizaynıdır və yaxşı dizaynın əsasını təşkil edir.

Verilənlər bazaları həm də birə-bir əlaqəni və çox-çox əlaqəsini həyata keçirə bilər.

Image
Image

Bir-çox əlaqə nümunəsi

Müəllim və onun öyrətdiyi kurslar arasındakı əlaqəni nəzərdən keçirin. Müəllim birdən çox dərs deyə bilər, lakin kursun müəllimlə eyni əlaqəsi olmayacaq.

Ona görə də Müəllimlər cədvəlindəki hər qeyd üçün Kurslar cədvəlində çoxlu qeydlər ola bilər. Bu nümunə bir-çox əlaqəni göstərir: bir müəllimdən bir neçə kursa.

Bir-çox əlaqə qurmaq niyə vacibdir

Bir-çox əlaqəni təmsil etmək üçün sizə ən azı iki cədvəl lazımdır. Gəlin görək niyə.

İlk Normal Forma Dizaynına Uyğunluq

Ola bilsin ki, adı və tədris olunan kursları qeyd etmək istədiyimiz cədvəl yaratmışıq. Müəllimlər və Kurslar cədvəlini belə tərtib edə bilərik:

Müəllim_şəxsiyyəti Müəllim_Adı Kurs
Müəllim_001 Karmen Biologiya
Müəllim_002 Vronika Riyaziyyat
Müəllim_003 Xorxe İngilis

Karmen iki və ya daha çox kurs öyrədirsə? Bu dizaynla iki seçimimiz var. Onu Carmenin mövcud rekorduna əlavə edə bilərik, məsələn:

Müəllim_şəxsiyyəti Müəllim_Ad Kurs
Müəllim_001 Karmen Biologiya, Riyaziyyat
Müəllim_002 Vronika Riyaziyyat
Müəllim_003 Xorxe İngilis

Lakin yuxarıdakı dizayn çevik deyil və sonra data daxil etdiyiniz, redaktə etdiyiniz və ya sildiyiniz zaman problemlərlə nəticələnə bilər. Bu, data axtarışını çətinləşdirir.

Bu dizayn həm də verilənlər bazası normallaşdırılmasının birinci prinsipini, Birinci Normal Formanı (1NF) pozur, hansı ki, hər bir cədvəl xanasında tək, diskret məlumat parçası olmalıdır.

İkinci Normal Forma Qaydası

Başqa bir dizayn alternativi Carmen üçün ikinci rekord əlavə etmək ola bilər:

Müəllim_ID Müəllim_Ad Kurs
Müəllim_001 Karmen Biologiya
Müəllim_001 Karmen Riyaziyyat
Müəllim_002 Vronika Riyaziyyat
Müəllim_003 Xorxe İngilis

Bu yanaşma 1NF-ə uyğundur, lakin yenə də zəif verilənlər bazası dizaynıdır, çünki o, artıqlığı təqdim edir və lazımsız yerə böyük verilənlər bazasını şişirdə bilər. Daha da əhəmiyyətlisi, data uyğunsuz ola bilər.

Məsələn, Karmenin adı dəyişsə nə olacaq? Data ilə işləyən kimsə onun adını bir qeyddə yeniləyə, ikinci qeyddə isə yeniləyə bilməz.

Bu dizayn 1NF-ə uyğun gələn İkinci Normal Forma (2NF) standartını pozur və eyni zamanda çoxsaylı qeydlərin artıqlığından qaçınmalıdır. 2NF qaydası buna verilənlərin alt dəstlərini çoxsaylı cədvəllərə ayıraraq və onlar arasında əlaqə yaratmaqla nail olur.

Birdən çox əlaqə ilə verilənlər bazasını necə tərtib etmək olar

Müəllimlər və Kurslar cədvəlində bir-çox əlaqəsini həyata keçirmək üçün cədvəlləri ikiyə bölün və xarici açardan istifadə edərək əlaqələndirin.

Burada Müəllimlər cədvəlindəki Kurs sütununu sildik:

Müəllim_ID Müəllim_Ad
Müəllim_001 Karmen
Müəllim_002 Vronika
Müəllim_003 Xorxe

Budur Kurslar cədvəli. Nəzərə alın ki, onun xarici açarı, Teacher_ID, Müəllimlər cədvəlində kursu müəllimlə əlaqələndirir:

Kursun_ID Kursun_Adı Müəllim_şəxsiyyəti
Kurs_001 Biologiya Müəllim_001
Kurs_002 Riyaziyyat Müəllim_001
Kurs_003 İngilis Müəllim_003

Biz xarici açardan istifadə edərək Müəllimlər və Kurslar cədvəli arasında əlaqə yaratdıq. Bu tənzimləmə bizə Karmenin həm biologiya, həm də riyaziyyat, Xorxenin isə ingilis dilini öyrətdiyini bildirir.

Bu dizaynın hər hansı mümkün ixtisarın qarşısını necə aldığını, fərdi müəllimlərə birdən çox kurs öyrətməyə imkan verdiyini və bir-çox əlaqəsini həyata keçirdiyini görə bilərik.

Tövsiyə: