Mikä on tietokanta? Perusteet, tietokantajärjestelmät ja relaatiot

Opas: Mikä on tietokanta? Perusteet, tietokantajärjestelmät ja relaatiot — selkeät esimerkit, relaatiotietokannat ja käytännön vinkit aloittelijoille ja kehittäjille.

Tekijä: Leandro Alegsa

Tietokanta on järjestelmä, johon tallennetaan ja jossa säilytetään tietoja (mitä tahansa tietoa).

Tietokantamoottori voi lajitella, muuttaa tai tarjota tietokannassa olevia tietoja. Itse tiedot voidaan tallentaa monin eri tavoin; ennen digitaalisia tietokoneita käytettiin kortistoja, painettuja kirjoja ja muita menetelmiä. Nykyään suurin osa tiedoista säilytetään tietokonetiedostoissa.

Tietokantajärjestelmä on tietokoneohjelma sähköisten tietokantojen hallintaa varten. Hyvin yksinkertainen esimerkki tietokantajärjestelmästä on sähköinen osoitekirja.

Tietokannan tiedot on järjestetty jollakin tavalla. Ennen tietokoneiden käyttöönottoa työntekijätietoja säilytettiin usein arkistokaapeissa. Kullekin työntekijälle oli yleensä yksi kortti. Kortista löytyi tietoja, kuten työntekijän syntymäaika tai nimi. Myös tietokannassa on tällaisia "kortteja". Käyttäjän silmissä kortti näyttää samalta kuin ennen vanhaan, mutta tällä kertaa se on näytöllä. Tietokoneelle kortin tiedot voidaan tallentaa eri tavoin. Jokainen näistä tavoista tunnetaan tietokantamallina. Yleisimmin käytettyä tietokantamallia kutsutaan relaatiotietokantamalliksi. Se käyttää relaatioita ja joukkoja tietojen tallentamiseen. Tavalliset käyttäjät, jotka puhuvat tietokantamallista, eivät puhu relaatioista, vaan tietokantataulukoista.




 

Peruskäsitteet

Tietokanta on järjestetty kokoelma tietoa, jota hallinnoi tietokantajärjestelmä (DBMS). Tietokanta voi olla pieni, paikallinen tiedosto tai suuri hajautettu järjestelmä, joka palvelee miljoonia käyttäjiä.

  • Taulu (table): relaatiomallissa tieto tallennetaan tauluihin, jotka koostuvat riveistä ja sarakkeista.
  • Rivi (record/row): yksittäinen tietoyksikkö, usein vastaava "kortin" kanssa.
  • Sarake (field/column): yksittäinen attribuutti, esim. nimi tai syntymäaika.
  • Pääavain (primary key): sarake tai sarakkeiden yhdistelmä, joka yksilöi rivin taulukossa.
  • Viiteavain (foreign key): yhteys kahden taulun välillä, jolla varmistetaan tietojen eheys.

Tietokantajärjestelmät (DBMS)

Tietokantajärjestelmä on ohjelmisto, joka tarjoaa rajapinnan tietojen tallennukseen, hakuun, muokkaamiseen ja hallintaan. DBMS vastaa myös tietoturvasta, varmuuskopioinnista ja rinnakkaisuudesta.

  • Suosittuja relaatiotietokantoja: MySQL, PostgreSQL, SQLite, Microsoft SQL Server, Oracle Database.
  • NoSQL-järjestelmät: dokumenttipohjaiset (esim. MongoDB), avain-arvo -tietokannat (Redis), sarakenimikiset (Cassandra) ja graafitietokannat (Neo4j).

Tietokantamallit lyhyesti

  • Relaatiomalli: taulukoihin perustuva, käyttää SQL-kieltä tietojen käsittelyyn. Hyvä rakenne, vahvat relaatiot ja eheystarkastukset.
  • Hierarkinen ja verkkomalli: vanhempi malli, jossa tietorakenne muistuttaa puuta tai verkkoa; käytettiin esimerkiksi päätejärjestelmissä.
  • NoSQL-mallit: joustavampia skeeman suhteen, sopivat suurille datamäärille ja hajautetuille järjestelmille.
  • Objektitietokannat: tallentavat ohjelmisto-objekteja suoremmin, käytetään joissain erityissovelluksissa.

Relaatiotietokannat ja taulukot

Relaatiotietokannassa tieto järjestetään taulukoiksi, joissa jokainen rivi on tietue ja sarakkeet kuvaavat tietueen ominaisuuksia. Relaatiot mahdollistavat tietojen liittämisen taulukoiden välillä yhteyksien avulla (foreign keys).

Kyselyt ja SQL

