⊗pyPmDOLT 122 of 129 menu

Lentelių susiejimas duomenų bazėse Python

Tarkime, kad turime lentelę su vartotojų vardais ir miestais, kuriuose jie gyvena:

users
id name city
1 user1 city1
2 user2 city1
3 user3 city2
4 user4 city1
5 user5 city3
6 user6 city2

Šios lentelės trūkumas yra tas, kad tas pats miestas kartojasi kelis kartus skirtingiems vartotojams. Tai sukelia tam tikrų problemų.

Pirma, nuolatinis kartojimas sukelia tai, kad duomenų bazė pradeda užimti žymiai daugiau vietos.

Antra, pakankamai nepatogu atlikti operacijas su miestais. Pavyzdžiui, mes norime atvaizduoti ekrane visų miestų sąrašą. Taip paprastai to padaryti nepavyks. Mums teks gauti visus vartotojus kartu su jų miestais, tada pašalinti dublikatus iš gautų miestų ir tik tada mes gausime šį sąrašą.

O dabar įsivaizduokime, kad duomenų bazėje yra 10000 vartotojų iš 10 miestų - dėl šių 10 miestų mums teks išgauti visą lentelę iš didžiulio kiekio eilučių - gausis labai lėta operacija su beprasme resursų švaistymu.

Problemos sprendimas

Reikia padalinti mūsų lentelę į dvi: vienoje bus saugomi miestai, o antroje - vartotojai. Be to, vartotojų lentelėje bus stulpelis city_id, kuris bus nuoroda į vartotojo miestą.

Taigi, sukurkime dvi lenteles. Lentelė su miestais:

cities
id name
1 city1
2 city2
3 city3

Lentelė su vartotojais:

users
id name city_id
1 user1 1
2 user2 1
3 user3 2
4 user4 1
5 user5 3
6 user6 2

Praktinės užduotys

Tarkime, jums reikia saugoti prekes (pavadinimas, kaina, kiekis) ir šių prekių kategorijas. Aprašykite saugojimo struktūrą.

Tarkime, jums reikia saugoti upes ir jūras, į kurias šios upės įteka. Aprašykite saugojimo struktūrą.

Tarkime, jums reikia saugoti miestus ir šalis, kuriose jie yra. Aprašykite saugojimo struktūrą.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti