HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

Samankaltaiset tiedostot
HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

HELIA 1 (11) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Luento 3 Tietokannan tietosisällön suunnittelu

HELIA 1 (17) Outi Virkki Tiedonhallinta

Tietokannan hallintajärjestelmän (DBMS) palvelut ja rakenne

HELIA 1 (12) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin

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

812341A Olio-ohjelmointi, I Johdanto

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

1.1 Käsitteet ja termit 1.2 Historia. Luku 1. Johdanto. ITKA204 kevät

Tietokannanhallintajärjestelmä (DBMS)

HAAGA-HELIA Heti-09 1 (14) ICT05: Tiedonhallinta ja Tietokannnat O.Virkki Transaktionkäsittely

HELIA 1 (20) Outi Virkki Tiedonhallinta

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä

Relaatiomalli ja -tietokanta

Tietokantakurssit / TKTL

Näkymät ja tiedon suojaus

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

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta

HELIA 1 (15) Outi Virkki Tiedonhallinta

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

HELIA 1 (8) Outi Virkki Tietokantasuunnittelu

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

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

13/20: Kierrätys kannattaa koodaamisessakin

HAAGA-HELIA TIKO-05 1 (19) ICT23a Tietokannan suunnittelu ja toteutus O.Virkki

Sovellusarkkitehtuurit

Tietokannat II -kurssin harjoitustyö

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

HELIA 1 (17) Outi Virkki Tietokantasuunnittelu

HELIA 1 (19) Outi Virkki Tietokantasuunnittelu

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

Tietokanta (database)

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

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

TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI

TIETOKANNAT JOHDANTO

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

A TIETORAKENTEET JA ALGORITMIT

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

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

815338A Ohjelmointikielten periaatteet

HELIA 1 (13) Outi Virkki Tietokantasuunnittelu

Tietokantojen suunnittelu, relaatiokantojen perusteita

MySQL ja PostgreSQL Seminaarityö

12. Monimuotoisuus 12.1

Tietokannat II -kurssin harjoitustyö

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

Tietohakemisto ja Transaktionkäsittely

jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja

SQL - STRUCTURED QUERY LANGUAGE

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

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia

12. Monimuotoisuus 12.1

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

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

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

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

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

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

HELIA 1 (11) Outi Virkki Tiedonhallinta

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

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

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

A TIETOKANNAT, 3 op Syksy TI07. Teemu Saarelainen, lehtori Tietotekniikka teemu.saarelainen@kyamk.fi

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Mikä on tietomalli? Relaatiomallin käsitteitä 1/2 (kuva 5.1) Relaatiomallin taustaa

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

Rajapinta (interface)

1. Olio-ohjelmointi 1.1

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

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

Tietokantojen perusteet

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

18. Abstraktit tietotyypit 18.1

Ohjelmistojen mallintaminen, olioja relaatiomallinnuksen suhteesta

A TIETOKANNAT, 4 op Kevät TI09

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

TIETOKANNAT JOHDANTO JOUNI HUOTARI & ARI HOVI

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

Tiedonhallintajärjestelmän rakenne ja Suorituskyky

IHTE-1900 Seittiviestintä

IHTE-1900 Seittiviestintä

Transkriptio:

HELIA 1 (21) Luento 4.1 Oliot ja Relaatiot... 2 Relaatiomalli... 2 Oliomalli... 2 Termejä... 4 Yhteensovituksen 3 tapaa... 5 1) Oliot relaatioina / tauluina ja RDBMS... 6 Olioluokka... 7 Olion identiteetti... 8 Assosiaatiot... 9 Koostumus... 9 Hierarkia... 10 Suojaus / Kapselointi... 11 Polymorfismi... 14 2) Olioluokka relaationa ja ORDBMS... 17 3) Olioluokka abstraktina tietotyyppinä ja ORDBMS... 18 RDBMS-toimittajien asemat... 19 Oliotietokannat (OODBMS)... 20 ODMG... 20 ODMG-93 -standardi... 20

HELIA 2 (21) Oliot ja Relaatiot Relaatiomalli Syntyi 1970 Ä Codd:n artikkeli Ä lähtökohtana Tietovarastot Å 1. Kaupallinen tuote 1979 Å Saavutti nopeasti kaupallista menestystä Oliomalli syntyi 1960 luvulla Ä Simula ohjelmointikieli Ä lähtökohtana Ohjelmointi Å Kaupallinen menestys vauhdittumassa vasta 1990-luvun lopulla Ä Oliomallin mukaiset tietokannat uusi ohjelmistosektori Ei toistaiseksi kaupallista merkitystä Lastentauteja...

HELIA 3 (21) Ä olioparadigmassa on 2 herkkua: 1. komponenttiajattelu 2. luokkahierarkia ja sen tuoma koodin uudelleenkäyttö Ä Objekti-innoituksen vallassa ei ole syytä hylätä relaatioteknologian edistyneitä piirteitä: ã 4GL-ohjelmointia (arvoperusteinen saanti) vrs. 3GL-ohjelmointi (osoitinperustainen saanti, navigointi) ã potentiaalisten relaatioiden tuomaa avoimuutta vrs. staattinen tietoavaruus (so. potentiaaliset vrs. staattiset objektit, suhteet, poiminnat, ryhmittelyt, laskennat) ã DBMS:n tukemaa viite-eheyden hallintaa ã Aitoa suojausta vrs. ohjelmointiin perustuva suojaus ã Tapahtumanhallintaa Ä Tietokannoissa on tyypillisesti enemmän näkemyksiä kuin tietokantatauluja, ts. potentiaalinen tietoavaruus arvokas Å Tavoitteeksi 1. abstraktien tietotyyppien (=objektiluokkien) hyödyntäminen sekä 2. relaatiomallin avoimuuden ja joustavuuden säilyttäminen Ä sovellukset tulevat ja menevät - mutta data jää...

HELIA 4 (21) Termejä RDBMS Relational Database Management System Relaatiotietomallin mukainen tiedonhallintajärjestelmä ORDBMS Object Relational Database Management System Relaatiotietomalliin pohjautuva tiedonhallintajärjestelmä, jossa on oliomallin mukaisia laajennuksia OODBMS Object Oriented Database Management System Oliomallin mukainen tiedonhallintajärjestelmä

HELIA 5 (21) Yhteensovituksen 3 tapaa Ä Keskeinen kiista relaatiomallin ja oliomallin yhdistämisessä on keskeisten käsitteiden (ja tietorakenteiden) vastaavuus: 1. objektiluokka = domain? 2. objektiluokka = relaatio? Ä SQL3-standardissa molemmat mallit

HELIA 6 (21) 1) Oliot relaatioina / tauluina ja RDBMS Rumbaughin esittämä malli Ä Vanhin ja eniten käytetty yhteensovitustapa Ä Ei tue kunnolla monia oliopiirteitä Ä Lähtökohtana oliokaavio ja siinä kuvatut asiat Kuva: Rumbaugh: Object Oriented modeling and design (sisäkansi) Tarkastelu 1. Olioluokka 2. Attribuutit 3. Operaatiot 4. Olioinstanssi 5. Olion identiteetti 6. Suojaus 7. Assosiaatiot 8. Abstraktio 9. Monimuotoisuus

HELIA 7 (21) Olioluokka Joukko samankaltaisia olioita Luokan jäsenillä samankaltaiset ominaisuudet ja toiminnot Ä Luokka on olion malli, 'aihio', jonka avulla uusia olioita voi luoda Relaatiototeutus: jokainen luokka toteutetaan yhtenä tai useampana tauluna, joiden sarakkeet vastaavat luokan attribuutteja Ä Luokan toiminnallisuus voidaan määritellä a) tallennetuissa proseduureissa Ä Esim. Oraclessa luokan proseduurit voidaan koota package -moduuliin. Tällöin talletettu proseduuri vastaa luokan operaatiota ja moduuli luokan toiminnallista osaa. b) ulkopuolisessa ohjelmointikielessä Ä Javalla? ( joko tietokannassa tai sen ulkopuolella)

HELIA 8 (21) Olion identiteetti Ä Jokaisella oliolla oltava identifioiva tunniste. Ä riippumaton sen ominaisuuksista Ä keinotekoinen id viite Relaatiototeutus: Ä Relaatiovastine tietokantataulun pääavain Ä huomaa että yksilöitävyysvaatimus koskee koko tietokantaa ei vain ko. taulua Ä esim. kaikki pääavaimet otetaan samasta sekvenssistä Kuva / Rumbaugh s.376