Tietokannoista kysytään tietoja kyselykieliä käyttäen. Relaatiotietokannoissa yleisin on SQL (Structured Query Language), jolla suoritetaan esimerkiksi:

  • valinta: SELECT
  • lisäys: INSERT
  • päivitys: UPDATE
  • poisto: DELETE
  • rakenteen muokkaus: CREATE TABLE, ALTER TABLE

SQL mahdollistaa monimutkaiset liitokset (JOIN), ryhmittelyt (GROUP BY) ja suodattamisen (WHERE).

Transaktiot ja ACID

Monissa tietokannoissa on tuki transaktioille: joukko operaatioita suoritetaan kokonaisuutena. Tärkeä käsite on ACID:

  • Atomicity (atomisuus) — kaikki transaktion operaatiot tehdään kokonaan tai ei lainkaan.
  • Consistency (eheys) — transaktio vie tietokannan aina hyväksyttävään tilaan.
  • Isolation (eristävyys) — samanaikaiset transaktiot eivät vaikuta toistensa tuloksiin.
  • Durability (kestävyys) — suoritettujen transaktioiden tulokset säilyvät myös virhetilanteissa.

Tietomallinnus ja normalisointi

Hyvä tietokantasuunnittelu alkaa tietomallista (esim. ER-kaavio), jossa määritellään entiteetit ja niiden väliset suhteet. Normalisointi on prosessi, jossa taulukot järjestellään siten, että redundanssi vähenee ja tietojen eheys paranee. Liiallinen normalisointi voi kuitenkin heikentää suorituskykyä tietyissä operaatioissa, jolloin tehdään harkittuja optimointeja (denormalisointi).

Suorituskyky, indeksointi ja skaalautuvuus

  • Indeksit nopeuttavat hakuja, mutta vievät tilaa ja hidastavat kirjoituksia.
  • Pystysuora ja vaakasuora skaalautuvuus: pystysuora (vertical scaling) tarkoittaa tehokkaampia koneita; vaakasuora (horizontal scaling) lisää solmuja hajautetussa järjestelmässä.
  • Replikointi (kopiointi) ja sharding (datapirstoutus) auttavat käsittelemään suuria kuormituksia ja tarjoamaan korkean käytettävyyden.

Tietoturva ja varmuuskopiointi

Tietokannan suojaaminen on kriittistä: käyttöoikeuksien hallinta, salaus (levyllä ja siirrossa), auditointi ja säännöllinen varmuuskopiointi ovat perusvaatimuksia. Varmuuskopioista tulee testata palautusprosessi, jotta palautus todellisuudessa toimii.

Käyttötapaukset

Tietokantoja käytetään lähes kaikissa moderneissa järjestelmissä:

  • yrityksen liiketoimintajärjestelmät (asiakkaat, laskutus)
  • verkkopalvelut ja sovellukset (käyttäjätilit, sisältö)
  • analytiikka ja raportointi (data warehouses, data lakes)
  • IoT- ja reaaliaikajärjestelmät (sensori- ja lokitiedot)

Pilvi- ja hallinnoidut tietokantapalvelut

Yhä useampi käyttää pilvipohjaisia tietokantapalveluja (esim. hallinnoidut DBaaS-palvelut), jotka tarjoavat varmuuskopioinnit, päivitykset, automaattisen skaalauksen ja korkean käytettävyyden ilman, että käyttäjän tarvitsee hallita infratason yksityiskohtia.

Yhteenveto

Tietokanta on järjestetty tapa tallentaa ja hakea tietoa. Tietokantajärjestelmät tarjoavat välineet tiedon hallintaan, suojaamiseen ja skaalaukseen. Relaatiomallit ja SQL ovat yleisiä ja sopivat moniin käyttötarkoituksiin, mutta NoSQL- ja pilviratkaisut tarjoavat vaihtoehtoja suurten ja hajautettujen datamassojen käsittelyyn. Hyvä suunnittelu, indeksointi, varmuuskopiointi ja tietoturva ovat avainasemassa toimivan tietokantajärjestelmän rakentamisessa.

Käyttö tietokantajärjestelmissä

