⊗ppPmDOLT 381 of 447 menu

Verilənlər bazasında cədvəllərin əlaqələndirilməsi

Tutaq ki, bizdə istifadəçi adları və onların yaşadıqları şəhərlər olan bir cədvəl var:

users
id name city
1 user1 city1
2 user2 city1
3 user3 city2
4 user4 city1
5 user5 city3
6 user6 city2

Bu cədvəlin çatışmazlığı ondadır ki, eyni şəhər müxtəlif istifadəçilər üçün bir neçə dəfə təkrarlanır. Bu, bəzi problemlərə səbəb olur.

Birincisi, daimi təkrarlanma verilənlər bazasının daha çox yer tutmasına səbəb olur.

İkincisi, şəhərlərlə əməliyyatlar yerinə yetirmək kifayət qədər əlverişsizdir. Məsələn, biz bütün şəhərlərin siyahısını ekranda çıxarmaq istəyirik. Bunu birbaşa etmək mümkün olmayacaq. Biz bütün istifadəçiləri onların şəhərləri ilə birlikdə əldə etməli, sonra əldə edilən şəhərlərdən təkrarlananları silməli və yalnız ondan sonra bu siyahını əldə edəcəyik.

İndi təsəvvür edin ki, bazada 10000 istifadəçi var və onlar 10 şəhərdəndirlər - bu 10 şəhər üçün biz böyük miqdarda sətirdən ibarət olan bütün cədvəli çıxarmalı olacağıq - bu, çox yavaş və mənasız resurs sərfi ilə nəticələnən əməliyyat olacaq.

Problemin həlli

Bizim cədvəlimizi ikiyə bölmək lazımdır: birində şəhərlər, digərində isə istifadəçilər saxlanılmalıdır. Eyni zamanda, istifadəçilər cədvəlində city_id adlı bir sütun olacaq, hansı ki, istifadəçinin şəhərinə istinad edəcək.

Beləliklə, gəlin iki cədvəl yaradaq. Şəhərlər cədvəli:

cities
id name
1 city1
2 city2
3 city3

İstifadəçilər cədvəli:

users
id name city_id
1 user1 1
2 user2 1
3 user3 2
4 user4 1
5 user5 3
6 user6 2

Tutaq ki, siz məhsulları (ad, qiymət, miqdar) və bu məhsulların kateqoriyalarını saxlamalısınız. Saxlama quruluşunu təsvir edin.

Tutaq ki, siz çayları və həmin çayların töküldüyü dənizləri saxlamalısınız. Saxlama quruluşunu təsvir edin.

Tutaq ki, siz şəhərləri və onların yerləşdiyi ölkələri saxlamalısınız. Saxlama quruluşunu təsvir edin.

Azərbaycan
AfrikaansБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Biz saytin işi, analitika və fərdiləşdirmə üçün cookie istifadə edirik. Məlumatların emalı Məxfilik Siyasəti əsasında həyata keçirilir.
hamısını qəbul et konfiqurasiya et rədd et