Kobling av tabeller i databaser i Python
La oss si at vi har en tabell med brukernavn og byene de bor i:
| id | name | city |
|---|---|---|
| 1 | user1 | city1 |
| 2 | user2 | city1 |
| 3 | user3 | city2 |
| 4 | user4 | city1 |
| 5 | user5 | city3 |
| 6 | user6 | city2 |
Ulempen med denne tabellen er at samme by gjentas flere ganger for forskjellige brukere. Dette fører til noen problemer.
For det første fører konstant repetisjon til at databasen begynner å oppta mye mer plass.
For det andre er det ganske upraktisk å utføre operasjoner med byer. For eksempel, hvis vi ønsker å vise en liste over alle byer på skjermen. Det er ikke mulig å gjøre dette enkelt. Vi må hente alle brukere sammen med deres byer, deretter fjerne duplikater fra de innhentede byene og først da får vi denne listen.
La oss nå tenke oss at databasen har 10000
brukere fra 10 byer - for å få disse
10 byene må vi hente hele
tabellen med et enormt antall rader -
det blir en veldig treg operasjon med
meningsløs ressursbruk.
Løsning på problemet
Vi må dele tabellen vår i to: i den ene
lagres byene, og i den andre - brukerne.
Samtidig vil brukertabellen ha en kolonne
city_id, som vil referere
til brukerens by.
Så, la oss lage to tabeller. Tabell med byer:
| id | name |
|---|---|
| 1 | city1 |
| 2 | city2 |
| 3 | city3 |
Tabell med brukere:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Praktiske oppgaver
La oss si at du må lagre varer (navn, pris, antall) og kategorier for disse varene. Beskriv lagringsstrukturen.
La oss si at du må lagre elver og hav som disse elvene munner ut i. Beskriv lagringsstrukturen.
La oss si at du må lagre byer og land de befinner seg i. Beskriv lagringsstrukturen.