Prepojenie tabuliek v databázach
Majme tabuľku s menami používateľov a mestami, v ktorých žijú:
| id | name | city |
|---|---|---|
| 1 | user1 | city1 |
| 2 | user2 | city1 |
| 3 | user3 | city2 |
| 4 | user4 | city1 |
| 5 | user5 | city3 |
| 6 | user6 | city2 |
Nevýhodou tejto tabuľky je, že to isté mesto sa opakuje niekoľkokrát pre rôznych používateľov. To vedie k určitým problémom.
Po prvé, neustále opakovanie vedie k tomu, že databáza začína zaberať oveľa viac miesta.
Po druhé, je dosť nepohodlné vykonávať operácie s mestami. Napríklad, chceme zobraziť na obrazovke zoznam všetkých miest. Tak jednoducho to urobiť nejde. Budeme musieť získať všetkých používateľov spolu s ich mestami, potom odstrániť duplicity zo získaných miest a až potom dostaneme tento zoznam.
A teraz si predstavme, že v databáze je 10000
používateľov z 10 miest - pre týchto 10
miest budeme musieť vytiahnuť celú tabuľku
s obrovským množstvom riadkov - dopadlo by to
veľmi pomalou operáciou so zbytočnou
spotrebou zdrojov.
Riešenie problému
Je potrebné rozdeliť našu tabuľku na dve: v jednej
budú uložené mestá a v druhej - používatelia.
Pričom v tabuľke s používateľmi bude stĺpec
city_id, ktorý bude odkazovať
na mesto používateľa.
Takže, vytvorme dve tabuľky. Tabuľka s mestami:
| id | name |
|---|---|
| 1 | city1 |
| 2 | city2 |
| 3 | city3 |
Tabuľka s používateľmi:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Predpokladajme, že potrebujete ukladať tovar (názov, cena, množstvo) a kategórie tohto tovaru. Popíšte štruktúru ukladania.
Predpokladajme, že potrebujete ukladať rieky a moria, do ktorých tieto rieky ústia. Popíšte štruktúru ukladania.
Predpokladajme, že potrebujete ukladať mestá a krajiny, v ktorých sa nachádzajú. Popíšte štruktúru ukladania.