Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Samankaltaiset tiedostot
Ohjelmistojen mallintaminen, olioja relaatiomallinnuksen suhteesta

Tietokantojen suunnittelu, relaatiokantojen perusteita

Tietokannat II -kurssin harjoitustyö

HELIA 1 (17) Outi Virkki Tiedonhallinta

2. Käsiteanalyysi ja relaatiomalli

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia.

TIEDONHALLINTA - SYKSY Luento 7. Pasi Ranne /10/17 Helsinki Metropolia University of Applied Sciences

TIEDONHALLINTA - SYKSY Luento 2. Pasi Ranne /8/17 Helsinki Metropolia University of Applied Sciences

Ohjelmistotekniikan menetelmät, UML

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

Johdanto. Kiinteistöhuoltoyhtiö tarvitsee järjestelmän huoltopyyntöjen hallinnointiin

3. Käsiteanalyysi ja käsitekaavio

Ohjelmistojen mallintaminen, mallintaminen ja UML

HELIA 1 (11) Outi Virkki Tiedonhallinta

Tietokannat II -kurssin harjoitustyö

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

Tietokantakurssit / TKTL

Tietomallit. Näkökulmat tietoon. Näkökulmat tietoon. Mitä malleja olisi tarjolla? Abstraktiotasot tiedon käsittelyssä

Tietokannan suunnittelu

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

Luento 3 Tietokannan tietosisällön suunnittelu

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

Relaatiomalli ja -tietokanta

UML ja luokkien väliset suhteet

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia.

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

HELIA 1 (14) Outi Virkki Tiedonhallinta

Tietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Jouni Huotari & Ari Hovi. Käsitemallinnuksesta relaatiokantaan KÄSITEMALLI. LOOGINEN MALLI: tietomalli valittu. FYYSINEN MALLI: DBMS valittu

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2000 Tietokannan suunnittelusta Harri Laine 1

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Luokkakaavion laatiminen

2. Olio-ohjelmoinista lyhyesti 2.1

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

Ohjelmistojen mallintaminen. Luento 3, 9.11.

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

15. Ohjelmoinnin tekniikkaa 15.1

Ohjelmistojen mallintaminen, kesä 2009

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

SQL - STRUCTURED QUERY LANGUAGE

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

On autoja, henkilöitä, Henkilöllä on nimi Autolla on omistaja, joka on henkilö. Taulu AUTO(rekno, malli) Taulu HENKILO(nimi, )

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Ohjelmistojen mallintaminen, kesä 2010

Kirjoita jokaiseen erilliseen vastauspaperiin kurssin nimi, tenttipäivä, oma nimesi (selkeästi), opiskelijanumerosi ja nimikirjoituksesi

Yhteydelle voi antaa nimen kumpaankin suuntaan Sille ei tarvise antaa lainkaan nimeä Yhteysnimen asemasta tai lisäksi voidaan käyttää roolinimiä

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2006 Tiedon mallinnus ja tietokannat. Harri Laine 1. Tietokanta.

Java kahdessa tunnissa. Jyry Suvilehto

Arkkitehtuuri. Ylätason sovellusarkkitehtuuri

Luokat ja oliot. Ville Sundberg

Tietomallit. Näkökulmat tietoon. Näkökulmat tietoon. Näkökulmat tietoon. Abstraktiotasot tiedon käsittelyssä

Java ja tietokannan käsittely (JDBC)

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Visual Case 2. Miika Kasnio (C9767)

Lohdutus - tietokantadokumentti

Mikä yhteyssuhde on?

D B. Tietokannan hallinta - kurssin tavoite. Kurssilla opitaan periaatteet. Edellytyksenä osallistumiselle on Tietokantojen perusteiden hallinta

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Relaatiomallin peruskäsitteet Harri Laine 1. Relaatiotietokannat DONOTP

Helia Ohjelmointitaito Tuomas Kaipainen Mermit Business Applications Oy Mermit Business Applications

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

Kirjasto Relaatiotietokannat Kevät Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

15. Ohjelmoinnin tekniikkaa 15.1

Ohjelmistojen mallintaminen, kertausta

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2004 Tietokannan suunnittelusta. Harri Laine 1

Ohjelmoinnin jatkokurssi, kurssikoe

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Johdanto & yleistä Harri Laine 1. Tietokanta. Tiedosto

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

4. Olio-ohjelmoinista lyhyesti 4.1

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet

