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