Повезивање табела у базама података у Пајтону
Претпоставимо да имамо табелу са именима корисника и градовима у којима живе:
| 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 |
Практични задаци
Претпоставимо да вам је потребно да чувате производе (назив, цена, количина) и категорије тих производа. Опишите структуру складиштења.
Претпоставимо да вам је потребно да чувате реке и мора у која се ове реке уливају. Опишите структуру складиштења.
Претпоставимо да вам је потребно да чувате градове и државе у којима се они налазе. Опишите структуру складиштења.