⊗ppPmDOLT 381 of 447 menu

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

Ենթադրենք՝ ունենք օգտատերերի անուններով և նրանց բնակավայրերով աղյուսակ.

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-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել