Verilənlər bazası əlaqəsi nədir?

Mündəricat:

Verilənlər bazası əlaqəsi nədir?
Verilənlər bazası əlaqəsi nədir?
Anonim

Bir cədvəl digər cədvəlin əsas açarına istinad edən xarici açardan istifadə etdikdə iki verilənlər bazası cədvəli arasında əlaqə qurulur. Bu, əlaqəli verilənlər bazası termininin arxasında duran əsas anlayışdır.

Xarici Açar Münasibət qurmaq üçün necə işləyir

Əsas açar cədvəldəki hər bir qeydi unikal şəkildə müəyyən edir. Bu, adətən cədvəlin birinci sütunu olan və unikal olmasını təmin etmək üçün verilənlər bazası tərəfindən avtomatik olaraq yaradıla bilən bir növ namizəd açarıdır. Xarici açar qeydi başqa cədvəldəki verilənlərlə əlaqələndirmək üçün istifadə edilən digər namizəd açardır (əsas açar deyil).

Məsələn, hansı müəllimin hansı kursu öyrətdiyini müəyyən edən bu iki cədvəli nəzərdən keçirin. Burada Kurslar cədvəlinin əsas açarı Course_ID-dir. Onun xarici açarı Müəllim_ID:

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

Kurslardakı xarici açarın Müəllimlərdəki əsas açarla uyğunlaşdığını görə bilərsiniz:

Müəllim_şəxsiyyəti Müəllim_Adı
Müəllim_001 Karmen
Müəllim_002 Vronika
Müəllim_003 Xorxe

Deyə bilərik ki, Teacher_ID xarici açarı Kurslar və Müəllimlər cədvəlləri arasında əlaqə yaratmağa kömək etdi.

Image
Image

Verilənlər Bazası Əlaqələrinin Növləri

Xarici açarlardan və ya digər namizəd açarlardan istifadə edərək cədvəllər arasında üç növ əlaqə həyata keçirə bilərsiniz:

Bir-bir

Bu tip əlaqə əlaqənin hər tərəfində yalnız bir qeydə icazə verir. Əsas açar digər cədvəldə yalnız bir qeydə (və ya heç birinə) aiddir. Məsələn, nikahda hər bir həyat yoldaşının yalnız bir başqa həyat yoldaşı olur. Bu cür əlaqə bir cədvəldə həyata keçirilə bilər və buna görə də xarici açardan istifadə etmir.

Birdən Çoxa

Bir-çox əlaqəsi bir cədvəldəki tək qeydin digər cədvəldəki çoxlu qeydlərlə əlaqələndirilməsinə imkan verir. Müştərilər və Sifarişlər cədvəlləri olan verilənlər bazası olan biznesi nəzərdən keçirin.

Tək bir müştəri birdən çox sifariş ala bilər, lakin bir sifariş birdən çox müştəri ilə əlaqələndirilə bilməz. Buna görə də, Sifarişlər cədvəlində Müştərilər cədvəlinin əsas açarına uyğun gələn xarici açar, Müştərilər cədvəlində isə Sifarişlər cədvəlinə işarə edən xarici açar olmayacaq.

Çoxdan çoxa

Bu, bir cədvəldəki bir çox qeydin başqa bir cədvəldəki bir çox qeydlə əlaqələndirilə biləcəyi mürəkkəb əlaqədir. Məsələn, biznesimiz çox güman ki, Müştərilər və Sifarişlər cədvəlinə, həmçinin Məhsullar cədvəlinə ehtiyac duyur.

Yenə də Müştərilər və Sifarişlər cədvəli arasındakı əlaqə birdən çoxa bərabərdir, lakin Sifarişlər və Məhsullar cədvəli arasındakı əlaqəni nəzərdən keçirin. Sifarişdə bir neçə məhsul ola bilər və bir neçə müştəri eyni məhsullardan bəzilərini ehtiva edən sifariş təqdim edə bildiyi üçün məhsul bir neçə sifarişlə əlaqələndirilə bilər. Bu cür əlaqə minimum üç cədvəl tələb edir.

Verilənlər Bazası Əlaqələri Niyə Vacibdir?

Verilənlər bazası cədvəlləri arasında ardıcıl əlaqələrin qurulması verilənlər bazasının normallaşmasına töhfə verərək məlumatların bütövlüyünü təmin etməyə kömək edir. Məsələn, heç bir cədvəli xarici açar vasitəsilə əlaqələndirməsək və bunun əvəzinə Kurslar və Müəllimlər cədvəllərindəki məlumatları birləşdirsək necə olar:

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

Bu dizayn çevik deyil və verilənlər bazası normallaşdırılmasının birinci prinsipini, hər bir cədvəl xanasında tək, diskret verilənlərdən ibarət olmasını bildirən Birinci Normal Formanı pozur.

Yoxsa 1NF-ni tətbiq etmək üçün Carmen üçün ikinci rekord əlavə etmək qərarına gəldik:

Müəllim_şəxsiyyəti 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, hələ də zəif dizayndır, lazımsız təkrarlama və verilənlərin daxil edilməsi anomaliyaları adlanır, bu isə o deməkdir ki, o, uyğun olmayan məlumatlara töhfə verə bilər. Məsələn, müəllimin bir neçə qeydi varsa, bəzi məlumatların redaktə edilməsinə ehtiyac varsa, lakin məlumatların redaktəsini həyata keçirən şəxs bir neçə qeydin mövcud olduğunu dərk etmirsə, onda necə? Cədvəldə eyni fərd üçün fərqli məlumatlar var, onu müəyyən etmək və ya ondan qaçmaq üçün heç bir aydın yol yoxdur.

Bu cədvəli iki cədvələ, Müəllimlər və Kurslara bölmək verilənlər arasında düzgün əlaqə yaradır və buna görə də məlumatların ardıcıllığını və dəqiqliyini təmin etməyə kömək edir.

Tövsiyə: