Tabelverwantskap in databasisse
Laat ons aanneem ons het 'n tabel met gebruikersname en die stede waarin hulle woon:
| id | naam | stad |
|---|---|---|
| 1 | gebruiker1 | stad1 |
| 2 | gebruiker2 | stad1 |
| 3 | gebruiker3 | stad2 |
| 4 | gebruiker4 | stad1 |
| 5 | gebruiker5 | stad3 |
| 6 | gebruiker6 | stad2 |
Die nadeel van hierdie tabel is dat dieselfde stad verskeie kere herhaal word vir verschillende gebruikers. Dit lei tot sekere probleme.
Eerstens lei die konstante herhaling daartoe dat die databasis baie meer spasie begin beslaan.
Tweedens is dit taamlik ongerieflik om operasies met stede uit te voer. Byvoorbeeld, ons wil 'n lys van alle stede op die skerm vertoon. Dit is nie so eenvoudig om dit te doen nie. Ons sal moet alle gebruikers saam met hul stede kry, dan duplikate uit die verkregde stede verwyder en eers dan sal ons hierdie lys kry.
Stel jou nou voor dat daar 10000
gebruikers in die databasis is uit 10
steden - vir hierdie 10
stede sal ons die hele tabel
uit 'n groot aantal rye moet haal - dit sal 'n
baie stadige operasie wees met sinlose
vermorsing van hulpbronne.
Oplossing vir die probleem
Ons moet ons tabel in twee verdeel: in een
sal stede gestoor word, en in die tweede - gebruikers.
In die tabel met gebruikers sal daar 'n kolom
city_id wees, wat sal verwys
na die stad van die gebruiker.
So, laat ons twee tabelle maak. Tabel met stede:
| id | naam |
|---|---|
| 1 | stad1 |
| 2 | stad2 |
| 3 | stad3 |
Tabel met gebruikers:
| id | naam | city_id |
|---|---|---|
| 1 | gebruiker1 | 1 |
| 2 | gebruiker2 | 1 |
| 3 | gebruiker3 | 2 |
| 4 | gebruiker4 | 1 |
| 5 | gebruiker5 | 3 |
| 6 | gebruiker6 | 2 |
Gestel jy moet produkte (naam, prys, hoeveelheid) en kategorieë van hierdie produkte stoor. Beskryf die bergingstruktuur.
Gestel jy moet riviere en seë stoor, waarin hierdie riviere uitmond. Beskryf die bergingstruktuur.
Gestel jy moet stede en lande stoor, waarin hulle geleë is. Beskryf die bergingstruktuur.