⊗pyPmDOLT 122 of 129 menu

Taulujen linkittäminen tietokannoissa Pythonissa

Oletetaan, että meillä on taulu käyttäjien nimistä ja kaupungeista, joissa he asuvat:

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

Tämän taulun haittana on, että sama kaupunki toistuu useita kertoja eri käyttäjille. Tämä johtaa joihinkin ongelmiin.

Ensinnäkin, jatkuva toistuminen johtaa siihen, että tietokanta alkaa käyttää paljon enemmän tilaa.

Toiseksi, on melko hankalaa suorittaa toimintoja kaupungeilla. Esimerkiksi haluamme näyttää ruudulla listan kaikista kaupungeista. Näin yksinkertaisesti sitä ei voida tehdä. Meidän täytyy hankkia kaikki käyttäjät yhdessä heidän kaupunkiensa kanssa, poistaa sitten kaksoiskappaleet hankituista kaupungeista ja vasta sitten saamme tämän listan.

Entä jos tietokannassa on 10000 käyttäjää 10 kaupungista - näiden 10 kaupungin takia meidän täytyy hankkia koko taulu valtavasta määrästä rivejä - siitä tulee erittäin hidas toimenpide, joka tuhlaa resursseja turhaan.

Ongelman ratkaisu

Meidän täytyy jakaa taulumme kahteen: toiseen tallennetaan kaupungit ja toiseen - käyttäjät. Samaan aikaan käyttäjätaulussa on sarake city_id, joka viittaa käyttäjän kaupunkiin.

Joten, tehdään kaksi taulua. Taulu kaupungeista:

cities
id name
1 city1
2 city2
3 city3

Taulu käyttäjistä:

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

Käytännön tehtävät

Oletetaan, että sinun täytyy tallentaa tuotteita (nimi, hinta, määrä) ja näiden tuotteiden kategoriat. Kuvaile tallennusrakenne.

Oletetaan, että sinun täytyy tallentaa joet ja meret, joihin nämä joet laskevat. Kuvaile tallennusrakenne.

Oletetaan, että sinun täytyy tallentaa kaupungit ja maat, joissa ne sijaitsevat. Kuvaile tallennusrakenne.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää