Tabelverwantskappe in databasisse in Python
Gestel ons het 'n tabel met gebruikersname en die stede waar 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 verskillende gebruikers. Dit lei tot sekere probleme.
Eerstens lei die voortdurende herhaling daartoe dat die databasis baie meer spasie begin inneem.
Tweedens is dit redelik ongerieflik om bewerkings met stede uit te voer. Byvoorbeeld, ons wil 'n lys van alle stede op die skerm vertoon. Om dit eenvoudig te doen sal nie werk nie. Ons sal alle gebruikers saam met hul stede moet kry, dan duplikate uit die verkrygde stede verwyder en eers dan sal ons hierdie lys kry.
En nou stel ons voor dat daar 10000
gebruikers uit 10 stede in die databasis is - vir hierdie
10 stede sal ons die hele
tabel met 'n groot aantal rye moet haal -
dit sal 'n baie stadige bewerking wees met
sinlose vermorsing van hulpbronne.
Oplossing van die probleem
Ons moet ons tabel in twee verdeel: in een
sal stede gestoor word, en in die tweede - gebruikers.
Terselfdertyd sal daar 'n kolom
city_id in die tabel met gebruikers 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 |
Praktiese take
Gestel jy moet items (naam, prys, hoeveelheid) en kategorieë van hierdie items stoor. Beskryf die bergingstruktuur.
Gestel jy moet riviere en die see waarin hierdie riviere uitmond, stoor. Beskryf die bergingstruktuur.
Gestel jy moet stede en lande waarin hulle geleë is, stoor. Beskryf die bergingstruktuur.