Skip to content

Latest commit

 

History

History
190 lines (128 loc) · 10.3 KB

File metadata and controls

190 lines (128 loc) · 10.3 KB

Työskentely datan kanssa: Relaatiotietokannat

 Sketchnote by (@sketchthedocs)
Työskentely datan kanssa: Relaatiotietokannat - Sketchnote by @nitya

Todennäköisesti olet aiemmin käyttänyt taulukkolaskentaohjelmaa tietojen tallentamiseen. Sinulla oli joukko rivejä ja sarakkeita, joissa rivit sisälsivät tiedot (tai datan) ja sarakkeet kuvasivat tietoja (joskus kutsutaan metatiedoiksi). Relaatiotietokanta perustuu tähän perusperiaatteeseen sarakkeista ja riveistä tauluissa, jolloin voit jakaa tiedot useisiin tauluihin. Tämä mahdollistaa monimutkaisemman datan käsittelyn, päällekkäisyyden välttämisen ja joustavuuden datan tutkimisessa. Tutkitaanpa relaatiotietokannan käsitteitä.

Kaikki alkaa tauluista

Relaatiotietokannan ytimessä ovat taulut. Kuten taulukkolaskennassa, taulu on sarakkeiden ja rivien kokoelma. Rivi sisältää datan tai tiedon, jonka kanssa haluamme työskennellä, kuten kaupungin nimen tai sademäärän. Sarakkeet kuvaavat tallennettua dataa.

Aloitetaan tutkimus luomalla taulu kaupungeista. Voisimme aloittaa niiden nimellä ja maalla. Voisit tallentaa tämän tauluun seuraavasti:

Kaupunki Maa
Tokio Japani
Atlanta Yhdysvallat
Auckland Uusi-Seelanti

Huomaa sarakkeiden nimet kaupunki, maa ja väestö kuvaavat tallennettua dataa, ja jokaisella rivillä on tieto yhdestä kaupungista.

Yhden taulun lähestymistavan puutteet

Todennäköisesti yllä oleva taulu näyttää sinulle melko tutulta. Lisätään tietokantaamme lisää dataa – vuotuinen sademäärä (millimetreinä). Keskitymme vuosiin 2018, 2019 ja 2020. Jos lisäisimme sen Tokion osalta, se voisi näyttää tältä:

Kaupunki Maa Vuosi Määrä
Tokio Japani 2020 1690
Tokio Japani 2019 1874
Tokio Japani 2018 1445

Mitä huomaat taulustamme? Saatat huomata, että toistamme kaupungin nimen ja maan yhä uudelleen. Se voi viedä paljon tallennustilaa, ja on suurelta osin tarpeetonta pitää useita kopioita. Tokion nimi on kuitenkin vain yksi, joka kiinnostaa meitä.

Kokeillaanpa jotain muuta. Lisätään uudet sarakkeet jokaiselle vuodelle:

Kaupunki Maa 2018 2019 2020
Tokio Japani 1445 1874 1690
Atlanta Yhdysvallat 1779 1111 1683
Auckland Uusi-Seelanti 1386 942 1176

Vaikka tämä välttää rivien toistamisen, se tuo mukanaan muutamia muita haasteita. Meidän pitäisi muuttaa taulun rakennetta aina, kun tulee uusi vuosi. Lisäksi, kun datamme kasvaa, vuosien pitäminen sarakkeina tekee arvojen hakemisesta ja laskemisesta hankalampaa.

Siksi tarvitsemme useita tauluja ja suhteita. Jakamalla datamme voimme välttää päällekkäisyyttä ja saada enemmän joustavuutta datan käsittelyyn.

Suhteiden käsitteet

Palataan dataamme ja päätetään, miten haluamme jakaa asiat. Tiedämme, että haluamme tallentaa kaupunkien nimet ja maat, joten tämä toimii parhaiten yhdessä taulussa.

Kaupunki Maa
Tokio Japani
Atlanta Yhdysvallat
Auckland Uusi-Seelanti

Mutta ennen kuin luomme seuraavan taulun, meidän täytyy selvittää, miten viitata kuhunkin kaupunkiin. Tarvitsemme jonkinlaisen tunnisteen, ID:n tai (teknisissä tietokantatermeissä) ensisijaisen avaimen. Ensisijainen avain on arvo, jota käytetään tunnistamaan yksi tietty rivi taulussa. Vaikka se voisi perustua itse arvoon (voisimme käyttää esimerkiksi kaupungin nimeä), sen tulisi lähes aina olla numero tai muu tunniste. Emme halua, että id koskaan muuttuu, koska se rikkoisi suhteen. Useimmissa tapauksissa ensisijainen avain tai id on automaattisesti luotu numero.

✅ Ensisijainen avain lyhennetään usein PK:ksi

cities

city_id Kaupunki Maa
1 Tokio Japani
2 Atlanta Yhdysvallat
3 Auckland Uusi-Seelanti

✅ Huomaat, että käytämme tässä oppitunnissa termejä "id" ja "ensisijainen avain" vaihdellen. Nämä käsitteet pätevät myös DataFrameihin, joita tutkit myöhemmin. DataFramet eivät kuitenkaan käytä termiä "ensisijainen avain", mutta käyttäytyvät hyvin samankaltaisesti.

Kun kaupunkitaulu on luotu, tallennetaan sademäärät. Sen sijaan, että toistaisimme koko kaupungin tiedot, voimme käyttää id:tä. Meidän tulisi myös varmistaa, että uudessa taulussa on id-sarake, sillä kaikilla tauluilla tulisi olla id tai ensisijainen avain.

