⊗pyPmDOLT 122 of 129 menu

Povezivanje tabela u bazama podataka u Pythonu

Pretpostavimo da imamo tabelu sa imenima korisnika i gradovima u kojima žive:

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

Nedostatak ove tabele je što se isti grad ponavlja nekoliko puta za različite korisnike. To dovodí do određenih problema.

Prvo, stalno ponavljanje dovodí do toga da baza podataka počinje da zauzima mnogo više prostora.

Drugo, prilično je nezgodno izvršavati operacije sa gradovima. Na primer, želimo da prikažemo na ekranu spisak svih gradova. To nećemo moći jednostavno da uradimo. Moraćemo da dobijemo sve korisnike zajedno sa njihovim gradovima, zatim da uklonimo duplikate iz dobijenih gradova i tek tada ćemo dobiti taj spisak.

A sada zamislite da u bazi ima 10000 korisnika iz 10 gradova - radi ovih 10 gradova moraćemo da izvučemo celu tabelu sa ogromnim brojem redova - dobićemo veoma sporu operaciju sa besmislenim trošenjem resursa.

Rešenje problema

Potrebno je da podelimo našu tabelu na dve: u jednoj će se čuvati gradovi, a u drugoj - korisnici. Pritom će u tabeli sa korisnicima postojati kolona city_id, koja će se odnositi na grad korisnika.

Dakle, napravićemo dve tabele. Tabela sa gradovima:

cities
id name
1 city1
2 city2
3 city3

Tabela sa korisnicima:

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

Praktični zadaci

Pretpostavimo da treba da čuvate proizvode (naziv, cena, količina) i kategorije tih proizvoda. Opišite strukturu skladištenja.

Pretpostavimo da treba da čuvate reke i mora u koja se ove reke ulivaju. Opišite strukturu skladištenja.

Pretpostavimo da treba da čuvate gradove i zemlje u kojima se oni nalaze. Opišite strukturu skladištenja.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij