Tabellrelasjoner i databaser
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 gjentakelse 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, vil det ikke være enkelt å gjøre det. Vi må hente alle brukere sammen med byene deres, 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 disse 10
byene må vi hente hele tabellen
med et stort 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 byer, og i den andre - brukere.
Samtidig vil det i bruker-tabellen være 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 |
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 som de befinner seg i. Beskriv lagringsstrukturen.