rainfall

rainfall_id city_id Vuosi Määrä
1 1 2018 1445
2 1 2019 1874
3 1 2020 1690
4 2 2018 1779
5 2 2019 1111
6 2 2020 1683
7 3 2018 1386
8 3 2019 942
9 3 2020 1176

Huomaa city_id-sarake uudessa rainfall-taulussa. Tämä sarake sisältää arvoja, jotka viittaavat cities-taulun ID-arvoihin. Teknisten relaatiotietojen termein tätä kutsutaan vierasavaimeksi; se on ensisijainen avain toisesta taulusta. Voit ajatella sitä viittauksena tai osoittimena. city_id 1 viittaa Tokioon.

Note

Vierasavain lyhennetään usein FK:ksi

Datan hakeminen

Kun data on jaettu kahteen tauluun, saatat miettiä, miten sitä haetaan. Jos käytämme relaatiotietokantaa kuten MySQL, SQL Server tai Oracle, voimme käyttää kieltä nimeltä Structured Query Language eli SQL. SQL (joskus lausutaan sequel) on standardikieli, jolla haetaan ja muokataan dataa relaatiotietokannassa.

Datan hakemiseen käytetään komentoa SELECT. Periaatteessa valitset sarakkeet, jotka haluat nähdä, taulusta, jossa ne sijaitsevat. Jos haluat näyttää vain kaupunkien nimet, voit käyttää seuraavaa:

SELECT city
FROM cities;

-- Output:
-- Tokyo
-- Atlanta
-- Auckland

SELECT on kohta, jossa luetellaan sarakkeet, ja FROM on kohta, jossa luetellaan taulut.

Note

SQL-syntaksi ei ole kirjainkoon herkkä, eli select ja SELECT tarkoittavat samaa. Kuitenkin tietokannan tyypistä riippuen sarakkeet ja taulut voivat olla kirjainkoon herkkiä. Siksi on hyvä käytäntö käsitellä kaikkea ohjelmoinnissa kuin se olisi kirjainkoon herkkää. SQL-kyselyissä on yleinen käytäntö kirjoittaa avainsanat kokonaan isoilla kirjaimilla.

Yllä oleva kysely näyttää kaikki kaupungit. Kuvitellaan, että haluamme näyttää vain Uuden-Seelannin kaupungit. Tarvitsemme jonkinlaisen suodattimen. SQL:n avainsana tähän on WHERE, eli "missä jokin ehto on tosi".

SELECT city
FROM cities
WHERE country = 'New Zealand';

-- Output:
-- Auckland

Datan yhdistäminen

Tähän asti olemme hakeneet dataa yhdestä taulusta. Nyt haluamme yhdistää datan sekä cities- että rainfall-tauluista. Tämä tehdään liittämällä ne yhteen. Luot käytännössä saumakohdan kahden taulun välille ja yhdistät sarakkeiden arvot.

Esimerkissämme yhdistämme city_id-sarakkeen rainfall-taulussa city_id-sarakkeeseen cities-taulussa. Tämä yhdistää sademäärän vastaavaan kaupunkiin. Suorittamamme liitos on ns. inner join, eli jos riveillä ei ole vastaavuutta toisessa taulussa, niitä ei näytetä. Meidän tapauksessamme jokaisella kaupungilla on sademäärä, joten kaikki näytetään.

Haetaan sademäärä vuodelta 2019 kaikille kaupungeille.

Teemme tämän vaiheittain. Ensimmäinen vaihe on liittää data yhteen osoittamalla saumakohdan sarakkeet - city_id kuten aiemmin korostettu.

SELECT cities.city
    rainfall.amount
FROM cities
    INNER JOIN rainfall ON cities.city_id = rainfall.city_id

Olemme korostaneet kaksi haluamaamme saraketta ja sen, että haluamme liittää taulut city_id-sarakkeen perusteella. Nyt voimme lisätä WHERE-lauseen suodattamaan vain vuosi 2019.

SELECT cities.city
    rainfall.amount
FROM cities
    INNER JOIN rainfall ON cities.city_id = rainfall.city_id
WHERE rainfall.year = 2019

-- Output

-- city     | amount
-- -------- | ------
-- Tokyo    | 1874
-- Atlanta  | 1111
-- Auckland |  942

Yhteenveto

Relaatiotietokannat perustuvat tiedon jakamiseen useisiin tauluihin, jotka sitten yhdistetään näyttöä ja analyysiä varten. Tämä tarjoaa suuren joustavuuden laskelmien tekemiseen ja datan muokkaamiseen. Olet nähnyt relaatiotietokannan ydinkäsitteet ja miten liitos kahden taulun välillä tehdään.

🚀 Haaste

Internetissä on lukuisia relaatiotietokantoja. Voit tutkia dataa käyttämällä yllä opittuja taitoja.

Jälkitentti

Kertaus & Itsenäinen opiskelu

Microsoft Learnissä on useita resursseja, joiden avulla voit jatkaa SQL:n ja relaatiotietokantojen käsitteiden tutkimista

Tehtävä

Lentokenttätietojen näyttäminen


Vastuuvapauslauseke:
Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua Co-op Translator. Vaikka pyrimme tarkkuuteen, otathan huomioon, että automaattikäännöksissä saattaa esiintyä virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäiskielellä on virallinen lähde. Tärkeissä asioissa suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa tämän käännöksen käytöstä aiheutuvista väärinymmärryksistä tai tulkinnoista.