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.
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.