Աղյուսակների կապում տվյալների բազաներում
Ենթադրենք՝ ունենք օգտատերերի անուններով և նրանց բնակավայրերով աղյուսակ.
| 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 |
Ենթադրենք՝ Ձեզ անհրաժեշտ է պահել ապրանքներ (անվանում, գին, քանակ) և այդ ապրանքների կատեգորիաները: Նկարագրեք պահպանման կառուցվածքը:
Ենթադրենք՝ Ձեզ անհրաժեշտ է պահել գետեր և ծովեր, որոնց մեջ թափվում են այդ գետերը: Նկարագրեք պահպանման կառուցվածքը:
Ենթադրենք՝ Ձեզ անհրաժեշտ է պահել քաղաքներ և երկրներ, որոնցում դրանք գտնվում են: Նկարագրեք պահպանման կառուցվածքը: