Legătura tabelelor în bazele de date în Python
Să presupunem că avem un tabel cu numele utilizatorilor și orașele în care locuiesc:
| id | name | city |
|---|---|---|
| 1 | user1 | city1 |
| 2 | user2 | city1 |
| 3 | user3 | city2 |
| 4 | user4 | city1 |
| 5 | user5 | city3 |
| 6 | user6 | city2 |
Dezavantajul acestui tabel este că același oraș se repetă de mai multe ori pentru diferiți utilizatori. Acest lucru duce la unele probleme.
În primul rând, repetarea constantă duce la faptul că baza de date începe să ocupe mult mai mult spațiu.
În al doilea rând, este destul de incomod să efectuăm operațiuni cu orașe. De exemplu, dorim să afișăm pe ecran lista tuturor orașelor. Nu vom reuși să o facem atât de simplu. Va trebui să obținem toți utilizatorii împreună cu orașele lor, apoi să eliminăm duplicatele din orașele obținute și numai atunci vom obține această listă.
Și acum să ne imaginăm că în baza de date sunt 10000
utilizatori din 10
orașe - pentru aceste
10 orașe va trebui să extragem întregul
tabel dintr-un număr uriaș de rânduri -
va rezulta o operațiune foarte lentă cu
pierdere nesensată de resurse.
Rezolvarea problemei
Trebuie să împărțim tabelul nostru în două: într-una
vor fi stocate orașele, iar în cealaltă - utilizatorii.
În acest caz, în tabelul cu utilizatori va exista o coloană
city_id, care va face referire
la orașul utilizatorului.
Deci, să facem două tabele. Tabelul cu orașe:
| id | name |
|---|---|
| 1 | city1 |
| 2 | city2 |
| 3 | city3 |
Tabelul cu utilizatori:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Sarcini practice
Să presupunem că trebuie să stocați produse (denumire, preț, cantitate) și categoriile acestor produse. Descrieți structura de stocare.
Să presupunem că trebuie să stocați râuri și mările în care se varsă aceste râuri. Descrieți structura de stocare.
Să presupunem că trebuie să stocați orașe și țările în care se află. Descrieți structura de stocare.