Поврзување на табели во бази на податоци во Python
Нека имаме табела со имиња на корисници и градови во кои тие живеат:
| id | name | city |
|---|---|---|
| 1 | user1 | city1 |
| 2 | user2 | city1 |
| 3 | user3 | city2 |
| 4 | user4 | city1 |
| 5 | user5 | city3 |
| 6 | user6 | city2 |
Недостаток на оваа табела е тоа што истиот град се повторува неколку пати за различни корисници. Ова води до одредени проблеми.
Прво, постојаното повторување води до тоа што базата на податоци почнува да зазема многу повеќе простор.
Второ, прилично е незгодно да се извршуваат операции со градови. На пример, сакаме да го прикажеме на екранот список на сите градови. Така едноставно тоа не може да се направи. Нам ќе ни треба да ги добиеме сите корисници заедно со нивните градови, потоа да ги отстраниме дупликатите од добиените градови и дури тогаш ќе го добиеме овој список.
А сега замислете дека во базата има 10000
корисници од 10 градови - заради овие
10 градови ќе мора да ја земеме цела
табела од огромен број на редови -
ќе испадне многу бавна операција со
бесмислено трошење на ресурси.
Решавање на проблемот
Треба да ја поделиме нашата табела на две: во едната
ќе се чуваат градови, а во втората - корисници.
Притоа во табелата со корисници ќе има колона
city_id, која ќе се поврзува
со градот на корисникот.
Значи, ајде да направиме две табели. Табела со градови:
| id | name |
|---|---|
| 1 | city1 |
| 2 | city2 |
| 3 | city3 |
Табела со корисници:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Практични задачи
Нека треба да чувате производи (име, цена, количина) и категории на овие производи. Опишете ја структурата на складирање.
Нека треба да чувате реки и мориња во кои влегуваат овие реки. Опишете ја структурата на складирање.
Нека треба да чувате градови и земји, во кои се наоѓаат. Опишете ја структурата на складирање.