Tietokantajärjestelmiä käytetään muun muassa seuraaviin tarkoituksiin:

  • Ne tallentavat tietoja ja tarjoavat välineitä (työkaluja) tiettyjen tietueiden etsimiseen tietystä tietomäärästä.
  • Niihin tallennetaan erityistietoja, joita käytetään tietojen hallintaan. Näitä tietoja kutsutaan metatiedoiksi, eikä niitä näytetä kaikille tietoja tarkasteleville henkilöille.
  • Niillä voidaan ratkaista tapaukset, joissa monet käyttäjät haluavat käyttää (ja mahdollisesti muuttaa) samoja tietomerkintöjä.
  • Ne hallinnoivat käyttöoikeuksia (kuka saa nähdä tiedot, kuka voi muuttaa niitä).
  • Kun monet käyttäjät esittävät kysymyksiä tietokantaan, kysymyksiin on vastattava nopeammin. Näin viimeisenä kysymyksen esittänyt henkilö saa vastauksen kohtuullisessa ajassa.
  • Tietyt ominaisuudet ovat tärkeämpiä kuin toiset, ja niitä voidaan käyttää muiden tietojen löytämiseen. Tätä kutsutaan indeksoinniksi. Indeksi sisältää kaikki tärkeät tiedot, ja sitä voidaan käyttää muiden tietojen etsimiseen.
  • Ne varmistavat, että tiedoilla on aina konteksti. Tietokantajärjestelmään voidaan lisätä paljon erilaisia sääntöjä, jotka kertovat tietokantajärjestelmälle, onko tiedoissa järkeä. Yksi säännöistä voi sanoa, että marraskuussa on 30 päivää. Tämä tarkoittaa, että jos joku haluaa syöttää päivämääräksi 31. marraskuuta, muutos hylätään.

 

Muuttuvat tiedot

Tietokannoissa jotkin tiedot muuttuvat satunnaisesti. Tietojen muuttuessa voi ilmetä ongelmia; esimerkiksi on voinut tapahtua virhe. Virhe saattaa tehdä tiedoista käyttökelvottomia. Tietokantajärjestelmä tarkastelee tietoja varmistaakseen, että ne täyttävät tietyt vaatimukset. Se tekee tämän käyttämällä transaktiota. Tietokannassa on kaksi ajankohtaa, aika ennen tietojen muuttamista ja aika tietojen muuttamisen jälkeen. Jos jotain menee pieleen tietoja muutettaessa, tietokantajärjestelmä yksinkertaisesti palauttaa tietokannan takaisin tilaan, joka vallitsi ennen muutosta. Tätä kutsutaan palautukseksi. Kun kaikki muutokset on tehty onnistuneesti, ne vahvistetaan. Tämä tarkoittaa, että tiedot ovat jälleen järkeviä; tehtyjä muutoksia ei voi enää peruuttaa.

Jotta tämä olisi mahdollista, tietokannat noudattavat ACID-periaatetta:

  • Kaikki. Joko kaikki tietyn joukon (jota kutsutaan tapahtumaksi) tehtävät on suoritettu tai yksikään niistä ei ole suoritettu. Tämä tunnetaan nimellä Atomicity.
  • Täydellinen. Tietokannassa olevat tiedot ovat aina järkeviä. Puolivalmiita (virheellisiä) tietoja ei ole. Tätä kutsutaan johdonmukaisuudeksi.
  • Itsenäinen. Jos monet ihmiset työskentelevät samojen tietojen parissa, he eivät näe toisiaan (tai vaikuta toisiinsa). Jokaisella on oma näkemyksensä tietokannasta, joka on riippumaton muista. Tätä kutsutaan eristämiseksi.
  • Selvä. Tapahtumat on sitouduttava, kun ne on tehty. Kun transaktio on tehty, sitä ei voi peruuttaa. Tätä kutsutaan kestävyydeksi.

 

Tietokantamalli

Tietoja voidaan esittää eri tavoin.

  • Yksinkertaiset tiedostot (ns. tasotiedostot): Tämä on yksinkertaisin tietokantajärjestelmän muoto. Kaikki tiedot tallennetaan tiedostoon tavallisena tekstinä. Jokainen tieto voidaan erottaa toisistaan uudella rivillä tai pilkulla jne.
  • Hierarkkinen malli: Tieto on järjestetty puurakenteen tavoin. Kiinnostavat tiedot ovat puun lehdillä. Tietomerkintöjen väliset suhteet ovat sellaiset, että jotkin merkinnät ovat suoraan riippuvaisia toisista merkinnöistä.
  • Verkkomalli: Tietojen tallentamiseen käytetään tietueita ja joukkoja. Samanlainen kuin hierarkkinen malli, mutta tässä on paljon monimutkaisempi rakenne.
  • Suhteellinen malli: Tässä käytetään joukko-oppia ja predikaattilogiikkaa. Sitä käytetään laajalti. Tieto näyttää siltä, että se on järjestetty taulukoihin. Nämä taulukot voidaan sitten yhdistää toisiinsa niin, että niistä voidaan valita yksinkertaisia kyselyjä.
  • Oliopohjainen malli: Tieto esitetään objektien muodossa, kuten olio-ohjelmoinnissa käytetään. Ne voivat olla suoraan vuorovaikutuksessa käytettävän OOP-kielen kanssa, koska molemmilla on sisäisesti sama tietojen esitystapa.
  • Relationaalinen objektimalli: Tämä on olio- ja relaatiomallin hybridi.
  • NoSQL-malli: Tämä on uudenlainen tietokantamalli, jota käytetään yhä enemmän alalla suurten tietojen ja reaaliaikaisten verkkosovellusten yhteydessä. Tässä mallissa tiedot tallennetaan avain-arvopareina ilman tiukkaa hierarkiaa kuten muissa malleissa. NoSQL-järjestelmiä kutsutaan myös nimellä "Not only SQL", koska ne eivät salli Structured Query Language -tyyppisten kyselykielten käyttöä.

 