HAAGA-HELIA heti09 1 (27) ICT05 Tiedonhallinta ja tietokannat O.Virkki Relaatiomalli

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, , H.Laine

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

CSE-A1200 Tietokannat

Tietotekniikan laitos Käki-projekti TIETOKANTASUUNNITELMA. 1. Johdanto

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Ohjelmistojen mallintaminen, sekvenssikaaviot

1. Olio-ohjelmointi 1.1

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Ohjelmistojen mallintaminen, syksy 2011, laskuharjoitus 2

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

TIE Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki

16. Javan omat luokat 16.1

Helsingin yliopisto/tktl Tietokantojen perusteet, k 2003 Relaatiomallin peruskäsitteet Harri Laine 1. Tietomallit. Näkökulmat tietoon

Oliotietokannat. Nääsvillen Oliopäivät Pekka Kähkipuro Kehitysjohtaja, FT

Helsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista

Transkriptio:

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty relaatiotietokantojen ja tietosisällön mallintamista yhtenä työkaluna on ollut UML:n luokkakaavio Oliomallinnuksessa mallinnetaan ohjelmistojen toimintaa useammalta abstraktiotasolta Relaatiomallinnuksessa taas mallinnetaan pysyväisluonteista (tallennettavaa) dataa Lähes kaikki ohjelmistot käyttävät pysyväisluonteista dataa

Tiedon mallintaminen relaatiotietokannassa Järjestelmän tietosisältöä mallinnetaan useammalla abstraktiotasolla Kohdealueen tietosisältöä mallinnettaessa halutaan Luokkakaavio (käsitetaso) Tietokantakaavio (looginen taso) Ja mahdollisesti fyysisen tason kaavioita ei käsitelty tietokantojen perusteissa Järjestelmän suorituskyky oleellista, tarkoituksena on löytää tehokas tallennustapa Tietokannanhallintajärjestelmä käsittelee miljoonia tietueita

Oliomallinnus ja relaatiotietokanta UML-luokkakaaviossa mallinnetaan luokkien rakennetta. Oliot ovat luokkien ilmentymiä. Relaatiotietokannassa yksi olio vastaa yhtä riviä tietokantataulussa. Tällä hetkellä vallitsevissa olio-ohjelmointikielissä ei ole vastaavaa hakutoiminallisuutta kuin relaatiotietokannoissa Relaatiotietokannat mahdollistavat myös ohjelmointikieliriippumattoman näkymän tallennettuun tietoon Olio-ja relaatiomallien yhteensovittamiseksi käytetään oliorelaatiokuvausta (object-to-relational mapping, ORM)

Tietokantataulu Taulun nimi ROOLI ID NIMI sarakkeet 1 Tuottaja yksittäinen arvo 2 Näyttelijä rivejä 3 Ohjaaja Ylläolevaa taulua vastaava luokka: public class Rooli { private String nimi;... } Viitteen id kanssa: public class Rooli { private int id; private String nimi;... }

Olioiden esittäminen relaatiokannassa Olioiden tallentaminen tietokantaan on usein suoraviivaista public class Huoltohenkilo { private String nimi; private String puhelinnumero; private List<Huoltotapahtuma> huoltotapahtumat;... } public class Huoltotapahtuma { private String kuvaus; private Huoltohenkilo henkilo;... }

Olioiden esittäminen relaatiokannassa Lisätään luokkakaavioon avaimet (id-kentät) public class Huoltohenkilo { private int id; private String nimi; private String puhelinnumero; private List<Huoltotapahtuma> huoltotapahtumat;... } public class Huoltotapahtuma { private int id; private String kuvaus; private Huoltohenkilo henkilo;... }

Olioiden esittäminen relaatiokannassa Luodaan tietokantataulut SQL-create komennoilla: CREATE TABLE Huoltohenkilo ( id int, nimi text, puhelinnumero text, constraint huoltohenkilo_pk primary key (id)) CREATE TABLE Huoltotapahtuma ( id int, kuvaus text, constraint huoltotapahtuma_pk primary key (id), constraint huoltohenkilo_fk foreign key (huoltohenkilo_id) references Huoltohenkilo(id)) Kun olio tallennetaan tietokantaan, siitä luodaan rivi (tai päivitetään siihen liittyvää jo olemassaolevaa riviä) Kun olio ladataan tietokannasta, ladataan olio tietyn id:n (tai hakuehtojen) perusteella