HELIA 9 (21) Assosiaatiot Relaatiototeutus: 1:1 -assosiaatiot omana tauluna (tai vierasavaimina) 1:n -assosiaatiot omana tauluna (tai vierasavaimina) m:n -assosiaatiot omana taulunaan Koostumus Ä Kuten assosiaatiot

HELIA 10 (21) Hierarkia Jokainen aliluokka tarjoaa emoluokkansa tiedot ja toiminnot (mutta mahdollisesti uudelleenmääriteltyinä eli emoluokasta jossain määrin poikkeavalla tavalla) Aliluokka voi sisältää uusia tietoja ja toimintoja Kaikkia aliluokan olioita voidaan käsitellä emoluokan esittelemillä operaatioilla Relaatiototeutus: a) Luokka ja sen aliluokat toteutetaan kukin omana erillisinä tauluinaan b) Luokkaa ei toteuteta omana tauluna, ainoastaan aliluokat, joihin liitetään myös emoluokan attribuutit c) Aliluokkia ei toteuteta omina tauluinaan vaan luokka ja sen aliluokat toteutetaan yhtenä supertauluna Kuvat / Rumbaugh 382-385

HELIA 11 (21) Suojaus / Kapselointi Ä Suojauksen käsitteellä on erilainen merkitys oliopohjaisissa ja relaatiokantajärjestelmissä: Oliomalli Olion sisäinen toteutus piilotetaan Piilottaa voi ominaisuuksia ja operaatioita Olioon tarjotaan vain rajapinta (julkiset toiminnot) joita muut oliot / ohjelmoija voi käyttää Ä Sisäistä toteutusta voidaan tarvittaessa muuttaa, kunhan rajapinta ulospäin säilyy samana (so. miten kutsutaan, mitä palauttaa) leksikaaliseen kontekstiin perustuva suojaus datan ja koodin suojausta muilta käyttäjiltä Ä muita käyttäjiä ei eritellä (minä muut) Relaatiomalli käyttäjätunnuksiin, rooleihin ja käyttöoikeuksiin perustuva suojaus koodin suojaus ei kiinnostavaa

HELIA 12 (21) Relaatiototeutus Oliomalliselle suojaukselle: Ominaisuuksien suojaaminen Ä luokkaa vastaava relaatio piilotetaan kokonaan Ä Ts. taulun sijasta käytetään vain näkymää, jossa "julkiset" attribuutit esitetään Sisäinen rakenne Julkinen näkemys (tulosrelaatio) int.henkilö Sotu Etunimi Sukunimi ext.henkilö Syntymäaika Etunimi Sukunimi Onko_Luottoa int.tili tilino saldo Kaikkia Henkilö -luokan sisäisiä ominaisuuksia ei haluta esittää julkisesti, esim.sosiaaliturvatunnus ja luottosuosituksen peruste. Ä Olion tilaa saa muuttaa vain olion omilla operaatioilla, suoraa SQL-käsittelyä (Insert, Update, Delete) ei sallita. Kaikki muutokset kenttiin tehdään proseduurien / 3GL-rutiinien avulla. Ä Jos attribuuttien käyttö sallitaan olion ulkopuolelta, tulisi attribuuttia käyttää vain arvon lukemiseen (select), ei muuttamiseen

HELIA 13 (21) Operaatioiden suojaaminen Oraclessa aliohjelmia voi koota suuremmaksi kokonaisuudeksi package -rakenteen avulla, joka vastaa perinteistä moduulia tai C-kielen käännösyksikköä. Package -moduuliin voi proseduurien lisäksi määritellä muuttujia, kursoreita ja vakioita. Package -moduuliin kuuluvien proseduurien vaikutusaluetta voi rajoittaa siten, että ne ovat käytettävissä vain moduulin sisältä. Moduulin ulkopuolelle näkyvät proseduurit ovat globaaleja. Niiden käyttöä rajoitetaan käyttäjäkohtaisilla suojauksilla. Ä Jos yksittäinen proseduuri vastaa olion tiettyä operaatiota. Package vastaa luokan toiminnallista osaa. Sisäinen rakenne (Private -proseduurit) Julkinen näkemys (public -proseduurit) Henkilö-Package Public Synny() Public Kuole() Public Mene_Naimisiin(Kohde) Public OtaAvioero() Private Uusi() Private Poista() Private Aseta_Sukunimi() Private Aseta_Etunimi() Private Luo_Assosiaatio(kohde,tyyppi) Synny() Kuole() Mene_Naimisiin(Kohde) OtaAvioero() Henkilö -luokan sisäinen toiminnallisuus voidaan piilottaa Package -rakenteen avulla rajoittamalla proseduurien näkyvyysaluetta

