Bir zamanlar, dinozavrlar böyük olanda... daha dəqiq desək, 1970-ci ildə, Edqar Kodd adlı bir adam qərara gəldi ki, məlumatlardakı xaos artıq yaradıcı səliqəsizlikdən çıxıb və daha çox vaxt və resursları udan qara dəliyə bənzəyir. Edqar uzun müddət düşündü və hər şeyi qaydaya salmaq üçün bir yol tapdı, üstəlik — bütöv bir dünyanın təməlini qoydu, burada məlumatlar səliqəli cədvəllərə düzülür, sanki ideal kitabxanada rəfdəki kitablar kimi. Sətirlər, sütunlar, qayda — və heç bir "belə də olar" və ya "onsuz da hər şey aydındır" yoxdur.
Relyasion model məlumatların cədvəllər şəklində təqdim olunmasına əsaslanır, burada hər cədvəl sətirlərdən və sütunlardan ibarətdir. Intuitiv olaraq hər şey aydındır: sətirlər — qeydlərdir, sütunlar — qeyd üçün xüsusiyyətlər və ya atributlardır. Bu yanaşma məlumatların işlənməsini və idarə olunmasını asanlaşdırır.
Təsəvvür et ki, onlayn mağazada sifariş verirsən. Bu sifarişin uğurla işlənməsi və çatdırılması üçün sistem bir çox detalları nəzərə almalıdır: sən kimsən (alıcı), hansı çatdırılma xidmətini seçmisən, hara çatdırılacaq və bağlamanın statusunu necə izləmək olar.
Əgər bütün bu məlumatlar bir nəhəng cədvəldə saxlanılsaydı, xaos olardı: məlumatlar təkrarlanardı, onları yeniləmək çətin olardı və lazım olan informasiyanı tez tapmaq daha da çətin olardı. Relyasion yanaşma məlumatları cədvəllər arasında bölüşdürərək, onların arasında məlumat mübadiləsi etməyə imkan verir və qayda yaradır.
Bu sxemdə çatdırılmaların izlənməsi prosesi üçün məlumatların təşkili nümunəsi göstərilib:
- Alıcılar - burada hər bir müştəri haqqında məlumat saxlanılır – unikal Alıcı Nömrəsi ilə.
- Çatdırılma xidmətləri - bu cədvəldə çatdırılma edə bilən xidmətlərin siyahısı saxlanılır, onların unikal Xidmət Nömrəsi ilə.
- Sifarişin çatdırılması - bu əsas, əlaqələndirici cədvəldir. Buradakı hər bir sətir — konkret bir çatdırılmadır. Öz Çatdırılma Nömrəsi var, həmçinin alıcıya, çatdırılma xidmətinə, konkret sifarişə, tarixə və cari statusa istinad edə bilər.
Oxlar göstərir ki, Sifarişin çatdırılması cədvəlindəki qeydlər Alıcılar və Çatdırılma xidmətləri cədvəllərindəki qeydlərlə necə əlaqəlidir.
Sifarişin çatdırılması cədvəlinin şərti nümunəsi:
| Çatdırılma Nömrəsi | Alıcı Nömrəsi | Xidmət Nömrəsi | Sifariş Nömrəsi | Yaradılma tarixi | Çatdırılma statusu |
|---|---|---|---|---|---|
| 121 | 101 | 1 | 1569 | 2025-03-23 | Çatdırılıb |
| 122 | 234 | 3 | 1570 | 2025-03-24 | Çatdırılıb |
| 123 | 1011 | 2 | 1571 | 2025-03-25 | Aktiv |
| 124 | 1011 | 2 | 1572 | 2025-03-25 | Gözləyir |
Belə yanaşmanın üstünlükləri:
- Müştərilər və ya çatdırılma xidmətləri haqqında məlumat yalnız bir dəfə saxlanılır, bu da hər çatdırılma qeydi üçün təkrarlanmaların qarşısını alır.
- Unikal nömrələr (onlara açar da deyirlər) vasitəsilə əlaqələr təmin edir ki, məsələn, mövcud olmayan müştəriyə və ya xidmətə çatdırılma qeydi əlavə etmək mümkün olmasın.
- Fərqli cədvəllərdən məlumatları birləşdirib, mürəkkəb hesabatlar və ya konkret seçimlər əldə etmək asandır.
- Məlumatı dəyişmək bir yerdə edilir və dərhal bütün əlaqəli əməliyyatlar üçün əlçatan olur (məsələn, çatdırılma xidmətinin telefonu).
Relyasion verilənlər bazasının strukturu
Relyasion verilənlər bazasının nüvəsi cədvəllərdir. Hər cədvəldə bunlar var:
- Adı (Table Name) — onu tanıya bilək deyə, məsələn, customers.
- Sütunlar dəsti (Columns/Attributes), obyektin xüsusiyyətlərini müəyyən edir.
- Unikal nömrə (primary key) olan sütunları adlandıranda tez-tez
ad_idşablonundan istifadə edirik._idsonluğu burada "identifier" deməkdir. Məsələn:Alıcı Nömrəsiolacaqcustomer_id. - Məsələn, customers cədvəli üçün:
customer_id,first_name,emailvə s. ola bilər.
- Unikal nömrə (primary key) olan sütunları adlandıranda tez-tez
- Sətirlərdəki məlumatlar (Rows/Records) - customers cədvəlində bir sətir bir konkret alıcı haqqında tam məlumat saxlayır (101, Alex Song və s.).
Gəlin customers cədvəlinin nümunəsinə baxaq:
| customer_id | full_name | phone_number | delivery_address | registration_date | |
|---|---|---|---|---|---|
| 101 | Alex Song | alex.song@example.com | 555-0101 | 123 Main St, Anytown | 2023-01-15 |
| 234 | Maria Garcia | maria.g@example.org | 555-0102 | 456 Oak Ave, Otherville | 2022-11-30 |
| 1011 | David Lee | david.lee@example.net | 555-0103 | 789 Pine Ln, Sometown | 2023-03-01 |
Cədvəl açarları
Hər bir sətiri cədvəldə unikal müəyyən etmək üçün primary key (Primary Key, PK) istifadə olunur. Bu, hər sətir üçün unikal olan və boş ola bilməyən sütundur (və ya bir neçə sütun). Onu hər qeyd üçün unikal nömrə kimi təsəvvür et, məsələn, customer_id bizim customers cədvəlimizdə: hər alıcını dəqiq müəyyən edir.
Primary key pasporta bənzəyir, daha dəqiq desək, onun nömrəsinə: hər obyekt üçün unikal olur. Və eyni adlı sətirlərlə bağlı problemlərin qarşısını alır.
Cədvəllər arasında əlaqə yaratmaq üçün foreign key (Foreign Key, FK) istifadə olunur. Bu, bir cədvəldəki sütundur ki, başqa cədvəldəki primary key-ə istinad edir. Foreign key-lər cədvəllər arasında "körpü" rolunu oynayır. Çox vaxt foreign key sütununun adı, istinad etdiyi primary key-in adı ilə eyni olur. Məsələn, deliveries cədvəlində customer_id sütunu foreign key olacaq və customers cədvəlindəki customer_id sütunundakı dəyərləri saxlayacaq, beləliklə çatdırılmanı alıcı ilə əlaqələndirəcək.
Bu, bizə tanış olan sxemdir, amma indi daha real görünüşdədir.
- customers cədvəli müştərilər haqqında məlumat saxlayır; onun primary key-i
customer_id-dir. - delivery_services cədvəli çatdırılma xidmətləri haqqında məlumat saxlayır; onun primary key-i
service_id-dir. - orders cədvəli (tamlıq üçün göstərilib, çünki ona
order_idilə istinad var) sifarişlər haqqında məlumat üçündür, primary key-iorder_id-dir. - deliveries cədvəli çatdırılma əməliyyatlarının izlənməsi üçün əsas cədvəldir. Onda bunlar var:
- Öz primary key-i:
delivery_id. - Əlaqə yaratmaq üçün üç foreign key:
customer_id(FK): çatdırılmanı customers cədvəlindəki konkret alıcı ilə əlaqələndirir.service_id(FK): çatdırılmanı delivery_services cədvəlindəki seçilmiş xidmətlə əlaqələndirir.order_id(FK): çatdırılmanı orders cədvəlindəki uyğun sifarişlə əlaqələndirir.
created_datesahəsi çatdırılma qeydinin yaradılma tarixini və vaxtını göstərir.
- Öz primary key-i:
Belə primary və foreign key-lərin istifadəsi məlumatların bütövlüyünü təmin edir. Sistem, göstərilən customer_id və ya order_id uyğun cədvəllərdə yoxdursa, çatdırılma qeydi yaratmağa imkan verməyəcək və əlaqəli məlumatı çevik şəkildə çıxarmağa imkan verir.
Relyasion modelin üstünlükləri
Relyasion modelin bir sıra əsas üstünlükləri var ki, onu digər yanaşmalar arasında lider edir:
- Strukturun sadəliyi. Sütunlu və sətirli cədvəllər başa düşüləndir və sadədir.
- Məlumatlarla işləməkdə çeviklik. Yeni məlumat əlavə etmək və ya dəyişmək asandır, bütövlük pozulmur.
- Mürəkkəb sorğuların dəstəyi. SQL vasitəsilə bir çox cədvəldən məlumat çıxarmaq, onları birləşdirmək, filtrləmək və tapşırığın tələb etdiyi hər şeyi etmək mümkündür. Məsələn, konkret kursa yazılmış bütün tələbələri tapmaq — asandır!
- Açarlar vasitəsilə məlumatların bütövlüyü. Primary və foreign key-lərdən istifadə bazadakı məlumatların uyğun olmasına zəmanət verir. Məsələn, mövcud olmayan kursa tələbə əlavə etmək mümkün deyil.
Relyasion məlumat modeli — müasir verilənlər bazalarının təməlidir. O, sadədir, güclüdür və strukturlaşdırılmış məlumatların saxlanması üçün əladır. Edqar Kodd demişdi: "Qayda yarat, yoxsa məhv ol!" (yəni, o bir az başqa cür deyib, amma məna təxminən belədir...). Növbəti leksiyada öyrənəcəyik ki, relyasion model digər verilənlər bazası tiplərindən (məsələn, NoSQL) nə ilə fərqlənir və onları harada istifadə etmək daha yaxşıdır.
GO TO FULL VERSION