Tabelite seostamine andmebaasides
Oletame, et meil on tabel kasutajate nimedega ja linnadega, kus nad elavad:
| id | name | city |
|---|---|---|
| 1 | user1 | city1 |
| 2 | user2 | city1 |
| 3 | user3 | city2 |
| 4 | user4 | city1 |
| 5 | user5 | city3 |
| 6 | user6 | city2 |
Selle tabeli puuduseks on see, et sama linn kordub mitu korda erinevate kasutajate puhul. See toob kaasa mõned probleemid.
Esiteks, pidev kordamine viib selleni, et andmebaas hakkab võtma palju rohkem ruumi.
Teiseks on linnadega toimingute tegemine piisavalt ebamugav. Näiteks tahame kuvada ekraanil kõikide linnade loetelu. Nii lihtsalt seda teha ei õnnestu. Me peame saama kõik kasutajad koos nende linnadega, seejärel eemaldama saadud linnadest duplikaadid ja alles siis saame selle loetelu.
Ja nüüd kujutlegem, et andmebaasis on 10000
kasutajat 10 linnast - nende 10
linnani jõudmiseks
peame kogu tabeli
tooma välja suurest hulgast ridadest - selgub
väga aeglane toiming mõttetu
ressursside raiskamisega.
Probleemi lahendus
Peame oma tabeli jagama kaheks: ühes
hoitakse linnu ja teises - kasutajaid.
Samal ajal on kasutajate tabelis veerg
city_id, mis viitab
kasutaja linnale.
Niisiis, teeme kaks tabelit. Linnade tabel:
| id | name |
|---|---|
| 1 | city1 |
| 2 | city2 |
| 3 | city3 |
Kasutajate tabel:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Oletame, et peate hoidma kaupu (nimi, hind, kogus) ja nende kaupade kategooriaid. Kirjeldage haldusstruktuur.
Oletame, et peate hoidma jõgesid ja meresid, millesse need jõed suubuvad. Kirjeldage haldusstruktuur.
Oletame, et peate hoidma linnu ja riike, milles nad asuvad. Kirjeldage haldusstruktuur.