HELIA 14 (21) Polymorfismi Järjestelmässä viitattu kohde selviää tarkasti vasta ajoaikana (ns. myöhäinen sidonta): Operaatiopolymorfismi Tietty ohjelmassa esiintyvä kutsu voi eri suorituskerroilla aktivoida eri operaatiota, jotka jakavat saman liittymän, kutsumuodon. Relaatiototeutus: Ä Oracle 7 ei tarjoa myöhäistä sidontaa, eikä niin ollen mekanismeja operaatiopolymorfismin toteuttamiseen. Ä Vastaavan kaltainen toiminnallisuus voidaan kuitenkin tarvittaessa toteuttaa "rakentamalla". Ä ohjelmointikielissä oliomallista riippumatonta monimuotoisuutta: parametrinen polymorfismi ja kuormitus samalle operaatiolle voidaan antaa useita määrityksiä siten että niihin liittyvä staattinen informaatio (parametrien määrä / tyyppi) riittää kertomaan kääntäjälle, mitä määritystä on sovellettava kunkin kutsun tapauksessa Ä Oraclen proseduureja voi kuormittaa

HELIA 15 (21) 2) Olioluokka relaationa ja ORDBMS Ä luokka määritellään kuten taulu Ä taulu luodaan luokkamäärittelyn pohjalta esim. CREATE TABLE henkilo ( hlo_id NUM hlo_nimi varchar(50) ) CREATE ROW TYPE rt_henkilo ( hlo_id REF(rt_henkilo) hlo_nimi varchar(50) ) CREATE TABLE henkilo OF TYPE rt_henkilo; Esim. Ullman s.447 (& 443?) Esim. hierarkiasta Elmasri 442 Ä Riviluokka ei tue olion kapselointia! Ä Riviluokka ei tue suoraan olion metodien määrittelyä

HELIA 16 (21) 3) Olioluokka abstraktina tietotyyppinä ja ORDBMS Relaatiomallille ei tule tehdä mitään! Se ei tarvitse täydennyksiä, korjauksia eikä lisäoletuksia. (Date, Darwen: Third Manifesto) Ä Malli, jossa oliot kuvataan relaatioina johtaa Daten mukaan loogisiin (ja käytännöllisiin) ongelmiin. Ä Parempi ratkaisu on toteuttaa objektit käyttäjän määritteleminä abstrakteina tietotyyppeinä ADT Abstract Data Type CREATE TYPE adt_osoite ( katu VARCHAR(50), postino INTEGER(5), kunta VARCHAR(20), EQUALS DEFAULT, LESS THAN osoite_lt Muiden funktioiden määrittely ); CREATE TABLE henkilo ( hlo_id NUM, hlo_nimi VARCHAR(59), osoite ADT_OSOITE ); esim. Ullman s.455

HELIA 17 (21) RDBMS-toimittajien asemat ORDBMS Oracle 8i IBM Universal Server Informix Dynamic Server RDBMS + middleware Microsoft SQL-Server 7 + Transaction server Sybase Adaptive Server + Jaguar Application Server

HELIA 18 (21) Oliotietokannat (OODBMS) Ä Objektitietokantatuotteet eivät ole vielä "valmiita". Ä Ongelmat, joita RDBMS-ohjelmistot ovat työstäneet ja osin ratkaisseet viime vuosikymmeninä, ovat retuperällä objektikannoissa, mm: eheys tietoturva concurrency transaktion hallinta toipuminen optimointi, viritys hallinnointi aputyökalut ODMG Object Database Management Group Perustettu 1991 Mukana oliotietokantatoimittajia ODMG-93 -standardi 1. ODL Object Definition Language 2. OQL Object Query Language Ä Syntaksin perustana SQL 3. 3-GL-liittymämäärittelyt

HELIA 19 (21) lisätietoa mm. http://www.odmg.org http://mordor.cs.hut.fi/~kta/odm/index.htm http://www.isc.rit.edu/~jam3198/odmg.htm http://www.dblab.ece.ntua.gr/~pvassil/sql_oql.html http://www.db.fmi.uni-passau.de/misc/sql3/