Verilənlər bazası münasibətləri

Verilənlər bazası münasibətləri bütün əlaqəli verilənlər bazalarının əsasını təşkil edir

Bir cədvəldə başqa bir masanın birincil əsasına istinad edən xarici bir düyməyə malik olduqda, iki verilənlər bazası cədvəli arasında əlaqələr qurulur. Bu relational veritabanının arxasında əsas konsepsiya.

Xarici bir anlayışın bir əlaqəni yaratmaq üçün necə çalışdıqları

Əsas və xarici açarların əsaslarını nəzərdən keçirək. Birincil əsas əsasən hər bir qeyddə cədvəldə müəyyənləşdirilir. Bu, adətən, bir masada ilk sütun olan adətin bir növüdür və bu unikal olduğundan əmin olmaq üçün verilənlər bazası tərəfindən avtomatik olaraq yaradıla bilər.

Xarici bir əsas, başqa bir masada məlumatların qeydinə keçid üçün istifadə olunan bir başqa namizəddir (birincil əsas deyil).

Məsələn, hansı kursun hansı kursu öyrəddiyini müəyyən edən bu iki cədvəl nəzərə alın.

Kurslar masasının birincil açarı Ders_ID'dir. Onun xarici kodu Teacher_IDdir:

Kurslar
Course_ID Kursun_adı Müəllim_ID
Kurs_001 Biologiya Müəllim_001
Kurs_002 Math Müəllim_001
Kurs_003 İngilis dili Müəllim_003

Kurslardakı xarici düyməsi kurslarda müəllimlərin əsas bir əsasına uyğun olduğunu görə bilərsiniz:

Müəllimlər
Müəllim_ID Müəllimin adı
Müəllim_001 Carmen
Müəllim_002 Veronica
Müəllim_003 Jorge

Teacher_ID xarici anahtarı Dersler ve Öğretmen tabloları arasında bir ilişki kurmasına yardım etdiyini söyleyebiliriz.

Verilənlər bazası əlaqələrinin növləri

Xarici düymələri və ya digər namizəd düymələrini istifadə edərək, masalar arasında üç növ münasibət qura bilərsiniz:

Bire-bir : Bu cür əlaqələr münasibətlər hər tərəfində yalnız bir rekord imkan verir.

Birincil əsas yalnız bir qeyd ilə bağlıdır - ya da heç biri - başqa bir masada. Məsələn, bir evlilikdə hər bir həyat yoldaşı yalnız bir başqa həyat yoldaşı var. Bu cür əlaqələr bir cədvəldə tətbiq oluna bilər və buna görə də xarici bir əsas istifadə etmir.

Birdən-çoxa: Birdən- çox əlaqələr bir masada tək bir qeydə başqa bir masada çoxlu qeydlərlə aid olmağa imkan verir.

Müştərilər və Sifarişlər cədvəlləri olan bir verilənlər bazası ilə iş düşünün.

Bir müştəri birdən çox sifariş ala bilər, lakin bir sifariş birdən çox müştəriyə bağlanıla bilməz. Buna görə Müştərilər cədvəlində Sifarişlər tablosuna işarə edən heç bir xarici düyməyə malik olmadıqda, Sifarişlər cədvəlində Müştərilər cədvəlinin əsas düyməsinə uyğun gələn xarici bir düyməni ehtiva edir.

Çox-çox : Bu, bir cədvəldə bir çox qeydlərin başqa cədvəldə bir çox qeydlərə keçid verə biləcəyi kompleks bir əlaqədir. Məsələn, bizim işimiz, ehtimal ki, Müştərilər və Sifarişlər cədvəllərinə deyil, eyni zamanda məhsullar masasına da ehtiyac duyur.

Yenə də Müştərilər və Sifarişlər cədvəli arasındakı əlaqələr bir-birindən çoxdur, amma Sifarişlər və Məhsullar cədvəli arasındakı əlaqəni nəzərə alır. Bir sifariş birdən çox məhsul ola bilər və bir məhsul birdən çox əmrlə əlaqələndirilə bilər: bir neçə müştəri eyni məhsullardan ibarət sifariş təqdim edə bilər. Bu cür əlaqələr ən azı üç stolda tələb olunur.

Verilənlər bazası münasibətləri nədir?

Verilənlər bazası cədvəlləri arasında ardıcıl əlaqələrin qurulması məlumatların bütövlüyünü təmin edir, məlumat bazasının normallaşmasına kömək edir. Misal üçün, əgər xarici cədvəllər vasitəsilə heç bir masa bağlamadıq və bununla da Kurslar və müəllimlər cədvəllərindəki məlumatları belə birləşdirsək:

Müəllimlər və kurslar
Müəllim_ID Müəllimin adı Kursu
Müəllim_001 Carmen Biologiya, Math
Müəllim_002 Veronica Math
Müəllim_003 Jorge İngilis dili

Bu dizayn qeyri-elastikdir və verilənlər bazasının normallaşması ilk prinsipini pozur, hər bir masa hüceyrəsində vahid, ayrı bir məlumat parçası olması lazım olduğunu bildirən İlk Normal Form (1NF).

Və ya bəlkə, biz 1NF-ni tətbiq etmək üçün sadəcə Carmen üçün ikinci bir rekord əlavə etmək qərarına gəldik:

Müəllimlər və kurslar
Müəllim_ID Müəllimin adı Kursu
Müəllim_001 Carmen Biologiya
Müəllim_001 Carmen Math
Müəllim_002 Veronica Math
Müəllim_003 Jorge İngilis dili

Bu hələ zəif bir dizayndır, lazımsız təkrarlamayı və məlumatların daxil edilməsi anomaliyaları adlanır, bu yalnız uyğun olmayan məlumatlara kömək edə biləcəyini bildirir.

Məsələn, əgər bir müəllimin bir neçə qeydləri varsa, bəzi məlumatların redaktə edilməsinə ehtiyac var, amma məlumatların düzəldilməsini yerinə yetirən şəxs birdən çox qeydin olmadığını bilmir? Cədvəldə daha sonra eyni fərd üçün fərqli məlumatlar var və onu müəyyən etmək və ya qarşısını almaq üçün heç bir dəqiq yol yoxdur.

Bu cədvəlin iki cədvələ bölünməsi, müəllimlər və kurslar (yuxarıda görülən kimi), məlumatlar arasında düzgün əlaqəni yaradır və bu səbəbdən məlumatların düzgünlüyünü və düzgünlüyünü təmin edir.