Lidhja e tabelave në bazat e të dhënave
Le të supozojmë se kemi një tabelë me emrat e përdoruesve dhe qytetet ku ata jetojnë:
| id | name | city |
|---|---|---|
| 1 | user1 | city1 |
| 2 | user2 | city1 |
| 3 | user3 | city2 |
| 4 | user4 | city1 |
| 5 | user5 | city3 |
| 6 | user6 | city2 |
Disavantazhi i kësaj tabele është se i njëjti qytet përsëritet disa herë për përdorues të ndryshëm. Kjo çon në disa probleme.
Së pari, përsëritja e vazhdueshme çon në faktin se baza e të dhënave fillon të zërë shumë më tepër hapësirë.
Së dyti, është mjaft e papërshtatshme të kryhen operacione me qytete. Për shembull, ne duam të shfaqim në ekran një listë të të gjitha qyteteve. Ashtu thjesht nuk do të mundet të bëhet. Do të na duhet të marrim të gjithë përdoruesit së bashku me qytetet e tyre, pastaj të fshim dublikatet nga qytetet e marra dhe vetëm atëherë do të marrim këtë listë.
Dhe tani le të imagjinojmë se në bazë ka 10000
përdorues nga 10
qytete - për këto 10
qytete do të na duhet të nxjerrim të gjithë tabelën
me një numër të madh rreshtash - do të rezultojë
një operacion shumë i ngadaltë me humbje kuptimplotë
të burimeve.
Zgjidhja e problemit
Duhet ta ndajmë tabelën tonë në dy: në njërën
do të ruhen qytetet, kurse në tjetrën - përdoruesit.
Në këtë rast në tabelën me përdoruesit do të ketë kolonë
city_id, e cila do të referojë
në qytetin e përdoruesit.
Pra, le të krijojmë dy tabela. Tabela me qytetet:
| id | name |
|---|---|
| 1 | city1 |
| 2 | city2 |
| 3 | city3 |
Tabela me përdoruesit:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Le të supozojmë se ju duhet të ruani produktet (emri, çmimi, sasia) dhe kategoritë e këtyre produkteve. Përshkruani strukturën e ruajtjes.
Le të supozojmë se ju duhet të ruani lumenj dhe dete, në të cilët derdhen këto lumenj. Përshkruani strukturën e ruajtjes.
Le të supozojmë se ju duhet të ruani qytete dhe shtete, në të cilat ndodhen ato. Përshkruani strukturën e ruajtjes.