Ohjelmistokehityksen menetelmät
  • Ohjelmistokehityksen menetelmät ja käytänteet
  • Tavoitteet
  • Työkalut
  • Toimeksiannot
    • Projektityön rajaukset ja toimeksiannot
    • Palkanlaskenta
    • Kilometrikorvaus
    • Laskutus
    • Laskun perintä
  • Ketterä ohjelmistokehitys
    • Agile esimerkki, sykli
    • Agile, Tuotteen tehtävälista
    • Agile, Käyttäjätarina ja käyttötapaus
    • Agile muu materiaali ja lähteitä
    • Agile termit (scrum)
  • Versionhallinta
    • Sanasto Git
    • Opas Gitin perusteisiin
    • Git perusteet 101
    • Git perusteet 102
    • Git perusteet 103
    • Git perusteet 104
    • Git perusteet 105
    • Git perusteet 106
    • Git perusteet 107
    • Git perusteet 108
    • Git muu materiaali ja lähteet
  • Yksikkötestaus
    • Ohjelmistotestauksen periaateet
    • NUnit lisääminen VS2019
    • NUnit perusteet 101
    • NUnit perusteet 102
    • NUnit perusteet 103
    • NUnit perusteet 104
    • NUnit perusteet 105
    • NUnit perusteet 106
    • NUnit muu materiaali ja lähteitä
    • TDD perusteet 101
    • TDD perusteet 102
    • TDD perusteet 103
    • TDD muu materiaali ja lähteitä
  • UML mallinnuskieli
    • Johdanto
  • Relaatiotietokannat
    • Johdanto
    • Sanasto
    • Mysql perusteet -videosarja
    • Pää- ja viiteavaimet
    • ER kaaviot
    • Viite-eheys ja ACID
    • SQL JOIN -lauseke
    • Normalisointi
    • SQL View
    • Tehtävä 001 Tietokannan suunnittelu
    • Indeksointi
      • Hitaat hakukyselyt
  • SQL harjoitukset ja esimerkit
    • Esimerkkitietokannan käyttöönotto
    • Mysql perusteet 101
    • Mysql perusteet 102
      • mysql-perusteet-102-vastaukset
    • Mysql perusteet 103
      • mysql-perusteet-103-vastaukset
    • Mysql perusteet 104
      • mysql-perusteet-104-vastaukset
    • Mysql perusteet 105
      • mysql-perusteet-105-vastaukset
    • Mysql perusteet 106
      • mysql-perusteet-106-vastaukset
    • SQL hakukyselyjä (VANHAT)
    • SQL harjoitukset syksy 2021
      • Vastaukset SQL harjoitukset syksy 2021
  • Miten yrittäjänä voin hyötyä ohjelmistokehityksen ostamisesta?
    • TL;DR
  • Toimeksiannot (2019/01)
    • Toimeksianto 2019/01
    • Käytänteet ja menetelmät
    • Konsoliohjelman refaktorointia
  • SCRUM harjoitustyö (2020/01)
    • Harjoitustyön sisältö
    • Harjoitustyö: Matkalasku
  • Toimeksiannot (2019/02)
    • Toimeksianto 2019/02
  • Toimeksiannot (2018/01)
    • Projekti 2018/01
    • Projekti 2018/01 Perjantaille 14.9
    • Projekti 2018/01 Käyttötapauksesta työtehtäviin
    • Projekti 2018/01 Ohjelmoinnin aloittaminen
    • Projekti 2018/01 TDD esimerkki
  • Harjoitteet (keskeneräiset)
    • Käyttäjätarinat
    • Pariohjelmointi
    • Versionhallinta
    • Testivetoinen kehitys
    • Jatkuva integraatio
    • Inkrementaalinen dokumentointi
Powered by GitBook
On this page
  • ACID -periaate
  • Atomisuus
  • Eheys
  • Eristyneisyys
  • Pysyvyys
  • Viite-eheys
  • Lähteet
  1. Relaatiotietokannat

Viite-eheys ja ACID

Tietokannan tärkeimpiä ominaisuuksia on tiedon eheyden ylläpitäminen. Tämä tapahtuu useiden eri toiminnollisuuksien avulla ja on tärkeä asia tietää tietokanta suunnittelun näkökulmasta. Kaikki tietokantaohjelmistot eivät toteuta eheyteen liittyviä ominaisuuksia samalla tavoin, joten on aina hyvä tutustua vieraaseen tietokantaohjelmistoon ensin.

Seuraavassa yhteenvedossa on käsitelty Mysql viite-eheydet sekä ACID -periaatteet mitä niillä tarkoitetaan.

ACID -periaate

ACID tarkoitetaan joukkoa tietokantajärjestelmien periaatteita ja ominaisuuksia ja lyhenne tulee seuraavista sanoista:

  • Atomisuus (Atomicity)

  • Eheys (Consistency)

  • Eristyneisyys (Isolation)

  • Pysyvyys (Durability)

Periaatteiden tarkoituksena on turvata tietokannan tietojen eheys kaikissa tilanteissa. Ominaisuudet ovat käytössä useimmissa tietokantaohjelmistoissa, jotta niitä ei tarvitsisi toteuttaa itse ja sen vuoksi tietokannan käyttäminen oikein on tärkeä huomioida.

Mysql -tietokannan kanssa huomioitavaa on, että InnoDB -tietomalli (moottori, storage engine) toteuttaa ACID -periaatteet. MyISAM -ei näitä toteuta, joten tarkista tarvittaessa mitä tapaa tietokannassa käytetään.

Atomisuus

Tarkoitetaan transaktion suorittamista kokonaan tai ei laisinkaan.

Transaktiolla tarkoitetaan erilaisia tietokantaoperaatioita, jotka on esimerkiksi tarkoitus suorittaa kokonaisuutena.

Eheys

Tarkoitetaan sitä, että tietokannan tieto on eheää (ehjä, rikkoutumaton).

Kun tietokanta muuttaa tilaansa transaktioiden yhteydessä, huolehtii tietokanta siitä, että tiedon tila on eheä myös lopputilanteessa.

Eristyneisyys

Tarkoitetaan transaktioiden olevan eristettyjä toisistaan ja toimivat yksinään. Toinen transaktio ei voi siis vaikuttaa toisen suoritukseen.

Pysyvyys

Tarkoitetaan tiedon pysyvyyttä transaktioiden jälkeen, joka pyritään siihen, että tieto ei katoa enää järjestelmästä.

Viite-eheys

Viite-eheys toteutetaan viiteavaimilla ja sillä tarkoitetaan sitä, että tietokannan lapsitauluun ei voida merkitä tietoa mitä ei esiinny sen päätaulussa.

Lapsitaulu (child table) on sellainen, jossa on viitevain toiseen tauluun. Tämä toinen taulu on kyseisen taulun päätaulu (parent table) tai monissa lähteissä on käytetty myös termiä "äititaulu".

Yllä olevassa kuvassa on esimerkki pää- ja lapsitauluista. Taulu, joka esiintyy lapsitauluna riippuu aina näkökulmasta ja siitä missä viiteavain esiintyy.

Taulu televisiosarjat on päätaulu, jos tarkastellaan sen yhteyttä luojat tauluun. Luojat taulu on siis tässä tilanteessa televisiosarjat taulun lapsitaulu. Tämä johtuu siitä, että luojat taulussa on viiteavain -kenttä (tvsarja_id), joka viittaa televisiosarjat taulun pääavaimeen (id -kentttä).

Kun kyseessä on taas tyylilajit taulu niin televisiosarjat taulu on lapsitaulu ja tyylilajit on päätaulu. Tämä johtuu siitä, että televisiosarjat taulussa on viiteavain -kenttä (tyylilajin_id), joka viittaa tyylilajit taulun pääavaimeen (tyylilajin_id).

Kolmantena esimerkkinä on televisiosarjat_tvkanavat liitostaulu. Tässä tilanteessa kyseinen liitostaulu on lapsitaulu televisiosarjat ja tvkanavat tauluille. Tällöin televisiosarjat ja tvkanavat taulut ovat päätauluja liitostaululle.

Lähteet

PreviousER kaaviotNextSQL JOIN -lauseke

Last updated 5 years ago

Näiden välisten yhteyksien huomiointi on tärkeää, koska on määritelmiä siitä miten tietokannan taulut tulevat keskenään lopulta toimimaan.

Lue lisää viittaustavoista yhteenvedosta.

ER kaaviot
ACIDWikipedia
ACIDWikipedia
Atomicity (database systems)Wikipedia
Consistency (database systems)Wikipedia
Isolation (database systems)Wikipedia
Durability (database systems)Wikipedia
MySQL :: MySQL 5.7 Reference Manual :: 14.2 InnoDB and the ACID Model
viitevainten rajoitussäännöissä
Logo
Esimerkki pää- ja lapsitauluista.
Logo
Logo
Logo
Logo
Logo
Logo