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