Python-da maglumatlar bazasyndaky tablisalary birikdirmek
Bizde ulanyjylaryň atlary we olaryň ýaşaýan şäherleri bolan bir tablisa bolsun:
| id | ady | şäher |
|---|---|---|
| 1 | ulanyjy1 | şäher1 |
| 2 | ulanyjy2 | şäher1 |
| 3 | ulanyjy3 | şäher2 |
| 4 | ulanyjy4 | şäher1 |
| 5 | ulanyjy5 | şäher3 |
| 6 | ulanyjy6 | şäher2 |
Bu tablisanyň kemçiligi şonda bir şäher dürli ulanyjylar üçin birnäçe gezek gaýtalanylýar. Bu käbir problemalara getirýär.
Birinjiden, yzygiderli gaýtalama maglumatlar bazasynyň örän köp ýer eýeleýändigine getirýär.
Ikinjiden, şäherler bilen amallary ýerine ýetirmek örän amatsyz. Mysal üçin, biz ekrana ähli şäherleriň sanawyny çykarmak isleýäris. Bu ýönekeý şekilde amala aşyrylmaz. Biz şäherleri bilen bilelikde ähli ulanyjylary alyp, soňra alynan şäherlerden dublikatlary aýyryp, şondan soň biz bu sanawy alarys.
Indi bolsa, bazada 10000 ulanyjy we 10 şäher bolanda - bu
10 şäher üçin biz setirleriň uly sanyndan
ybarat bolan bütün tablisany çekmeli bolarys -
bu peýdasiz resurs sarp edişli we örän ýavaş amal bolar.
Problemani çözme
Bizim tablisamyzy iki bölüme bölmeli: biri
şäherleri saklar, ikinjisi bolsa ulanyjylary.
Şol bir wagtyň özünde ulanyjylar tablisasynda ulanyjynyň şäherine salgy berýän
city_id sütüni bolmaly.
Şeýlelik bilen, iki tablisa dözdüreli. Şäherler tablisasy:
| id | ady |
|---|---|
| 1 | şäher1 |
| 2 | şäher2 |
| 3 | şäher3 |
Ulanyjylar tablisasy:
| id | ady | şäher_id |
|---|---|---|
| 1 | ulanyjy1 | 1 |
| 2 | ulanyjy2 | 1 |
| 3 | ulanyjy3 | 2 |
| 4 | ulanyjy4 | 1 |
| 5 | ulanyjy5 | 3 |
| 6 | ulanyjy6 | 2 |
Amaly wezipeler
Sizde harytlar (ady, bahasy, sany) we şol harytlaryň kategoriýalary saklanmaly diýeli. Saklama gurluşyny düzüň.
Sizde derýalar we şol derýalaryň guýýan deňizleri saklanmaly diýeli. Saklama gurluşyny düzüň.
Sizde şäherler we olaryň ýerleşýän ýurtlary saklanmaly diýeli. Saklama gurluşyny düzüň.