Повезивање табела у базама података у Пајтону

Претпоставимо да имамо табелу са именима корисника и градовима у којима живе:

users
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, која ће референцирати град корисника.

Па, направимо две табеле. Табела са градовима:

cities
id name
1 city1
2 city2
3 city3

Табела са корисницима:

users
id name city_id
1 user1 1
2 user2 1
3 user3 2
4 user4 1
5 user5 3
6 user6 2

Практични задаци

Задание 1

Претпоставимо да вам је потребно да чувате производе (назив, цена, количина) и категорије тих производа. Опишите структуру складиштења.

Задание 2

Претпоставимо да вам је потребно да чувате реке и мора у која се ове реке уливају. Опишите структуру складиштења.

Задание 3

Претпоставимо да вам је потребно да чувате градове и државе у којима се они налазе. Опишите структуру складиштења.