Tietokannat ja tiedonhallinta

Johdanto

Ennen kuin mennään varsinaiseen sisältöön, on hyvä alkuun vakiinnuttaa tärkeimpiä käsitteitä. Tähän lukuun on kerätty yleisimmät tietokantoihin ja tiedonhallintaan liittyviä käsitteitä. Käsitteet perustuvat Elmasrin ja Navathen [15] esittämiin määritelmiin.

Tietokanta

Tietokanta (database) on yleisellä tasolla kokoelma toisiinsa liittyvää dataa. Tavallisesti tietokannasta puhuttaessa oletetaan lisäksi, että sillä on seuraavat ominaisuudet:

  • Tietokanta kuvastaa jotakin osaa reaalimaailmasta. Jos reaalimaailman siinä osassa, jota tietokanta kuvaa tapahtuu muutoksia, muutokset heijastuvat myös tietokantaan.
  • Tietokanta on loogisesti yhtenäinen kokoelma dataa, ja tällä datalla on luontainen merkitys. Toisin sanoin tietokannan data liittyy jotenkin toisiinsa. Satunnainen osajoukko tietokannan datasta ei ole tietokanta.
  • Tietokannan rakenne ja data on suunniteltu ja toteutettu tiettyä tarkoitusta varten, ja tietokannalla on harkittu käyttäjäryhmä ja sovellusohjelma.

Esimerkki

Yleisin esimerkki tietokannasta lienee verkkokaupan toimintaan tarkoitettu tietokanta:

  • Se kuvastaa osaa reaalimaailmasta, kuten asiakkaita, tuotteita ja ostoksia. Reaalimaailman osa määräytyy tietokannan kohdealueesta eli kontekstista, jossa tietokantaa käytetään. Esimerkiksi verkkokaupan toiminnan kannalta tarvitaan asiakkaan osoitetiedot, mutta tuskin asiakkaan silmien väriä (ellei se ole verkkokaupan toiminnan kannalta tärkeää, esim. meikkiverkkokauppa).

  • Se on loogisesti yhtenäinen kokoelma dataa: asiakkaiden, tuotteiden ja ostoksien välillä on erilaisia yhteyksiä (esim. asiakas voi laittaa tuotteita ostokoriin).

  • Sen rakenne ja data on suunniteltu käyttötarkoitukseensa: verkkokaupan tietokanta mahdollistaa verkkokaupan toiminnan.

Tietokannanhallintajärjestelmä ja tietokantajärjestelmä

Tietokannanhallintajärjestelmä (Database Management System, DBMS) on ohjelmisto, joka mahdollistaa tietokannan rakenteen määrittämisen, datan etsimisen, lisäämisen, poistamisen ja muokkaamisen sekä tietokannan suojaamisen, ylläpidon ja jakamisen eri sovellusohjelmille ja käyttäjille. Tietokannanhallintajärjestelmä tarjoaa siis käyttäjille ja sovelluksille yksinkertaistetun käyttöliittymän datan käsittelyyn. Tietokannanhallintajärjestelmän rakennetta esitellään tarkemmin Luvussa 2.1.

Tietokantajärjestelmä (database system) on tietokannan, tietokannanhallintajärjestelmän ja niitä käyttävän sovellusohjelman yhteisnimitys. Sovellusohjelma tarjoaa loppukäyttäjille toimintalogiikan ja käyttöliittymän, jonka avulla järjestelmää käytetään. Sovellusohjelma voi olla esimerkiksi verkkosivu, laitteelle asennettava sovellus tai vaikkapa yksittäinen palvelinohjelma. Nykyään on myös tavallista, että tietokantajärjestelmä sisältää useita tietokantoja, sovelluksia ja jopa tietokannanhallintajärjestelmiä.

Kuvio 2.1: Tietokantajärjestelmän yleinen rakenne.
Kuvio 2.1: Tietokantajärjestelmän yleinen rakenne.

Esimerkki

On olemassa tuhansia kaupallisia sekä avoimia tietokannanhallintajärjestelmiä mitä erilaisimpiin käyttötarkoituksiin. Tämän lisäksi yritykset voivat ylläpitää omia suljettuja tietokannanhallintajärjestelmä kattamaan kohdealueensa erikoisia vaatimuksia.

Joulukuussa 2024 seuraavat 10 tietokannanhallintajärjestelmää olivat suosituimpia:

  1. Oracle DB (yleiskäyttöinen, ensisijaisesti relaatiomalli)
  2. MySQL (yleiskäyttöinen, ensisijaisesti relaatiomalli)
  3. Microsoft SQL Server (yleiskäyttöinen, ensisijaisesti relaatiomalli)
  4. PostgreSQL (yleiskäyttöinen, ensisijaisesti relaatiomalli)
  5. MongoDB (yleiskäyttöinen, ensisijaisesti dokumenttipohjainen)
  6. Redis (ensisijaisesti avain-arvoparipohjainen, käytetään usein välimuistina)
  7. Snowflake (tietokanta pilvipalveluna, relaatiomalli)
  8. Elasticsearch (ensisijaisesti hakukoneiden rakentamiseen)
  9. IBM Db2 (yleiskäyttöinen, ensisijaisesti relaatiomalli)
  10. SQLite (relaatiomalli, tarkoitettu sovelluksen sisäisiin yhden tiedoston tietokantoihin)

(Lähde: https://db-engines.com/en/ranking)

Tässä materiaalissa tutustumme SQLite-tietokannanhallintajärjestelmään. SQLiten erikoisuus on sen yksinkertaisuus helppo upotettavuus: SQLite-tietokannat tallentuvat yhteen tiedostoon, eikä tietokannan käyttäminen vaadi erityisiä palvelinohjelmistoja. SQLite on käytössä muun muassa selaimissa, mobiilisovelluksissa sekä IoT-laitteissa.

Tietomalli

Tietomalli (data model) on määritelmä tietorakenteista (kuten relaatio), operaatioista (kuten liitos) ja niihin liittyvistä, mallin kannalta tärkeistä käsitteistä. Esimerkiksi relaatio- tai verkkomalli ovat tietomalleja. Tietomallista, jota käytetään tietokannassa, käytetään myös nimitystä tietokantaparadigma (vrt. ohjelmointiparadigma ohjelmointikielissä).

Tietomallit voidaan jakaa kolmeen ryhmään:

  • Käsitteelliset mallit: kuvaavat, millaista kohdealueen tietoa tarvitaan ja miten se rakentuu ottamatta kantaa, miten dataa lopullisesti tallennetaan; voi mallintaa graafisesti (esim. UML-luokkakaavio tai ER-malli).
  • Loogiset mallit: kuvaavat, millaisiin tietorakenteisiin ja minkä tietomallin mukaan tieto tallennetaan ja käsitellään (esim. relaatiomalli).
  • Fyysiset mallit: kuvaavat, miten tieto tallennetaan lopullisesti levylle (esim. tietotyypit, taulualueet, levylohkot, indeksit).

Tässä materiaalissa tutustutaan yhteen käsitteellisen tason tietomalliin (ER-malli) sekä yhteen loogisen tason tietomalliin (relaatiomalli). Fyysisiä tietomalleja tässä materiaalissa ei juuri käsitellä.

Tietokannanhallintajärjestelmä noudattaa yhtä tai useampaa loogista tietomallia. Joskus tietokannanhallintajärjestelmää kutsutaan tarkemmin esimerkiksi relaatiotietokannanhallintajärjestelmäksi, oliotietokannanhallintajärjestelmäksi tai dokumenttitietokannanhallintajärjestelmäksi sen noudattaman tietomallin mukaan.

Tietue

Tietue (mm. record) on yleisesti kokonaisuus dataa ja mahdollisesti myös datan rakennetta. Tietue voi olla esimerkiksi relaatiotietokannassa tietokanta, relaatio, relaation attribuutti tai relaation attribuutin ja monikon leikkauskohta.

Tiedonhallinta

Tiedonhallinta (data management) on sitä kehitystyötä, käyttöä ja valvontaa, joka pyrkii datan ja informaation hallintaan, suojaamiseen, jakamiseen ja arvon nostamiseen [30].

Huomautus

Arkikielessä "tieto" kattaa kaikki mahdollisen tiedon riippumatta sen lähteestä. Kun puhutaan tietojärjestelmistä, tulee erottaa erilaisia tiedon tyyppejä toisistaan. Tässä materiaalissa (ja tietojärjestelmäkirjallisuudessa yleisestikin) tieto jaetaan kolmeen tasoon:

  • Data on merkityksetöntä raakatietoa kuten numeroita, tekstiä, symboleita, kuvia, ääntä tai videota.
    • Esimerkki: Luku 1 on itsessään dataa.
  • Informaatio on dataa jossakin kontekstissa. Ilman kontekstia ja sen tulkintaa data on merkityksetöntä (meaningless).
    • Esimerkki: Kontekstissa "toukokuun päivämäärä" luku 1 muuttuu informaatioksi, sillä se silloin merkitsisi päivämäärää 1.5.
  • Tietämys (knowledge) on informaatiota tietystä perspektiivistä. Perspektiivi tuo informaatiolle merkityksellisyyden (significance).
    • Esimerkki: Tietämys on, että 1. toukokuuta on vappu, joka on Suomessa virallinen liputuspäivä.

Tässä materiaalissa käytetään sanaa "tieto" silloin, kun ei ole tarpeen tehdä eroa niiden erityispiirteiden välillä.

Lähteet ja lisälukemista

[1] Armstrong, W.W. (1974). Decompositions and Functional Dependencies in Relations. ACM Transactions on Database Systems, 5(4), s. 404-430.

[2] Bertino, E. & Martino, L. (1993). Object-Oriented Database Systems - Concepts and Architectures. Addison-Wesley.

[3] Bramer, M. (2013). Principles of Data Mining. Springer.

[4] Chang, F. ... Gruber, R.E. (2006) Bigtable: A Distributed Storage System for Structured Data. Google Inc.

[5] Chen, P. (1976). The Entity-Relationship Model - Toward a Unified View of Data. ACM Transactions on Database Systems 1(1), s. 9–36.

[6] Codd, E.F. (1970). A Relational Model of Data for Large Shared Data Banks. Communications of the ACM 13(6), s. 377–387.

[7] Codd, E. F. (1972a). Further Normalization of the Data Base Relational Model. Data Base Systems: Courant Computer Science Symposia Series 6, Prentice-Hall.

[8] Codd, E. F. (1972b). Relational Completeness of Data Base Sublanguages. Data Base Systems: Courant Computer Science Symposia Series 6, Prentice-Hall.

[9] Connolly T. & Begg C. (2005). Database systems - practical approach to design, implementation and management Addison-Wesley.

[10] Constine, J. (2012). How big is Facebook's data? Noudettu 28.1.2016 osoitteesta http://techcrunch.com/2012/08/22/how-big-is-facebooks-data-2-5-billion-pieces-of-content-and-500-terabytes-ingested-every-day/

[11] Darwen, H. (2010). An Introduction to Relational Database Theory. Ventus.

[12] Darwen, H., Date, C.J. & Fagin, R. (2012). A Normal Form Preventing Redundant Tuples in Relational Databases. ICDT '12 Proceedings of the 15th International Conference on Database Theory, s. 114-126.

[13] Date, C.J. (2003). An Introduction to Database Systems. Pearson.

[14] Date, C.J. (2009). SQL and Relational Theory. O'Reilly.

[15] Elmasri, R. & Navathe, S.B. (2007). Fundamentals of Database Systems. Addison-Wesley.

[16] Fagin, R. (1981). A Normal Form for Relational Databases that is Based on Domains and Keys. ACM Transactions on Database Systems, 6(3), s. 387-415.

[17] Garcia-Molina, H., Ullman, J.D. & Widom, J. (2002). Database Systems: the Complete Book. Prentice Hall.

[18] Hellerstein J.M., Stonebraker, M. & Hamilton, J. (2007). Architecture of a Database System. Foundations and Trends in Databases 1(2), s. 141-259.

[19] Hoffer, J.A., Prescott, M.B. & McFadden, F.R. (2002). Modern Database Management. Prentice-Hall.

[20] Inmon, W.H. (1992). Building the Data Warehouse. Wiley and Sons.

[21] Kent, W. (1983). A simple guide to five normal forms in relational database theory. Communications of the ACM, 26(2), 120–125. https://doi.org/10.1145/358024.358054

[22] Jukić, N., Vrbsky S., Nestorov S. & Sharma A. (2020). Database Systems: Introduction to Databases and Data Warehouses. Prospect Press.

[23] Kimball, R. (1996). The Data Warehouse Toolkit. Wiley.

[24] Krikorian, R. (2013). New tweets per second record, and how! Noudettu 28.1.2016 osoitteesta https://blog.twitter.com/2013/new-tweets-per-second-record-and-how

[25] Martin, E. (2013). Top posts of 2013, stats, and snoo year's resolutions. Noudettu 28.1.2016 osoitteesta http://www.redditblog.com/2013/12/top-posts-of-2013-stats-and-snoo-years.html

[26] Matos, V.M. & Grasser, R. (2002). A simpler (and better) SQL approach to relational division. Journal of Information Systems Education, 13(2), s. 85-87.

[27] Melton, J. (2003a). Advanced SQL:1999. Morgan Kaufmann.

[28] Melton, J. (2003b). SQL:1999. Morgan Kaufmann.

[29] Mofatt, C.L. (2009). Visual Representation of SQL Joins. https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins

[30] Mosley et al. (toim.) (2010). The DAMA Guide to the Data Management Body of Knowledge. Dama International.

[31] Leskovec, J., Rajaraman, A. & Ullman, J.D. (2014). Mining of Massive Datasets. Stanford University.

[32] Object Management Group (OMG) (2017). Unified Modeling Language. https://www.omg.org/spec/UML

[33] Quinlan, T. (1995). The Second Generation of Client/Server. Database Programming & Design, 8(5), s. 31-39.

[34] Ramakrishnan, R. & Gehrke, J. (2003). Database Management Systems. McGraw-Hill.

[35] Reddit (2015). About reddit. Noudettu 28.1.2016 osoitteesta http://www.reddit.com/about

[36] Taipalus, T. (2025). On the effects of logical database design on database size, query complexity, query performance, and energy consumption. arXiv. https://doi.org/10.48550/arXiv.2501.07449

[37] Zaniolo. C. (1982). A New Normal Form for the Design of Relational Database Schemata. ACM Transactions on Database Systems, 7(3), s. 489-499.

[38] Venkatesh, P. & Nirmala, S. (2012). NewSQL — The New Way to Handle Big Data. Noudettu 28.1.2016 osoitteesta http://opensourceforu.com/2012/01/newsql-handle-big-data/

[39] Vincent, M.W. (1998). Redundancy Elimination and a New Normal Form for Relational Database Design. Artikkeli kirjassa Semantics in Databases, s. 247-264. Springer Verlag.

[40] Watson, R.T. (2006). Data Management: Databases and Organizations. Wiley.

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.