Tabulu saistīšana datu bāzēs Python
Pieņemsim, ka mums ir tabula ar lietotāju vārdiem un pilsētām, kurās viņi dzīvo:
| id | name | city |
|---|---|---|
| 1 | user1 | city1 |
| 2 | user2 | city1 |
| 3 | user3 | city2 |
| 4 | user4 | city1 |
| 5 | user5 | city3 |
| 6 | user6 | city2 |
Šīs tabulas trūkums ir tas, ka viena un tā pati pilsēta atkārtojas vairākas reizes dažādiem lietotājiem. Tas rada dažas problēmas.
Pirmkārt, pastāvīgā atkārtošanās noved pie tā, ka datu bāze sāk aizņemt daudz vairāk vietas.
Otrkārt, ir diezgan neērti veikt darbības ar pilsētām. Piemēram, mēs vēlamies izvadīt uz ekrānu sarakstu ar visām pilsētām. Tik vienkārši to izdarīt neizdosies. Mums būs jāiegūst visi lietotāji kopā ar to pilsētām, pēc tam jāizdzēš dublikāti no iegūtajām pilsētām un tikai tad mēs iegūsim šo sarakstu.
Un tagad iedomājieties, ka datu bāzē ir 10000
lietotāju no 10 pilsētām - šo
10 pilsētu dēļ mums būs jāizvelk visa
tabula no milzīga daudzuma rindām -
izradīsies ļoti lēna darbība ar
bezjēdzīgu resursu izlietojumu.
Problēmas risinājums
Mūsu tabula jāsadala divās: vienā
tiks glabātas pilsētas, bet otrajā - lietotāji.
Šajā gadījumā lietotāju tabulā būs kolonna
city_id, kas atsaucas
uz lietotāja pilsētu.
Tātad, izveidosim divas tabulas. Tabula ar pilsētām:
| id | name |
|---|---|
| 1 | city1 |
| 2 | city2 |
| 3 | city3 |
Tabula ar lietotājiem:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Praktiskie uzdevumi
Pieņemsim, ka jums ir jāglabā preces (nosaukums, cena, daudzums) un šo preču kategorijas. Aprakstiet glabāšanas struktūru.
Pieņemsim, ka jums ir jāglabā upes un jūras, kurās šīs upes ietek. Aprakstiet glabāšanas struktūru.
Pieņemsim, ka jums ir jāglabā pilsētas un valstis, kurās tās atrodas. Aprakstiet glabāšanas struktūru.