Legătura tabelelor în bazele de date
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 o listă cu toate orașele. Nu vom putea să facem acest lucru 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 abia 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
cu un număr uriaș de rânduri - va rezulta
o operație foarte lentă cu o irosire
absurdă 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 |
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ă acestea. Descrieți structura de stocare.