Olioiden esittäminen relaatiokannassa Entä jos huoltohenkilölle liitetään osoite? Yksi tapa käyttää kompositiota. Miten relaatiomallissa? Onko Osoite-luokan kentät (ei näytetty) Asiakas-taulun sarakkeita? Luodaanko Osoite-luokalle oma erillinen taulu? Olio- ja relaatiomallin yhteensovittaminen ei ole aina helppoa.

Yhteensovittamisen ongelmia Olio- ja relaatiomallien yhteensovittamisessa näkyviä ongelmia syntyy esim. seuraavista: Mallinnuksen tarkkuustaso Luokkahierarkian tallennus Olioiden identiteetit Yhteyksien tallentaminen Yhteyksien navigoituminen Joidenkin arvioiden mukaan jopa 30% vanhempien oliojärjestelmien koodiriveistä on toisteista olio- ja relaatiomuunnosten toteuttamista.

Yhteensovittamisen ongelmia Esim viidensissä laskuharjoituksissa (Java-puolella) nähty muunnos Viesti-olioiksi: public List<Viesti> haeviestit() throws SQLException { List<Viesti> viestit = new ArrayList(); Connection yhteys = luoyhteys(); Statement kysely = yhteys.createstatement(); ResultSet tulosjoukko = kysely.executequery("select * from Viesti"); while (tulosjoukko.next()) { int id = tulosjoukko.getint("id"); int kayttajaid = tulosjoukko.getint("kayttaja_id"); Date kirjoitusaika = tulosjoukko.getdate("kirjoitusaika"); String teksti = tulosjoukko.getstring("teksti"); } Viesti v = new Viesti(id, kayttajaid, kirjoitusaika, teksti); viestit.add(v); } yhteys.close(); return viestit;

Yhteensovittamisen ongelmia Perinnälle ei ole suoraa vastetta relaatiomallissa. Kukin aliluokka määrittelee oman tietosisältönsä Kullakin oliolla on luokka Taulujen viiteavaimet voivat osoittaa vain yhteen viitattuun tauluun

Identiteetti Huoltohenkilön identifioivaksi kentäksi määriteltiin uusi kenttä id Javassa olioita voidaan tunnistaa viitesamuuden ja identiteettisamuuden kannalta Viitesamuus: olio1 == olio2 Identiteettisamuus: olio1.equals(olio2) Tietokannan avainkenttä tuo kolmannen samuuden käsitteen Esimerkiksi tietojen muokkaustilanteessa järjestelmässä voi olla olioita, jotka viite- ja identiteettitasolla ovat eriäviä, mutta tietokannan kannalta samoja

Yhteyksien tallentaminen UML:ssä navigoituvuussääntöjä merkitään nuolen avulla. Nuoli vastaa olion viitettä Olioviite viittaa aina yhteen suuntaan Molempiin suuntiin navigoitavat yhteydet toteutetaan kahtena olioviitteenä Relaatiokannassa viiteavain viittaa pääavaimeen

Navigoiminen olioverkoissa Olioista koostuville ohjelmille on luontaista käsitellä olioverkkoja ja siirtää palvelu osaolioille Palveluun osallistuvien olioiden tunnistaminen on vaikeaa etukäteen oliomallinnus auttaa Olioiden hakeminen tietokannasta ei ole aina tehokasta: Kunkin olion noutaminen tietokannasta siinä vaiheessa, kun olioon liittyviä tietoja tarvitaan, on tehotonta n+1 kyselyn ongelma

ORM Olio- ja relaatiomallien välisten yhteyksien kuvaamiseen käytetään usein erillistä työkalua tai sovelluskehystä ORM-kuvaus määrittelee miten oliomalli esitetään relaatiotietokannassa ORM-työkalu tarjoaa rajapinnat olioiden tietokannasta lataamiseksi ja tallentamiseksi Javassa standardi Java Persistence API

ORM:n ratkaisema ongelmakenttä ORM-työkalut pyrkivät vastaamaan seuraaviin mm. kysymyksiin: Minkälainen rakenne tallennettavilla luokilla tulee olla Miten O/R kuvaukset esitetään Miten periytymisrakenteet tallennetaan Olioidentiteettiin liittyvät ongelmat Miten sovelluslogiikka toimii tallennuslogiikan kanssa kerrostettu arkkitehtuuri! Miten tallennettavat oliot elävät Miten olioita noudetaan tietokannasta Miten olioverkkoja noudetaan tehokkaasti

JPA Java Persistence API Pysyväisolioiden tallentamiseen käytettävä rajapinta Nykyään käytössä toinen versio, JPA2 Demo.