Lidhja e Tabelave në Bazat e të Dhënave në Python
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ë me të gjitha qytetet. Nuk do të jetë e lehtë ta bësh këtë. Ne do të duhet të marrim të gjithë përdoruesit së bashku me qytetet e tyre, pastaj të fshim dublikatat nga të dhënat e marra dhe vetëm atëherë do të marrim këtë listë.
Tani le të imagjinojmë se në bazën e të dhënave ka 10000
përdorues nga 10 qytete - për këto
10 qytete ne do të duhet të nxjerrim të gjithë
tabelën nga një numër i madh rreshtash -
do të rezultojë një operacion shumë i ngadaltë me
harxhim të kotë burimesh.
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ërdorues do të ketë një kolonë
city_id, e cila do të referohet
në qytetin e përdoruesit.
Pra, le të krijojmë dy tabela. Tabela me qytete:
| id | name |
|---|---|
| 1 | city1 |
| 2 | city2 |
| 3 | city3 |
Tabela me përdorues:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Detyra praktike
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 vende, ku ndodhen ato. Përshkruani strukturën e ruajtjes.