⊗pyPmDOLT 122 of 129 menu

Tabulu saistīšana datu bāzēs Python

Pieņemsim, ka mums ir tabula ar lietotāju vārdiem un pilsētām, kurās viņi dzīvo:

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

Šīs tabulas trūkums ir tas, ka viena un tā pati pilsēta atkārtojas vairākas reizes dažādiem lietotājiem. Tas rada dažas problēmas.

Pirmkārt, pastāvīgā atkārtošanās noved pie tā, ka datu bāze sāk aizņemt daudz vairāk vietas.

Otrkārt, ir diezgan neērti veikt darbības ar pilsētām. Piemēram, mēs vēlamies izvadīt uz ekrānu sarakstu ar visām pilsētām. Tik vienkārši to izdarīt neizdosies. Mums būs jāiegūst visi lietotāji kopā ar to pilsētām, pēc tam jāizdzēš dublikāti no iegūtajām pilsētām un tikai tad mēs iegūsim šo sarakstu.

Un tagad iedomājieties, ka datu bāzē ir 10000 lietotāju no 10 pilsētām - šo 10 pilsētu dēļ mums būs jāizvelk visa tabula no milzīga daudzuma rindām - izradīsies ļoti lēna darbība ar bezjēdzīgu resursu izlietojumu.

Problēmas risinājums

Mūsu tabula jāsadala divās: vienā tiks glabātas pilsētas, bet otrajā - lietotāji. Šajā gadījumā lietotāju tabulā būs kolonna city_id, kas atsaucas uz lietotāja pilsētu.

Tātad, izveidosim divas tabulas. Tabula ar pilsētām:

cities
id name
1 city1
2 city2
3 city3

Tabula ar lietotājiem:

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

Praktiskie uzdevumi

Pieņemsim, ka jums ir jāglabā preces (nosaukums, cena, daudzums) un šo preču kategorijas. Aprakstiet glabāšanas struktūru.

Pieņemsim, ka jums ir jāglabā upes un jūras, kurās šīs upes ietek. Aprakstiet glabāšanas struktūru.

Pieņemsim, ka jums ir jāglabā pilsētas un valstis, kurās tās atrodas. Aprakstiet glabāšanas struktūru.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt