⊗pyPmDOLT 122 of 129 menu

Աղյուսակների կապում Python-ում տվյալների բազաներում

Ենթադրենք, մենք ունենք աղյուսակ օգտատերերի անուններով և քաղաքներով, որտեղ նրանք ապրում են.

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

Գործնական առաջադրանքներ

Ենթադրենք, դուք պետք է պահեք ապրանքներ (անվանում, գին, քանակ) և այդ ապրանքների կատեգորիաները: Նկարագրեք պահպանման կառուցվածքը:

Ենթադրենք, դուք պետք է պահեք գետեր և ծովեր, որոնց մեջ թափվում են այդ գետերը: Նկարագրեք պահպանման կառուցվածքը:

Ենթադրենք, դուք պետք է պահեք քաղաքներ և երկրներ, որոնցում դրանք գտնվում են: Նկարագրեք պահպանման կառուցվածքը:

Հայերեն
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել