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
  • Kaavioiden tarkoitus
  • Termistön läpikäynti
  • Taulujen väliset suhteet
  • Taulujen väliset suhteet SQL kielellä
  • Muita notaatioita
  • Lähteet
  1. Relaatiotietokannat

ER kaaviot

Luvussa käsitellään Entity Relationship -kaavioita. Lyhennettynä ER tai ERD riippuen lähteistä. Niiden tarkoitus on olla apuna tietokannan suunnittelussa sekä kommunikoinnissa.

PreviousPää- ja viiteavaimetNextViite-eheys ja ACID

Last updated 5 years ago

Kaavioiden tarkoitus

Tietokantasuunnittelussa yksi osa-alue on kuvata tietokantarakennetta. Todellinen rakenne tiedetään kun se on toteutettu mutta monet ongelmat voi ratkaista paperilla. Jotta rakenteiden tulkinta olisi ymmärrettävämpää usean henkilön kanssa, on tätä varten luotu erilaisia kuvaustapoja.

ER -kaavio eli Entity Relationship Diagram kuvaa taulujen välisiä suhteita sekä niiden sisältöjä. Esimerkki kaaviosta alla.

Termistön läpikäynti

Entiteetti (eng. entity) - tarkoittaa käsiteltävää asiaa, esinettä, aihetta tai muuta kuvattua asiaa. Taulua voidaan kutsua myös tällä termillä.

Attribuutti (eng. attribute) - tarkoittaa entiteettiä kuvaavia asioita. Esimerkiksi autolla voi olla väri, malli tai renkaiden koko. Sellaiset asiat mitkä ovat tyypillisiä kuvattaville asioille. Taulujen sarakkeita kutsutaan myös siis termillä attribuutti.

Suhde (eng. relationship) - tarkoittaa kahden entiteetin välistä suhdetta miten ne ovat yhteydessä toisiinsa. Kaavioissa tämä on kuvattu viivana ja viivan päissä oleva merkintä voi tarkentaa suhteen muotoa.

Notaatio (eng. notation) - tarkoittaa yksinkertaisesti kuvaustapaa. Voidaan puhua, että kaavio on kuvattu UML notaatiolla. Esimerkeissä käytämme variksen varpaita. (Crow's Foot)

Taulujen väliset suhteet

Tietokantoja suunnitellessa on tärkeää tuntea taulujen väliset suhteet ja niiden kuvaustavat. Kyseessä ei ole sen erityisempi asia kuin, että tarkoitus on kuvata tietokannan sisältämän tiedon keskinäisiä suhteita. Esimerkiksi, jos opiskelija voi osallistua useammalle kurssille, voidaan tällöin sanoa, että opiskelijan ja kurssin välillä on eräänlainen suhde mikäli se mallinnetaan tietokannaksi. Näitä suhteita siis löytyy arkielämästä asioista, joita tietokanta sisältää.

Tietojen välillä voi olla seuraavia suhteita:

  • Yksi suhde yhteen (eng. One-to-One)

  • Yksi suhde moneen (eng. One-to-Many)

  • Moni suhde yhteen (eng. Many to One)

  • Moni suhde moneen (eng. Many-to-Many)

Yksi suhde yhteen - tarkoittaa sellaista suhdetta kahden asian välillä, joita voi olla olemassa vain yksi kerrallaan. Esimerkkinä voisimme ajatella autovuokraamoa. On sovittu, että vuokraajalla voi olla vain yksi auto vuokralla kerrallaan ja auto voi olla vain yhdellä vuokraajalla. Voisimme esittää suhteen seuraavalla kaaviolla.

Yksi suhde moneen - tarkoittaa sellaista suhdetta, jossa asia voi esiintyä usean kerran. Jatkaaksemme edellistä esimerkkiä voimme ajatella, että toimipisteellä voi olla useita vuokra-autoja mutta auto voi kuulua vain yhteen toimipisteeseen. Tällainen suhde voidaan kuvata seuraavalla kaaviolla.

Moni suhde yhteen - tarkoittaa pitkälti samankaltaista suhdetta kuin yllä oleva esimerkki. Kyse on lähinnä näkökulmasta miten asiaa tarkastellaan. Esimerkin vuoksi voimme ajatella, että usea vuokra-auto kuuluu samalle toimipisteelle ja kuvata sen seuraavasti. Huomaa, että entiteetit ovat käännetty ympäri.

Moni suhde moneen - tarkoittaa suhdetta, jossa kaksi entiteettiä voi esiintyä pareittain usealla eri tavalla. Esimerkissämme voimme ajatella, että vuokra-auton voi varata useampi henkilö ja henkilö voi vuokrata useita eri autoja. Suhde kuvattaisiin seuraavalla tavalla.

Kuvaustapoja tarkastelemalla voimme vielä todeta, että ne eivät aina selitä itseään. Siksi on tärkeää tarvittaessa perustella mikä liitos on tai mitä sillä tarkoittaa. Usein liitos voidaan pukea lauseeksi. Esimerkiksi

  • Opiskelijan on kuuluttava vähintään yhteen vuosiryhmään, vuosiryhmään voi kuulua useampi opiskelija.

  • Opiskelijalla voi kerrallaan olla yksi käynnissä oleva moduuli, moduulissa voi olla vähintään yksi tai useampi opiskelija.

Kaavioissa voidaan korostaa vielä suhteita esimerkiksi kirjoittamalla suhdetta kuvaavan viivan päälle mitä se tarkoittaa.

Kun tiedetään miten suhteita kuvataan, niitä voidaan aina tarkentaa. Esimerkiksi heti alussa esitetty tietokantamallin kuva sisältää taulujen nimiä ja sarakkeita. Näillä voidaan vielä selkeästi tarkentaa miten yhteydet on muodostettu asioiden välille.

Huomaa kuitenkin, että kuvaustapa ei välttämättä kerro miten teknisesti suhde toteutetaan. Esimerkiksi Mysql -tietokannassa suhde voidaan luoda eri tavoin. Kaavion onkin tarkoitus olla ohjeistus miten tietokantamallin tulisi toimia mutta toteutustapa voi eroa eri relaatiotietokannoissa. Ota aina tarvittaessa selvää miten näitä tulee toteuttaa. Moni suhde moneen -tilanteissa on hyvin tyypillistä luoda ns. liitostaulu.

Taulujen väliset suhteet SQL kielellä

Muita notaatioita

Esimerkeissä on käytetty notaatioina variksen varpaita. Se on yksi tunnetuista tavoista mutta kuvaustapoja on myös useita muita. Tarvittaessa ota selvää mikä kuvaustapa on, jotta osaat tulkita suhteet. Joitakin kuvaustapoja on lueteltu alla olevassa lähteessä.

Lähteet

Pääasiassa tärkeimmät suhteet on kuvattu yllä. Lähestulkoon kaikki toimivat näiden mallien mukaisesti yhdistellen. Esimerkeissä on käytetty kuvaamiseen notaatiota. Esimerkeissä ei käyty läpi kaikkia eri kuvaustapoja vaan yksittäisillä viivoilla on merkityksensä, joilla voidaan vielä tarkentaa niiden merkitystä. Käydään yksittäiset merkintätavat läpi vielä.

. SQL kielessä nämä suhteet luodaan käyttäen kyseisiä avaimia ja tarvittaessa erilaisia taulurakenteita. Myös mahdollisesti UNIQUE määrityksen käyttäminen sarakkeissa on tarpeen.

Crow's Foot (variksen varpaat)
Tutustu pää- ja viiteavaimiin
Entity–relationship modelWikipedia
ER Diagram: Entity Relationship Diagram Model | DBMS ExampleGuru99
MySQL Sample DatabaseMySQL Tutorial
Difference Between One-to-Many, Many-to-One and Many-to-Many?Stack Overflow
http://www.mysqltutorial.org/mysql-sample-database.aspx
Yksi suhde yhteen
Yksi suhde moneen
Moni suhde yhteen
Moni suhde moneen
Suhteen kuvaus
Logo
Logo
Logo
Logo