Tietojen järjestämistavat

Kuten tosielämässä, samaa tietoa voidaan tarkastella eri näkökulmista ja se voidaan järjestää eri tavoin. Tietoja järjestettäessä on otettava huomioon erilaisia asioita:

  • Kukin tieto olisi tallennettava mahdollisimman harvoin. Kuvittele, että naimaton nainen on merkitty piirikunnan rekisteriin, osavaltion moottoriajoneuvo-osastolle, liittovaltion sosiaaliturvaosastolle ja kansainväliselle passiosastolle. Jos hän menee naimisiin ja päättää vaihtaa nimensä, kaikille näille osastoille on ilmoitettava asiasta. Jos kaikki osastot olisivat yhteydessä toisiinsa ja hänen nimensä olisi tallennettu vain yhteen paikkaan, päivittäminen olisi helppoa.
  • Jos tiedot on tallennettu useisiin eri tietokantoihin, ne voivat olla ristiriidassa keskenään.
  • Tämä ongelma hidastaa tietojen löytämistä. Jos tietoja on paljon, tämä ongelma, eli yhden tiedon tallentaminen moneen paikkaan, vie paljon tilaa. Esimerkissämme oli neljä tietokantaa yhdelle henkilölle. Se tarkoittaa kahdeksan muutosta, jos toisella henkilöllä on täsmälleen sama ongelma.
  • Jos sinulla on tämä ongelma, sen ratkaisemiseksi on kehitetty menetelmä nimeltä tietokannan normalisointi. Tällä hetkellä on olemassa kuusi normaalimuotoa. Ne ovat keinoja, joilla voidaan nopeuttaa joidenkin tietokantojen toimintaa ja saada tiedot viemään vähemmän tilaa.

 

Aiheeseen liittyvät sivut

 

Kysymyksiä ja vastauksia

Q: Mikä on tietokanta?


V: Tietokanta on järjestelmä tietojen (minkä tahansa tiedon) tallentamista ja hoitamista varten. Sen avulla voidaan lajitella, muuttaa tai palvella siihen tallennettuja tietoja.

K: Miten ihmiset tallensivat tietoja ennen digitaalisia tietokoneita?


V: Ennen digitaalisia tietokoneita tietojen tallentamiseen käytettiin kortistoja, painettuja kirjoja ja muita menetelmiä.

K: Mikä on tietokantajärjestelmä?


V: Tietokantajärjestelmä on tietokoneohjelma sähköisten tietokantojen hallintaa varten. Sitä voidaan käyttää tietojen järjestämiseen jollakin tavalla.

K: Miltä "kortti" näyttää vanhanaikaisessa arkistokaapissa?


V: Vanhanaikaisessa arkistokaapissa oli yleensä yksi kortti kutakin työntekijää kohden, ja siinä oli tietoja, kuten syntymäaika tai nimi.

K: Miltä tämän "kortin" nykyaikainen vastine näyttää?


V: Tämän "kortin" nykyaikainen vastine näkyy pikemminkin näytöllä kuin fyysisessä muodossa.

K: Mikä on tietokantamalli?


V: Tietokantamalli tarkoittaa eri tapoja, joilla tietokone voi tallentaa "kortin" tiedot. Yleisimmin käytettyä mallia kutsutaan relaatiotietokantamalliksi, joka käyttää relaatioita ja joukkoja tietojen tallentamiseen.

K: Miten tavalliset käyttäjät viittaavat näihin malleihin puhuessaan niistä? V: Tavalliset käyttäjät puhuvat näistä malleista yleensä "tietokantatauluina" eivätkä käytä niistä puhuessaan teknisiä termejä, kuten relaatioita tai joukkoja.


Etsiä
AlegsaOnline.com - 2020 / 2025 - License CC3