Het koppelen van tabellen in databases
Stel we hebben een tabel met gebruikersnamen en de steden waar ze wonen:
| id | name | city |
|---|---|---|
| 1 | user1 | city1 |
| 2 | user2 | city1 |
| 3 | user3 | city2 |
| 4 | user4 | city1 |
| 5 | user5 | city3 |
| 6 | user6 | city2 |
Het nadeel van deze tabel is dat dezelfde stad meerdere keren wordt herhaald voor verschillende gebruikers. Dit leidt tot enkele problemen.
Ten eerste leidt het constante herhalen ertoe dat de database veel meer ruimte gaat innemen.
Ten tweede is het behoorlijk onhandig om bewerkingen met steden uit te voeren. Stel, we willen een lijst van alle steden op het scherm tonen. Zo eenvoudig is dat niet te doen. We zullen alle gebruikers samen met hun steden moeten krijgen, verwijder dan duplicaten uit de verkregen steden en pas dan krijgen we deze lijst.
Stel je nu voor dat er in de database 10000
gebruikers zijn uit 10
steden - voor deze 10
steden zullen we de hele tabel moeten ophalen
met een enorm aantal rijen - het wordt
een erg trage operatie met zinloos
verspilling van bronnen.
Oplossing voor het probleem
We moeten onze tabel splitsen in twee: in de ene
worden steden opgeslagen, en in de tweede - gebruikers.
Hierbij zal in de tabel met gebruikers een kolom
city_id staan, die zal verwijzen
naar de stad van de gebruiker.
Laten we dus twee tabellen maken. Tabel met steden:
| id | name |
|---|---|
| 1 | city1 |
| 2 | city2 |
| 3 | city3 |
Tabel met gebruikers:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Stel dat je producten moet opslaan (naam, prijs, hoeveelheid) en de categorieën van deze producten. Beschrijf de opslagstructuur.
Stel dat je rivieren en de zeeën waarin deze rivieren uitmonden moet opslaan. Beschrijf de opslagstructuur.
Stel dat je steden en landen moet opslaan, waarin ze zich bevinden. Beschrijf de opslagstructuur.