⊗ppPmDOLT 381 of 447 menu

Tabulu saistīšana datu bāzēs

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 visu pilsētu sarakstu. 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 izmantošanu.

Problēmas risinājums

Mūsu tabula ir 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

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

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

Pieņemsim, ka jums ir jāglabā pilsētas un valstis, kurās tās atrodas. Aprakstiet uzglabāš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