arvostelija Tietokantaherättimet Tuomas Husu Helsinki Kandidaatin tutkielma HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
|
|
- Toivo Penttilä
- 7 vuotta sitten
- Katselukertoja:
Transkriptio
1 hyväksymispäivä arvosana arvostelija Tietokantaherättimet Tuomas Husu Helsinki Kandidaatin tutkielma HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
2 HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta Fakultet Faculty Laitos Institution Department Matemaattis-luonnontieteellinen tiedekunta Tekijä Författare Author Tuomas Husu Työn nimi Arbetets titel Title Tietojenkäsittelytieteen laitos Tietokantaherättimet Oppiaine Läroämne Subject Tietojenkäsittelytiede Työn laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages Kandidaatin tutkielma sivua + 0 liitesivua Tiivistelmä Referat Abstract Tietokannat ovat perinteisesti olleet passiivisia tietovarastoja ja suorittaneet transaktioita vain käyttäjän tai sovellusohjelman pyynnöstä. Lyhyehkössä ajassa aktiivisen tietokannan ominaisuudet ovat tulleet osaksi standardinmukaisia tietokannanhallintajärjestelmiä. Tutkielma käsittelee tietokantaherättimiä aktiivisen tietokannan toteutusmekanismina. Tutkielmassa käydään läpi deklaratiiviset eheysrajoitteet, aktiivisen tietokannan määritelmä sekä tietokantaherättimet erilaisine käyttötapoineen ja toimintaperiaatteineen. ACM Computing Classification System (CCS): H.2.0 [Database Management - General]: Security, integrity, and protection, H.2.3 [Database Management - Languages]: Data description languages Avainsanat Nyckelord Keywords herätin, aktiivinen tietokanta, eheysvalvonta, relaatiotietokanta Säilytyspaikka Förvaringsställe Where deposited Muita tietoja övriga uppgifter Additional information
3 Sisältö ii 1 Johdanto 1 2 Tietokannan eheysrajoitteet 2 3 Aktiivinen tietokanta ja tapahtuma-ehto-toiminta -sääntö 6 4 Tietokantaherätin 9 5 Herättimien ja deklaratiivisten rajoitteiden yhteistoiminta 14 6 Tärkeitä sovellusalueita 17 7 Yhteenveto 18 Lähteet 19
4 1 Johdanto 1 Tavanomaiset passiiviset tietokannat suorittavat kyselyjä ja tapahtumia joko käyttäjän tai sovellusohjelman pyynnöstä. Tietokannan eheä ja käyttökelpoinen tila määritellään reliaatiomallissa [Cod70] esitetyin tavoin deklaratiivisin eheysrajoittein, joiden perusteella voidaan lausua, onko jokin tietty tietokannan tila eheä vai ei. Deklaratiiviset eheysrajoitteet mahdollistavat monipuolisen staattisen määrittelyn, mutta eivät huomioi eheän tilan puitteissa tapahtuvia tilasiirtymiä eli esimerkiksi tietyn attribuutin arvon eheyttä loukkaamatonta suhteellista muutosta, vaan ainoastaan kaksijakoisen eron: onko jokin tietty tila eheä vai ei [BMP01]. Aktiivinen tietokanta on tietokanta, joka mahdollistaa reaktiivisen reagoinnin määrättyihin tietokannan sisäisiin ja ulkoisiin tapahtumiin myös edellä mainittuihin tilasiirtymiin. Aktiivisuuden käsite ehtovartioituine toimenpiteineen laajentaa perinteisen tietokannan passivisesta tietovarastosta aktiiviseksi tiedonhallintajärjestelmän osaksi [ElN94, CCW00]. Aktiivisen tietokannan toiminta perustuu tapahtumaehto-toiminta -sääntömalliin [LMC02], jossa käyttäjä määrittelee säännön laukaisevan tapahtuman, säännön suorituksen toimeenpanon edellytyksenä olevan ehdon sekä toimenpiteet, joihin tapahtumaketjun seurauksena ryhdytään. Tietokannan aktiivisuuden toteutusmekanismi on tietokantaherätin [SKS06]. Siinä missä deklaratiiviset rajoitteet ovat staattisia ja jatkuvasti läsnäolevia määräyksiä tietokannan eheyden ylläpitämiseksi, herättimet ovat dynaamisia, tietyn ennalta määritellyn tapahtuman seurauksena automaattisesti suoritettavia toimintoja. Tietokantaherättimet eivät ole rajoitteiden kanssa kilpaileva konstruktio vaan toimintaa laajentava ominaisuus. Herätin on intuitiivisesti miellettävissä SQL-lausejoukoksi, joka suoritetaan tietyn ennalta määritellyn ehdon täytyttyä. Tyypillinen tietokantatapahtuma, johon tietokanta voidaan määritellä reagoimaan, on esimerkiksi tiedonpäivitys, kuten kuvassa 1. Valjastamalla tietokanta huolehtimaan eheysvalvonnasta deklaratiivisten rajoitteiden ja herättimien avulla saavutetaan monia etuja sovellusohjelmatasolla suoritettuun valvontaan verrattuna. Tietokantatasoinen valvonta mahdollistaa sääntöjen ulottamisen yhdellä määrittelyllä kaikkiin nykyisiin ja tuleviin sovellusohjelmiin. Tietokantatasolla määritellyt säännöt ovat keskitetysti hallittavissa ja ne ovat voimassa kaikissa erikoistapauksissakin [SiK95]. Tietokantaherättimet tulivat osaksi SQL-standardia sen kolmannessa versiossa vuonna 1999 [CPM96]. Suoraviivaisesta toimintaperiaatteestaan huolimatta tietokan-
5 2 Kuva 1: Tietokantaherätin. taherättimien suoritusarkkitehtuurin liittyy hyvin täsmällinen suoritusjärjestyksen määritelmä, jolla varmistetaan yhteistoiminta eheysrajoitteiden viite-eheyden valvontaa monipuolistavien vyörytyssääntöjen kanssa. Tämän tutkielman luvussa 2 esitellään passivisen tietokannan keinot eheysvalvontaan, luvussa 3 aktiivisen tietokannan käsite toimintaperiaatteineen ja luvussa 4 tietokantaherättimet määrittelysyntakseineen. Luvussa 5 tarkastellaan herättimien ja deklaratiivisten eheysrajoitteiden yhteistoimintaan liittyvää toimintalogiikkaa sekä luvussa 6 herättimien tarjoamia erilaisia käyttökohteita. Lopuksi luvussa 7 on yhteenveto ja pohdintaa siitä, mikä on aktiivisuuden merkitys tietokannanhallintajärjestelmille. 2 Tietokannan eheysrajoitteet Tietokannan eheysrajoitteet (integrity constraint) ovat sääntöjä, joilla pidetään huoli tietokannan tietojen määrämuotoisuudesta ja sisäisestä ristiriidattomuudesta [BMP01]. Niillä voidaan määritellä joustamattomat puitteet ja pelisäännöt, joiden mukaisuutta tietokannan sisällöltä joka hetki edellytetään. Eheysrajoitteet ovat tapa julkilausua järjestelmän ennaltasovitut reunaehdot, ei-toiminnalliset vaatimukset (nonfunctional requirement), jotka voivat ihmiselle olla hyvinkin itsestään selviä, mutta tietojärjestelmän tapauksessa ne on määriteltävä yksikäsitteisesti. Eheysrajoitteilla voidaan esimerkiksi määrätä, että henkilörekisterissä tietty henkilötunnus voi esiintyä vain kerran tai sallia henkilörekisteriin lisätyn henkilön palkan olla vain tietyllä vaihteluvälillä oleva kokonaisluku.
6 3 Tietokantojen ollessa keskitettyjä tietovarastoja niitä saattavat samanaikaisesti käyttää lukuisat eri käyttäjät ja sovellusohjelmat. Kitkattoman yhteistoiminnan edellytyksenä ovat yksiselitteiset pelisäännöt, jotka huolehtivat tietokannan määrämuotoisuudesta käyttäjien ja sovellusohjelmien tahattomista ja tahallisista eheyttä horjuttavista toimista huolimatta. Osa eheysrajoittein määrättävistä säännöistä liittyy relaatiomallin [Cod70] määräämiin reunaehtoihin tietokanta saa sisältää vain yksilöitäviä monikoita, sen sisällä voidaan viitata vain olemassaoleviin monikoihin ja attribuuttien arvojen on sisällyttävä niille määrättyihin arvojoukkoihin ja osa laajentaa relaatiomallin vaatimuksia ylläpitäjän tietokannalta edellyttämän toimintalogiikkan toteuttamiseksi eli esimerkiksi määräämällä palkka-attribuutin arvoksi työehtosopimuksen määrämään vaihteluväliin. Eheysrajoitteet voidaan jakaa avain-, viite-eheys- ja arvojoukkorajoitteisiin [SKS06]. Avainrajoitteilla määrätään relaatioiden pääavaimet ja taataan siten monikoiden yksilöllisyys. Viite-eheysrajoitteilla määritetään tietokannan tietojen väliset loogiset yhteydet ja voidaan lausua tiettyjä vaihtoehtoisia toimintaohjeita eheyden ylläpitämiseksi viite-eheyttä horjuttavien päivitysten varalle. Arvojoukkorajoitteilla asetetaan reunaehdot attribuuttien arvoille ja pakotetaan siten tietokantaan syötettävä sisältö haluttujen puitteiden mukaiseksi. Esimerkkirelaatiot Työntekijä (taulukko 1) ja Osasto (taulukko 2) kuvaavat henkilörekisteriä, jossa Työntekijä-relaatio sisältää kuvitteellisen yrityksen työntekijöiden yksilölliset henkilötunnukset, nimet, viittaukset osastoon, palkat sekä viittaukset kunkin työntekijän esimieheen. Osasto-relaatiossa on listattu osastojen yksilölliset tunnukset, nimet, viittaukset osaston päällikköön sekä kunkin osaston yhteenlasketut palkkakulut. Työntekijä hetu nimi osasto palkka esimies 001A Maisa Hiiri NULL 002B Nipa Norsu A 003C Arttu Orava A 004D Keke Krokotiili B 005E Tellu Kana C 006F Osku Strutsi C Taulukko 1: Esimerkkirelaatio Työntekijä.
7 4 Osasto tunnus nimi päällikkö palkkayht 1 Asiakaspalvelu 003C Tuotekehitys 002B Hallinto 001A Taulukko 2: Esimerkkirelaatio Osasto. Taulukossa 1 esitetyn Työntekijä-relaation deklaratiiviset eheysrajoitteet olisivat esitettävissä SQL-kielen osajoukoksi miellettävällä tietokannan määrittelykielellä (DDL, data definition language) muodossa [SKS06]: CREATE TABLE Työntekijä ( hetu CHAR(4), nimi VARCHAR(16), osasto INTEGER(1), palkka FLOAT(4,2), CONSTRAINT tyontekija_hetu_pk PRIMARY KEY (hetu), CONSTRAINT tyontekija_osasto_fk FOREIGN KEY (osasto) REFERENCES Osasto (tunnus) ON UPDATE CASCADE ON DELETE CASCADE, CONSTRAINT tyontekija_esimies_fk FOREIGN KEY (esimies) REFERENCES Tyontekija (hetu) ON UPDATE CASCADE ON DELETE SET NULL, CONSTRAINT tyontekija_palkka_check CHECK (palkka >= 1600 AND palkka <= 6600) );. Tietokantataulun luontilauseessa määritellään relaation attribuutit tietotyyppeineen, yksilöllinen hetu-pääavainattribuutti, Osasto-relaatioon viittaava osasto-attribuutti, samaan relaatioon viittaava (self-referencing) esimies-attribuutti, toimintaohjeet viiteeheyttä uhkaavien ylläpito-operaatioiden varalle sekä palkka-attribuutin vaihteluvälin määräävä arvojoukkorajoite. Toimintaohjeet määräävät, että työntekijät poistetaan rekisteristä, jos heidän osastonsa poistetaan. Sen sijaan poistettaes-
8 5 sa työntekijän esimies ei työntekijää poisteta, vaan poistetaan tältä arvo esimiesattribuutista. Vastaavasti taulukossa 2 kuvattu Osasto-relaatio voisi olla määrittelykieliseltä syntaksiltaan seuraava: CREATE TABLE Osasto ( tunnus INTEGER(1), nimi VARCHAR(16), päällikkö CHAR(4), palkkayht FLOAT(6,2), CONSTRAINT osasto_tunnus_pk PRIMARY KEY (tunnus), CONSTRAINT osasto_päällikkö_fk FOREIGN KEY (päällikkö) REFERENCES Työntekijä (hetu) ON UPDATE CASCADE ON DELETE SET NULL );. Osasto-tietokantataulun luontilauseessa listataan attribuutit tietotyyppeineen, määritellään yksilöllinen tunnus-pääavainattribuutti ja Työntekijä-taulun pääavaimeen viittaava päällikkö-viiteavainattribuutti sekä lausutaan toimintaohje viite-eheyttä uhkaavien päivitys- ja poisto-operaatioiden varalle. Päivitettäessä Työntekijä-taulun viitattua hetu-pääavainattribuuttia muutokset vyöryvät myös Osasto-taulun päällikköviiteavaimeen. Poistettaessa jonkin osaston päällikkö Työntekijä-taulusta tyhjennetään viiteavainattribuutin arvo. Deklaratiiviset eheysrajoitteet mahdollistavat viite-eheyden ylläpidon paitsi estämällä viite-eheyttä uhkaavat operaatiot, myös tarjoamalla molemmissa määrittelykielisissä esimerkeissä esitetyn kaltaisen toimintaohjemäärittelyn. Toimintaohjeet ovat määriteltävissä erikseen viite-eheyden rikkoville päivitys- ja poisto-operaatioille. Näin ollen viitatun attribuutin ollessa joko päivitys- tai poisto-operaation kohteena voidaan toimintaohjeiden avulla Silberschatzin ja kumppaneiden [SKS06] mukaan estää (restrict) operaatio, tyhjentää (set null) viittaava attribuutti, vyöryttää (cascade) viitatun attribuutin muutos viittaavaan attribuuttiin, tai korvata viittaava attribuutti oletusarvolla (set default).
9 6 Toimintaohjemäärittelyn puuttuessa viite-eheyttä uhkaavat päivitys- ja poisto-operaatiot estetään. Toimintaohjemäärittely on deklaratiivisen eheysrajoitemäärittelyn reaktiivisin ominaisuus ja monipuolistaa siten muilta osin varsin staattista valvontamekanismia. Toimintaohjeet on kuitenkin määriteltävissä vain muutamiin edellä mainittuihin viite-eheyden ylläpitoon tarkoitettuihin erikoistapauksiin, joten tilasiirtymäperustaiseen eheysvalvontaan tai taulukon 2 esimerkkirelaation palkkayhtkokonaispalkkasarakkeen automaattiseen päivittämiseen eivät toimintaohjeet tarjoa keinoja. 3 Aktiivinen tietokanta ja tapahtuma-ehto-toiminta -sääntö Aktiivinen tietokanta (active database) on nimitys tietokannalle, joka aktiivisesti reagoi määrättyihin tietokannan sisäisiin tai ulkoisiin tapahtumiin. Sen sijaan, että tietokanta suorittaisi kyselyjä ja transaktioita ainoastaan käyttäjän tai sovellusohjelman eksplisiittisen ohjauksen mukaisesti, mahdollistaa aktiivisen tietokannan hallintajärjestelmä myös automatisoitujen ehtovartioitujen toimenpiteiden määrittelyn. Toimenpiteet pannaan täytäntöön ennalta määritellyn ehdon täytyttyä ja sisällöltään ne ovat erityisesti seurannaistransaktioiden suorittamista, eheyttä rikkovien transaktioiden peruutuksia ja ihmiskäyttäjän huomion herättämistä [SKS06]. Tietokantojen aktiiviset ominaisuudet ovat olleet tiedonhallintatutkimuksen merkittävimpiä tutkimuskohteita 1980-luvun lopulta lähtien [WiC96]. Tavanomaiseen passiviseen tietokantaan verrattuna aktiivisen tietokannan etu on nimenomaisesti aktiivinen, tapahtumaperustainen reagointi, joka passivisen tietokannan avulla toteutettuna edellyttäisi Elmasrin ja Navathen [ElN94] mukaan joko erillistä periodisesti tietokantaan kyselyjä suorittavaa ohjelmaa, joka samalla kun tietokantaa normaalisti päivittävät sovellusohjelmat suorittavat tilojen muutoksia tarkistaisi kerta toisensa jälkeen onko jokin monitoroitava tapahtuma tapahtunut, tai monitoroitavan tilan tarkistamisen lisäämistä erikseen jokaiseen tietokantaan päivityksiä tekevään sovellusohjelmaan. Aktiivisuus on vaikea toteuttaa toistuvien kyselyjen avulla, koska optimaalisen tahdin määrittely tehtäville kyselyille on vaikeaa. Tahdiltaan liian harva kysely voi
10 7 johtaa kriittisen tapahtuman käsittelyyn tarkoitetun aikajakson ohittamiseen, ja liian nopeatahtinen kyselyjen suorittaminen johtaa puolestaan järjestelmän suorituskyvyn romahtamiseen. Sovellusohjelmien räätälöinnin ongelmana on niiden hallittavuuden ja ylläpidettävyyden heikkeneminen. Aivan kuten deklaratiivisten eheysrajoitteidenkin kohdalla, tietokantaperustainen määrittely mahdollistaa keskitetyn sääntöjen hallinnan ja voimassaolon kaikissa niin nykyisissä kuin tulevissakin käyttötilanteissa, ad hoc -poikkeustilanteet mukaan lukien. Aktiivisen tietokannan toiminta perustuu tapahtuma-ehto-toiminta -sääntömalliin (ECA, event-condition-action) [LMC02]. Sääntömallin semanttinen toimintamalli on suoraviivainen: tapahtuma (event) aktivoi säännön, ehto (condition) evaluoidaan ja sen ollessa tosi... toiminta (action) suoritetaan. Tapahtuma kuvaa, milloin tietokannan tulee reagoida eli minkälainen tilamuutos ansalankamaisesti laukaisee säännön. Tapahtuman ilmenemisen jälkeen testataan toimenpiteisiin ryhtymisen ehdoksi asetettu ehto ja ehdon ollessa tosi suoritetaan määrätyt toiminnot. Ehdon ollessa epätosi ei toimintoa luonnollisestikaan suoriteta. Käytännössä säännöt ovat siis muotoa: ON EVENT IF CONDITION THEN ACTION. Yleisellä tasolla aktiivinen tietokanta tarkoittaa lähinnä vain tapahtumaperustaiseen reagointiin kykenevää tietokantaa. Dittrich ja Simon ovat kumppaneineen [DGG95, SiK95] esittäneet kuitenkin huomattavasti täsmällisempiäkin määritelmiä aktiiviselle tietokannalle: 1. Aktiivinen tietokanta on tavallinen tietokanta. Kaikki passiiviselta tietokannalta vaadittava toiminnallisuus vaaditaan myös aktiiviselta tietokannalta. Jos aktiivisia ominaisuuksia ei käytetä, tulee kannan toimia kuten passiivinen tietokanta.
11 8 2. Aktiivinen tietokanta mahdollistaa tapahtuma-ehto-toiminta -sääntöjen hallinnan ja määrittelyn. Reaktiivinen käyttäytyminen on käyttäjän määriteltävissä ECA-sääntöjen avulla. (a) Aktiivisella tietokannalla on keinot tapahtumien, ehtojen ja toimintojen määrittelyyn. Toimenpiteitä aiheuttavien tilanteiden tulee olla määriteltävissä tapahtuma-ehto-pareina, jotta pystytään määräämään, milloin toimenpiteisiin ryhdytään. (b) Aktiivinen tietokanta on mahdollistaa sääntöjen hallinnan. Uusia sääntöjä on pystyttävä lisäämään, vanhoja poistamaan ja olemassa olevia muokkaamaan. Säännöt on voitava kytkeä päälle tai pois. 3. Aktiivisella tietokannalla on suoritusmalli. Tapahtumien esiintymät on havaittava ja niihin liittyvät ehdot on oltava arvioitavissa. Sääntöjen suoritusjärjestyksen tulee olla ennalta määrätty. (a) Aktiivinen tietokanta havaitsee tapahtumien esiitymät. Tietokanta havaitsee eri tyyppiset tapahtumat ilman käyttäjän tai sovellusohjelman tekemää signalointia. (b) Aktiivinen tietokanta pystyy arvoimaan ehdon. Tapahtuman havaitsemisen jälkeen informaatio on pystyttävä välittämään ehto-osille ja ehdot on pystyttävä evaluoimaan. (c) Aktiivinen tietokanta pystyy suorittamaan toimintoja. Tapahtuman jälkeen ehto-osan ollessa tosi tiedot on pystyttävä välittämään ehto-osalta toiminta-osalle ja tietokannan tulee pystyä suorittamaan tapahtuman seurauksena toimeenpantavaksi määrätyt toiminnot. (d) Aktiivisella tietokannalla on määritelty suoritussemantiikka. Tapahtumien käsittely, tunnistaminen ja signalointi ovat hyvin määriteltyjä. Tulee olla määritelty, miten, milloin ja mitä tietokannan tilaan liittyviä ehtoja evaluoidaan ja mitä toimito-osia suoritetaan tietokannan asettamien rajoitusten mukaisesti. (e) Aktiivisen tietokannan sääntöjen suoritusjärjestys on käyttäjän määriteltävissä. Tietokannan on pystyttävä määrittelemään sääntöjen suoritusjärjestys, jos samaan tapahtumaan on sidottu useita sääntöjä. Simon ja Kotz-Dittrich [SiK95] korostavat myös, että ollakseen aktiivinen tietokannan tulee paitsi olla edellä mainitut aktiiviset ominaisuudet sisältävän tietokannan
12 9 hallintajärjestelmän tukema, myös käyttää automaattisia toimintoja hyväkseen: tietokantatuotteiden tarjoamat ominaisuudet eivät vielä yksinään tee tietokannasta aktiivista, vaan ominaisuuksien on oltava käytössä. Kuva 2: Aktiivinen tietokanta [ElN94]. Kuvassa 2 on esitetty aktiivisen tietokannan toiminta. 4 Tietokantaherätin Tietokantaherätin (trigger) on tietokantaproseduuri ja aktiivisen tietokannan toteutusmekanismi. Tietokantaherätin on miellettävissä tapahtuma-ehto-toiminta -säännön SQL-standardin mukaiseksi ilmentymäksi ja tietokantatason toteutukseksi. Herättimen laukaisevaksi tapahtumaksi määritetään tiettyyn tauluun tai sarakkeeseen kohdistuva ylläpito-operaatio (UPDATE-, DELETE- ja/tai INSERT -lause), ehdoksi tarvittaessa halutun kaltainen SQL-kielinen ehtolause ja ehdon täyttyessä suoritettäväksi toiminnoksi mielivaltainen SQL-lausejoukko. Herättimelle määritetään aktivaatioaika (activation time), joka määrää, suoritetaanko herättimen toiminto ennen vai sen jälkeen sen aktivoineen operaation: esiherätin (before trigger) suoritetaan ennen sen aktivoinutta ylläpito-operaatiota ja jälkiherätin (after trigger) vastaavasti vasta sen aktivoineen ylläpito-operaation jälkeen. Esiherättimet eivät voi muokata tietokannan sisältöä, vaan niitä käytetään ensisijaisesti ehtojen tarkistukseen ja siten eheysvalvontaan esimerkiksi tarkistamaan, kasvattaako ylläpito-operaatio työntekijän palkka-attribuutin arvoa yli 20 prosentilla ja estämään muutos tarvittaessa. Jälkiherättimet voivat sisältää toimintoinaan tietokantaa muokkaavia ylläpito-operaatioita ja siksi niille ominainen käyttötapa on
13 10 toimintalogiikkaa monipuolistavien automaattisten seurannaisoperaatioiden toteutus. Tilasiirtymäperustaisia tarkasteluja voidaan tietokantaherättimen ehto-osassa tehdä viittaamalla (referencing) siirtymämuuttujiin (transition variables) päivityksen jälkeiseen ja alkuperäiseen attribuutin arvoon sekä vertaamalla näitä toisiinsa [SKS06]. Jokaisella herättimellä on käytössään molemmat arvot sisältävät tilasiirtymätaulut (transition table) [CPM96], jolloin vertaaminen on varsin suoraviivaista. Tietokantaherättimen rakeisuus (granularity) määrää herättimen suorituskertojen lukumäärän. Rakeisuus voi olla joko lause- (statement-level) tai rivitasoinen (rowlevel). Lausetasoinen herätin suoritetaan kerran jokaista sen laukaissutta ylläpitooperaatiota kohden myös silloin, kun ylläpito-operaatio ei vaikuta yhteenkään monikkoon. Rivitasoinen herätin suoritetaan kerran jokaista ylläpito-operaation vaikutuksen kohteena ollutta monikkoa kohden, mutta jätetään suorittamatta kokonaan, jos vaikutuksenalaisia rivejä ei ole. Luvussa 1 esitetyssä kuvassa 1 hahmotellun kaltainen, yli 20 prosentin palkankorotuksen estävä herätintoiminto on määriteltävissä SQL-kielessä antamalla komento: CREATE TRIGGER palkkavalvonta BEFORE INSERT OR UPDATE OF palkka ON Työntekijä REFERENCING NEW AS uusi, OLD AS vanha FOR EACH ROW WHEN (uusi.palkka > 1.2 * vanha.palkka) SQLSTATE ( Palkka ei voi kasvaa yli 20 prosenttia. );. Määrittelylauseessa herättimelle annetaan nimi palkkavalvonta. Herätin määritellään ennen varsinaista ylläpito-operaatiota suoritettavaksi esiherättimeksi ja aktivoituvaksi Työntekijä-taulun palkka-attribuuttiin kohdistuvien INSERT- ja UPDATEoperaatioiden seurauksena. Ylläpito-operaation seurauksena muuttuneeseen riviin viitataan peitenimellä (alias) uusi ja vanhaan peitenimellä vanha. Herätin määritellään FOR EACH ROW -määreellä rakeisuudeltaan rivitasoiseksi, jolloin herätintoiminto suoritetaan erikseen jokaiselle alkuperäisen ylläpito-operaation vaikutuksen alaiselle riville. Herättimen ehto-osassa testataan onko uusi attribuutin arvoksi päivitettävä palkka yli viidenneksen suurempi kuin vanha palkka, ja ehdon ollessa tosi suoritetaan herättimen toiminto, joka tässä tapauksessa on IBM:n DB2-syntaksin [IBM06] mukainen transaktion peruuttava ja virheilmoituksen tulostava SQLSTA-
14 11 TE. Oraclen kohdalla toiminto voisi olla vastaavan lopputuloksen tuottava RAI- SE_APPLICATION_ERROR -proseduuri [AAC05]. Tietokantaherättimen edellä kuvatun kaltaisen määrittelyn jälkeen sen suorittamisesta aina määrätyn tapahtuman yhteydessä huolehtii tietokannanhallintajärjestelmä. Herättimen toiminnot suoritetaan tietokannassa herättimen määrittelijän käyttöoikeuksin eli käyttäjä, jonka ylläpito-operaatiot laukaisevat herättimiä, ei tarvitse mitään oikeuksia tauluihin, joita herätintoiminnot mahdollisesti muokkaavat. Tietokantaherätinmäärityksen voi kytkeä pois päältä ALTER TRIGGER palkkavalvonta DISABLE -komennolla ja lopullisesti poistaa DROP TRIGGER palkkavalvonta -komennolla [SKS06]. Luvun 2 taulukoissa 1 ja 2 esitetyssä esimerkkitietokannassa tietokantaherättimien avulla voidaan vapauttaa sovellusohjelmat Osasto-taulun palkkayht-attribuutin ylläpidosta määrittelemällä attribuutin arvo päivittymään automaattisesti. Tapahtumat, jotka voivat aiheuttaa muutoksia osaston palkkojen summan sisältävään attribuuttiin, ovat uuden työntekijän lisääminen henkilörekisteriin, olemassa olevan työntekijän palkan muokkaaminen, olemassa olevan työntekijän siirtäminen osastolta toiselle sekä työntekijän poistaminen henkilörekisteristä. Seuraavassa tarkastelemme toiminnallisuuden mahdollistavaa tietokantaherätinmäärittelyä [SKS06, IBM06, AAC05]. Uuden työntekijän lisääminen henkilörekisteriin Herätin määritetään aktivoituvaksi, kun Työntekijä-tauluun lisätään yksi tai useampia uusia rivejä. Rivin päivityksen jälkeiseen tilaan viitataan siirtymämuuttujan peitenimellä uusi. Rivitasoisen herättimen toiminnan ehdoksi määritellään, että uudella työntekijällä on oltava osasto, jotta palkkasumman muutos voidaan osoittaa oikealle osastolle. Herättimen toiminnaksi määritetään Osasto-tauluun kohdistuva UPDATE-operaatio, joka lisää työntekijän osaston palkkayht-attribuuttin arvoon henkilörekisteriin lisätyn työntekijän palkan. CREATE TRIGGER h1 AFTER INSERT ON Työntekijä REFERENCING NEW AS uusi FOR EACH ROW WHEN (uusi.osasto IS NOT NULL) UPDATE Osasto SET palkkayht = palkkayht + uusi.palkka
15 12 WHERE osasto = uusi.osasto; Olemassa olevan työntekijän palkan muokkaaminen Herätin määritetään aktivoituvaksi, kun työntekijän palkka-attribuutin arvoa muokataan. Laukaisevaa tapahtumaa seuraavaan ja sitä edeltäneeseen tilaan viitataan siirtymämuuttujilla uusi ja vanha. Toiminnan ehtona on muutoksen kohteena olevan henkilön osastomäärityksen poikkeaminen tyhjästä arvosta. Herättimen toimintana suoritetaan UPDATE-operaatio Osasto-tauluun, mikä sekä vähentää kokonaissummasta vanhan palkan että lisää siihen uuden. CREATE TRIGGER h2 AFTER UPDATE OF palkka ON Työntekijä REFERENCING NEW AS uusi, OLD AS vanha FOR EACH ROW WHEN (uusi.osasto IS NOT NULL) UPDATE Osasto SET palkkayht = palkkayht + uusi.palkka - vanha.palkka WHERE osasto = uusi.osasto; Olemassa olevan työntekijän siirtäminen osastolta toiselle osastolle Herätin määritetään aktivoituvaksi, kun työntekijän osasto-attribuutin arvoa muutetaan. Herättimelle ei määritetä ehtoa, vaan toiminto suoritetaan aina, kun herätin aktivoituu. Toiminnaksi määritetään kaksi SQL-lausetta, joista ensimmäinen lisää työntekijän palkan uuden osaston kokonaispalkkaan ja toinen vähentää palkan vanhan osaston kokonaispalkasta. CREATE TRIGGER h3 AFTER UPDATE OF osasto ON Työntekijä REFERENCING NEW AS uusi, OLD AS vanha FOR EACH ROW BEGIN UPDATE Osasto SET palkkayht = palkkayht + uusi.palkka WHERE osasto = uusi.osasto; UPDATE Osasto SET palkkayht = palkkayht - vanha.palkka
16 13 WHERE osasto = vanha.osasto; END; Työntekijän poistaminen henkilörekisteristä Herätin määritetään aktivoituvaksi, kun Työntekijä-taulusta poistetaan yksi tai useampia rivejä. Herättimen ehdoksi määritetään osasto-määrityksen olemassaolo poistettavalla henkilöllä. Herättimen toiminto on vähentää poistettavan henkilön palkka tämän osaston kokonaispalkasta. CREATE TRIGGER h4 AFTER DELETE ON Työntekijä REFERENCING OLD AS vanha FOR EACH ROW WHEN (vanha.osasto IS NOT NULL) UPDATE Osasto SET palkkayht = palkkayht - vanha.palkka WHERE osasto = vanha.osasto; Tietokantaherättimien määrittelysyntaksin voi huomata olevan täsmälleen luvussa 3 esitetyn tapahtuma-ehto-toiminta -säännön mukainen: ensin määritetään tapahtuma, jonka seurauksena herätin aktivoituu, sen jälkeen evaluoidaan WHEN-lauseen ehto, ja ehdon osoittauduttua todeksi suoritetaan herättimen toiminta. Tiivistettynä jo edellä pääpiirteittäin esitetyn määrittelysyntaksin eri variaatiot ovat lausuttavissa muodossa: CREATE TRIGGER <herättimen nimi> {BEFORE AFTER} {INSERT DELETE UPDATE} ON <taulu> [REFERENCING [NEW AS <uusi alias>] [OLD AS <vanha alias>]] [FOR EACH {ROW STATEMENT} [WHEN (<herättimen ehtolause>)]] <herättimen toiminta>. Määrittelysyntaksissa on järjestelmätoimittajakohtaisia eroavaisuuksia, joten täsmällinen muoto on syytä tarkistaa käytössä olevan tietokannanhallintajärjestelmän dokumentaatiosta.
17 14 Herättimiä määritettäessä on syytä muistaa niihin liittyvä problematiikka: automaattisia toimintoja suorittavat herättimet saattavat laukaista toisia herättimiä, jotka taas vuorostaan laukaisevat toisia. Yksinkertainen tietyn taulun INSERToperaatiosta aktivoituva herätin, joka toimintanaan lisää samaiseen tauluun uuden rivin generoimillaan arvoilla, aiheuttaa jo yksinään ikuisen kierteen, jossa jokainen lisäys aktivoi aina uuden lisäyksen. Tietokannanhallintajärjestelmissä on järjestelmätoimittajakohtaisia suojauksia, jotka sallivat vain tietyn määrän (esimerkiksi 32) iteraatioita, mutta ne eivät vähennä herättimien huolellisen suunnittelun merkitystä [SKS06]. 5 Herättimien ja deklaratiivisten rajoitteiden yhteistoiminta Tietokantaherättimet tulivat osaksi SQL-standardia vuonna Tarve aktiivisille toiminnoille oli ollut olemassa jo aiemmin, mikä oli johtanut 1990-luvulla järjestelmätoimittajien omiin herätintoteutuksiin [CPM96, SKS06]. Eri toimittajien ratkaisuja eivät ohjanneet mitkään standardit, mikä johti väistämättä niiden keskinäiseen yhteensopimattomuuteen. Viite-eheysrajoitteiden automaattisten vyörytystoimintojen ja tietokantaherättimien saumaton yhteenliittäminen osoittautui haasteelliseksi, minkä seurauksena järjestelmätoimittajakohtaisten herätinratkaisujen toiminta vyörytyssääntöjen rinnalla oli niin ikään varsin vaihtelevaa ja epäluotettavaa. IBM:n tutkijat esittivät vuonna 1996 artikkelissaan sittemmin standardiksi päätyneen ratkaisuehdotuksensa herättimien ja deklaratiivisten eheysrajoitteiden yhteistoiminnasta. Suoritusmalli on paitsi edellytys eri järjestelmätoimittajien tietokantaherättimien yhdenmukaiselle toiminnalle, on sen ymmärtäminen tarpeen tietokantasuunnittelijalle, tietokannan ylläpitäjälle sekä sovellusohjelmoijalle, joille voi muutoin olla epäselvää miten menetellään, kun esimerkiksi esiherättimen toiminto sisältää virheitä, mutta jälkiherätin on toimiva, tai kun jälkiherätin aktivoi toisen jälkiherättimen ja tämä vielä seuraavan, joka pyrkiikin lisäämään duplikaattipääavaimen tietokantatauluun. Kuvassa 3 esitetään tietokantatauluun muutoksia tekevän SQL-lauseen suoritusjärjestys aktiivisessa tietokannassa. Seuraavassa käydään läpi kuvassa mallinnettu Cochranen ja kumppaneiden [CPM96] esittämä suoritus vaiheittain. SQL-lause S 1 on suorituksen aloittava UPDATE-, DELETE- tai INSERT
18 15 Kuva 3: SQL-lauseen suoritus aktiivisessa tietokannassa [CPM96, IBM06]. -ylläpito-operaatio, joka yksilöi ylläpidettävän kohdetaulun (target table) eli muutosten kohteena olevan tietokantataulun. Vaikutuksen alaisten rivien määritys on suoritusprosessin ensimmäinen vaihe, jossa määritellään ylläpito-operaation ja sen seurannaisprosessien muutoksille alttiina olevien rivien joukko. Ylläpito-operaation muutoksille ovat alttiina muokkaus- ja poisto-operaation tapauksessa lauseen hakuehtoa vastaavat rivit ja lisäys-operaatiossa VALUES-lauseen yksilöimän rivit. Esiherättimien käsittely -vaiheessa kaikki SQL-lauseen S 1 seurauksena aktivoituneet esiherättimet suoritetaan tekojärjestyksessään. Rivitasoinen esiherätin suorittaa määrätyt toimenpiteet kerran jokaista vaikutuksen alaista riviä kohden. Lausetasoisen esiherättimen toiminto suoritetaan puolestaan tasan yhden kerran vaikutuksen alaisien rivien määrästä riippumatta. Esiherättimien toiminnot eivät voi muokata tietokannan sisältöä, joten ne eivät voi aiheuttaa vyöryviä toimenpiteitä tai laukaista toisia herättimiä. He-
19 16 rättimen toiminnoksi määritelty toimenpide voi kuitenkin sisältää virheitä ja sellaisen ilmetessä päädytään virhetilanteeseen (P), minkä seurauksena SQLlauseen S 1 suoritus peruutetaan (rollback). Vaikutuksen alaisten rivien kohdistus kohdetauluun tarkoittaa selkeämmin ilmaistuna S 1 :n ylläpitotoimenpiteiden täytäntöönpanoa. Toimenpiteitä tehtäessä huomioidaan rivitasoisten esiherättimien mahdollisesti muokkaamat toimet. Virhetilanteeseen johtaa muun muassa toistuvan rivin (duplicate row) lisäämisyrityksestä seurauksena oleva avainrajoitteiden loukkaus. Kuten kaikissa muissakin virhetilanteissa, sen seurauksena peruutetaan koko SQL-lause S 1 :n suoritus ja palataan sitä edeltäneeseen tilaan. Rajoitteiden tarkistus tarkoittaa S 1 :n aiheuttamien tilamuutosten arviointia avain-, viite-eheys- ja arvojoukkorajoitteiden kannalta. Jos vaikutuksen alaisia rivejä ei ole, vaihe ohitetaan. Viite-eheysrajoitteiden ON DELETE CASCA- DE- ja ON DELETE SET NULL -toimintaohjeet voivat aiheuttaa muiden herättimien aktivoitumisen. Mikä tahansa havaittu eheysrajoitteiden loukkaus aiheuttaa virheen ja siten S 1 :n peruuttamisen. Jälkiherättimien käsittely -vaiheessa kaikki SQL-lauseen S 1 seurauksena aktivoituneet jälkiherättimet suoritetaan tekojärjestyksessään. Lausetasoiset jälkiherättimet suoritetaan yhden kerran riippumatta vaikutuksen alaisten rivien määrästä. Rivitasoiset jälkiherättimet prosessoidaan kerran jokaista vaikutuksen alaista riviä kohden. Prosessoinnissa tapahtuva virhe johtaa S 1 :n suorituksen peruuttamiseen. Jälkiherättimien toimintoja voivat olla UPDATE-, DELETE- tai INSERT -operaatiot, jotka voivat tunnetusti aiheuttaa uusien herättimien aktivoitumisen. Vyöryvä SQL-lause tarkoittaa kuvassa 3 tällaista herätintoiminnon aktivoimaa herätintä. Vyöryvät SQL-lauseet käsitellään yksittäin rekursiivisesti jälkiherättimien käsittelyn yhteydessä. Jokaista vyöryvää SQL-lausetta kohden suoritetaan tässä luvussa kuvattu suoritusketju siten, että kukin uusi lause on miellettävissä omaksi S 1 :ksi. Kun kaikki jälkiherättimien toimintojen aktivoimat ylläpito-operaatiot on käyty rekursiivisesti läpi eikä virhetilanteeseen ole päädytty missään suorituksen vaiheessa, on alkuperäinen SQL-lause S 1 onnistuneesti suoritettu.
20 17 Huomion arvoista, että mikä tahansa virhe johtaa alkuperäistä operaatiota edeltäneen tietokannan tilan palauttamiseen. Täsmällisesti määritelty suoritusjärjestys ei salli mitään välimuotoja, eikä herätintoimintojen keskeneräinen suoritus siten ole mahdollinen: ylläpito-operaatio kaikkine seurannaisvaikutuksineen suoritetaan joko menestyksekkäästi tai jätetään kokonaan suorittamatta. 6 Tärkeitä sovellusalueita Monilla sovellusalueilla, kuten prosessin ohjauksessa, voimalaitoksissa ja sähkövoiman siirtoverkkojen hallinnassa, joissa tarvitaan tarkkaa vastetta aikakriittisiin tilanteisiin, ovat tietokannan tapahtumaperustaiset toiminnot välttämättömiä [ElN94]. Sovellusalasta riippumatta tietokantaherättimien avulla vastuuta ja taakkaa tietokannan määrämuotoisuudesta on siirrettävissä sovellusohjelmilta tietokannalle [SiK95]. Määrittelemällä toimintalogiikka tietokantatasoiseksi voi sovellusohjelmasta tehdä ohjelmistotuotannon näkökulmasta kevyemmän ja laadukkaamman: siirrettävämmän, uudelleenkäytettävämmän ja yhteentoimivamman. Kesken suorituksen kaatuva tietokannan eheydestä huolehtiva sovellusohjelma saattaa jättää tietokannan epätasapainoiseen tilaan, jonka eheyttäminen voi olla työlästä kun omasta eheydestään huolehtiva aktiivinen tietokanta sen sijaan huolehtisi määrämuotoisuudestaan itsenäisesti. Automaattiset toiminnot ovat varsin lavea käsite ja herättimiä voi käyttää hyvin moninaisiin tarkoituksiin. Ceri ja kumppanit [CCW00] listaavat lukuisia erilaisia tietokantaherättimien soveltamistapoja: 1. Eheyttä varjelevat herättimet (constraint-preserving triggers), jotka havaitsevat eheyttä uhkaavia operaatioita ja eheysrajoitteiden tavoin estävät niiden suorituksen kuten yli 20 % palkankorotuksen estävä tilasiirtymäperustainen esimerkkiherätin luvussa Eheyden palauttavat herättimet (constraint-restoring triggers), jotka havaitsevat eheyttä horjuttavia tilamuutoksia ja tekevät korjaavia operaatioita tietokantaan. 3. Kumoavat herättimet (invalidating triggers), jotka signaloivat havaitsemiaan eheysuhkia sovellusohjelmille mahdollistaakseen näiden reagoinnin niihin. 4. Yhteenvetoherättimet (materializing triggers), jotka luvun 4 esimerkkien ta-
21 18 voin laskevat johdettuja arvoja muiden attribuuttien arvoista esimerkiksi osaston työntekijöiden palkkojen summan tai kompleksisen tilastollisen testin lukemattomien arvojen perusteella. 5. Replikointiherättimet (replication triggers), jotka tuottavat reaaliaikaisesti varmuuskopioita ja lokitiedostoja tietokannan sisällöstä ja käytöstä. 6. Herätinlaajennokset (extenders), jotka validoivat tietokantaan tallennettavia syötteitä yksinkertaisimmillaan esimerkiksi korvaavat pelkän välilyönnin NULLarvolla. 7. Hälytinherättimet (alerters), jotka informoivat käyttäjää tietokannan tapahtumista. 8. Ad hoc -herättimet (ad-hoc triggers), jotka ovat toimialakohtaisia toimintalogiikka monipuolistavia toimintoja. Tutkijoiden viimeaikainen mielenkiinto on kohdistunut erityisesti aikaperustaisten tietyllä ajanhetkellä ja tietyin väliajoin aktivoituvien herättimien lisäämiseen SQLstandardiin. Behrend ja kumppanit [BDM09] katsovat aikaperustaisuuden moninaistavan herättimien käyttömahdollisuuksia huomattavasti entisestään. Nykystandardein tietokantaoperaatioiden ajastustoiminnot on tehtävä sovellusohjelmien laukaisemina, mutta artikkelissan Behrend kollegoineen ehdottaa herättimien tapahtumaehdon monipuolistamista SQL-standardiin. Ehdotuksen mukaan ehto voisi olla tiettyyn tauluun kohdistuvan tietokannan ylläpito-operaation lisäksi myös aikaleima ja tahtimääre, esimerkiksi FROM :15 EVERY 7 DAYS, joka aktivoisi herättimien kello ja sen jälkeen seitsemän vuorokauden välein. 7 Yhteenveto Aktiivinen tietokanta mahdollistaa tapahtumaperustaisten toimenpiteiden automaattisen suorittamisen passiivisen tietokannan edellyttäessä jokaiseen toimeensa käyttäjän tai sovellusohjelman eksplisiittistä pyyntöä. Aktiivinen tietokanta ei ole tavanomaisen tietokannan rinnalla kilpaileva konstruktio, vaan toiminnallisuutta automatisoinnin osalta laajentava, tapahtuma-ehto-toiminta -sääntömalliin perustuva keinovalikoima. Tietokantaherättimien tarjoama aktiivisuus ei ole käyttäjän näkökulmasta binäärinen on tai ei ole -suure, vaan toimintoja voi hyödyntää tarpeensa mukaan yk-
22 19 sinkertaisesta eheysvalvonnan monipuolistamisesta koko sovellusympäristöä kontrolloivaan automatisointiin asti. Herättimet tarjoavat miltei rajattoman keinopaletin tietokannan toimintojen automatisointiin, mutta oikotie onneen ne eivät ole. Herätintoimintojen suunnittelijalta edellytetään huolellista ja suunnitelmallista otetta sekä luvussa 5 esitetyn toimintaperiaatteen ymmärtämistä tarkoitusta palvelevia ratkaisuja tuottaakseen. Herättimien tarkoitus on sama kuin deklaratiivisten eheysrajoitteidenkin: pitää tietokanta eheässä ja toimintalogiikan kannalta tarkoituksenmukaisessa muodossa. Herättimien tässä tutkielmassa esitetty määrittelysyntaksi on varsin suoraviivainen ja esimerkit yksinkertaisia, mutta asiaa moniuloitteistaa se, että keinovalikoiman laajuus kumpuaa mielivaltaisesta SQL-lausejoukosta, joka on määriteltävissä herättimen toiminnoksi. Näin ollen tietokantaherättimien arvo käyttäjälle muotoutuu kyvystä yksilöidä automatisoitavat tarpeet ja valmiuksista pukea visionsa SQL-kielellä määriteltäviksi herättimiksi. Lähteet AAC05 BDM09 BMP01 CCW00 Cod70 Ashdown, L., Adams, D., Cowan, M., Moran, R., Melnick, J., Paapanen, E., Russel, J. ja Strohm, R., Oracle Database Application Developer s Guide Fundamentals, 10g Release 2. Oracle, Behrend, A., Dorau, C. ja Manthey, R., SQL triggers reacting on time events: An extension proposal. ADBIS 2009: Advances in Databases and Information Systems, 13th East European Conference. Proceedings, 2009, sivut Behrend, A., Manthey, R. ja Pieper, B., An amateur s introduction to constraints and integrity checking in SQL3. Datenbanksysteme in Büro, Technik und Wissenschaft (BTW), 2001, sivut Ceri, S., Cochrane, R. ja Widom, J., Practical applications of triggers and constraints: Success and lingering issues (10-year award). VLDB 00: Proceedings of the 26th International Conference on Very Large Data Bases, 2000, sivut Codd, E. F., A relational model of data for large shared data banks. Commun. ACM, 13,6(1970), sivut
23 20 CPM96 DGG95 ElN94 IBM06 LMC02 SiK95 SKS06 WiC96 Cochrane, R., Pirahesh, H. ja Mattos, N., Integrating triggers and declarative constraints in SQL database systems. VLDB 96: Proceedings of 22th International Conference on Very Large Data Bases, 1996, sivut Dittrich, K. R., Gatziu, S. ja Geppert, A., The active database management system manifesto: A rulebase of ADBMS features. RIDS 95: Second International Workshop on Rules in Database Systems, 1995, sivut Elmasri, R. ja Navathe, S. B., Fundamentals of Database Systems. 2nd Edition. Benjamin/Cummings, IBM, DB2 version 9 for Linux, UNIX, and Windows. SQL reference volume 1, Yhdysvallat, Li, X., Marín, J. M. ja Chapa, S. V., A structural model of ECA rules in active database. MICAI 02: Proceedings of the Second Mexican International Conference on Artificial Intelligence, 2002, sivut Simon, E. ja Kotz-Dittrich, A., Promises and realities of active database systems. VLDB 95: Proceedings of the 21st International Conference on Very Large Data Bases, 1995, sivut Silberschatz, A., Korth, H. F. ja Sudarshan, S., Database System Concepts. Fifth Edition. McGraw-Hill, New York, Widom, J. ja Ceri, S., Active Database Systems: Triggers and Rules for Advanced Database Processing. Morgan Kaufmann, 1996.
Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä
hyväksymispäivä arvosana arvostelija Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä Tuomas Husu Helsinki 20.2.2010 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisältö i 1 Johdanto
LisätiedotHELIA 1 (15) Outi Virkki Tietokantasuunnittelu 13.11.2000
HELIA 1 (15) Luento 2.7 Toiminnallisuutta tietokantaan... 2 Deklaratiivinen eheysvalvonta... 2 Proseduraalinen eheysvalvonta... 3 Eheysvalvonnan suunnittelusta... 4 Sääntöjen määrittely... 4 Toteutusvaihtoehdot...
LisätiedotTietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä
hyväksymispäivä arvosana arvostelija Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä Tuomas Husu Helsinki 9.3.2010 Kandidaatin tutkielma, aine HELSINGIN YLIOPISTO Tietojenkäsittelytieteen
LisätiedotHELIA 1 (12) Outi Virkki Tiedonhallinta 4.11.2000
HELIA 1 (12) Luento 4.3 Eheyssäännöt (Integrity Constraints)... 2 Eheyden valvonta... 3 Yksilön eheyssääntö... 4 Viite-eheyssäännöt... 5 Arvojoukkoeheyssäännöt... 8 Null-arvoista... 10 Sovelluskohtaiset
Lisätiedotarvostelija OSDA ja UDDI palveluhakemistoina.
Hyväksymispäivä Arvosana arvostelija OSDA ja UDDI palveluhakemistoina. HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta/Osasto Fakultet/Sektion Faculty/Section Laitos Institution
LisätiedotTIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences
TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 11 TU00AA48-2002 TU10S1E Hannu Markkanen 22.11.2011 9/10/12 Helsinki Metropolia University of Applied Sciences 1 Indeksit Indeksit Taulun
LisätiedotInsert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)
SQL sisältää operaatiot tietokannan sisällön muodostamiseen ja ylläpitoon: insert - uusien rivien vienti tauluun delete - rivien poisto update - rivien muutos 1 Insert lauseella on kaksi muotoa: insert
LisätiedotRelaatiomalli ja -tietokanta
Relaatiomalli ja -tietokanta > Edgar. F. (Ted) Codd, IBM, 1969 < A Relational Model of Data for Large Shared Data Banks Communications of the ACM, Vol. 13, No. 6, June 1970, pp. 377-387. > 70-luvun lopulla
LisätiedotHELIA 1 (14) Outi Virkki Tiedonhallinta
HELIA 1 (14) Luento SQL... 2 Historiaa... 2 Standardit... 3 Käyttö... 4 DDL... 5 Tietokantaobjektien määrittely... 5 SQL:n tietotyypit... 6 Eheyssääntöjen määrittely... 9 Indeksin määrittely... 11 Syntaksikuvaukset...
LisätiedotHAAGA-HELIA TIKO-05 1 (19) ICT23a Tietokannan suunnittelu ja toteutus O.Virkki 4.9.2008
HAAGA-HELIA TIKO-05 1 (19) Relaatiomalli Relaatiomalli... 2 Peruskäsitteet... 3 Relaatio... 5 Attribuutti ja arvojoukko... 6 Monikko... 7 Säännöt... 8 Yksilön eheyssääntö ja Pääavain... 9 Viite-eheyssääntö
LisätiedotHELIA 1 (19) Outi Virkki Tietokantasuunnittelu 9.3.2001
HELIA 1 (19) Luento 11 Eheyssäännöt (Integrity Constraints)... 2 Eheyden valvonta... 3 Yksilön eheyssääntö... 4 Arvojoukkoeheyssäännöt... 5 Null-arvoista... 6 Viite-eheyssäännöt... 7 Emorelaation päivitys...
LisätiedotKirjasto Relaatiotietokannat Kevät 2001. Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina
Kirjasto Kevät 2001 Auvinen Annemari Niemi Anu Harjoitustyö 7.4.2001 Sisällysluettelo 1. Yleiskuvaus... 3 2. Vaatimukset... 3 2.1. Toiminnalliset... 3 2.1.1. Sisäänkirjautuminen... 3 2.1.2. Nimikkeiden
LisätiedotHELIA 1 (17) Outi Virkki Tiedonhallinta
HELIA 1 (17) Luento 4.1 Looginen suunnittelu... 2 Relaatiomalli... 3 Peruskäsitteet... 4 Relaatio... 6 Relaatiokaava (Relation schema)... 6 Attribuutti ja arvojoukko... 7 Monikko... 8 Avaimet... 10 Avain
LisätiedotSQL - STRUCTURED QUERY LANGUAGE
SQL Peruskomentoja SQL - STRUCTURED QUERY LANGUAGE SQL on tietokantojen käsittelyyn kehitetty kieli Esimerkkejä kielellä hoidettavistaa toiminnoista: Tietokannan rakenteen määrittely ja muuttaminen Kyselyt
LisätiedotProseduurit, 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 S2008 2 Proseduurit Ohjelmamoduuleita, jotka voidaan tallettaa tietokantaan (DBMS:n tietohakemistoon)
LisätiedotPROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009
PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009 PROSEDUURIT Ohjelmamoduuleita, jotka voidaan tallettaa tietokantaan (DBMS:n tietohakemistoon)
LisätiedotCSE-A1200 Tietokannat
CSE-A1200 Tietokannat 29.3.2016 CSE-A1200 Tietokannat 29.3.2016 1 / 40 Oppimistavoitteet: tämän luennon jälkeen Tiedät, miten tietokannan relaatioiden (taulujen) määrittelyt kirjoitetaan SQL:llä. Osaat
LisätiedotHELIA 1 (14) Outi Virkki Tiedonhallinta
HELIA 1 (14) Luento Transaktion / Tapahtuman hallinta... 2 Taustaa... 3 Tapahtuman käsite... 5 ACID-ominaisuudet... 7 Samanaikaisuuden hallinta... 8 Lukitukset... 9 Toipuminen... 10 Loki-tiedosto... 11
LisätiedotHELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki 9.3.2010
HELIA TIKO-05 1 (22) SQL SQL... 2 Historiaa... 2 Standardit... 3 Käyttö... 4 Sql-komentojen kirjoittaminen... 5 DDL... 7 Tietokantaobjektien määrittely... 7 SQL:n tietotyypit... 8 Eheyssääntöjen määrittely...
LisätiedotHAAGA-HELIA Heti-09 1 (14) ICT05: Tiedonhallinta ja Tietokannnat O.Virkki Transaktionkäsittely
HAAGA-HELIA Heti-09 1 (14) Transaktionkäsittely Transaktion / Tapahtuman hallinta... 2 Taustaa... 3 Tapahtuman käsite... 5 ACID-ominaisuudet... 7 Samanaikaisuuden hallinta... 8 Lukitukset... 9 Toipuminen...
LisätiedotHAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät
HAAGA-HELIA Heti-09 1 (12) Näkymät Näkymät... 2 Eri tyyppisiä relaatioita... 2 Taulu - Tallennettu relaatio... 2 Tulosrelaatio - Kyselyn tulos... 2 Näkymä - Virtuaalirelaatio... 2 Näkymien määrittely...
Lisätiedot3. Taulujen määrittely ja muuttaminen
3. Taulujen määrittely ja muuttaminen DDL: Taulujen luonti, muutos ja poisto DML: taulujen tietojen ylläpito Tapahtumien (transaktioiden) hallinta Näkymät, synonyymit ja muut tietokantaobjektit Taulujen
LisätiedotSQL-perusteet, SELECT-, INSERT-, CREATE-lauseet
SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet A271117, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin
LisätiedotSelainpelien pelimoottorit
Selainpelien pelimoottorit Teemu Salminen Helsinki 28.10.2017 Seminaaritutkielma Helsingin yliopisto Tietojenkäsittelytiede ! 1 HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta
Lisätiedot3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN
3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN DDL: TAULUJEN LUONTI, MUUTOS JA POISTO DML: TAULUJEN TIETOJEN YLLÄPITO TAPAHTUMIEN (TRANSAKTIOIDEN) HALLINTA NÄKYMÄT, SYNONYYMIT JA MUUT TIETOKANTAOBJEKTIT TAULUJEN
LisätiedotTIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI
TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI Tarkastellaan Tietokannan fyysistä suunnittelua Menetelmän vaihetta 4 Looginen suunoitelma muutetaan toimiviksi tauluiksi Id enimi snimi muuta 1 Aki Joki xxx
LisätiedotOpettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija
Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija Opintojaksolla: keskitytään relaatiotietokantojen teoriaan ja toimintaan SQL-kieli kyselykielenä
LisätiedotHelsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Relaatiomallin peruskäsitteet Harri Laine 1. Relaatiotietokannat DONOTP
RINT THIS DOCUM ENT Relaatiotietokannat DONOTP Relaatiomalli Perustana rakennetason tietomalli relaatiomalli (the relational model of data) perusteoria: Codd 1970 ensimmäiset kaupalliset toteutukset 70-luvun
LisätiedotTIETOKANTOJEN PERUSTEET MARKKU SUNI
TIETOKANTOJEN PERUSTEET MARKKU SUNI SQL - KIELI TIETOJEN MUOKKAUS MARKKU SUNI Tarkastellaan tauluissa olevien tietojen muokkausta muokkauskäskyjä: INSERT UPDATE DELETE Kysymys kuuluu: Voiko tietoja muokata
LisätiedotTiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta
Tiedonhallinnan perusteet H11 Ovien ja kulun valvontajärjestelmän tietokanta Nimi: Mikko Haapanen Opiskelijanumero: 0900568 Ryhmä: T09L Työ tehty: 15.3.2010 Mikko Haapanen 15.3.2010 1(7) 1. Asiakasvaatimukset
LisätiedotCS-A1150 Tietokannat CS-A1150 Tietokannat / 43
CS-A1150 Tietokannat 27.3.2018 CS-A1150 Tietokannat 27.3.2018 1 / 43 Oppimistavoitteet: tämän luennon jälkeen Tiedät, miten tietokannan relaatioiden (taulujen) määrittelyt kirjoitetaan SQL:llä. Osaat päivittää
LisätiedotOhjelmistojen mallintamisen ja tietokantojen perusteiden yhteys
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
LisätiedotHelsingin yliopisto/tktl Tietokantojen perusteet, s 2007 SQL:n perusteet. Harri Laine 1. SQL tietokantakieli. SQL tietokantakieli
SQL tietokantakieli Relaatiomalliin pohjautuvat tietokannat Perustana relaatiomallin mukainen näkemys tietojen rakenteesta ja käsittelystä Tietokantojen rakenteen määrittelyssä ja käsittelymahdollisuuksissa
LisätiedotTietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 SQL-perusteet. Harri Laine 1. SQL tietokantakieli
tietokantakieli :llä voidaan... määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta näytölle tai tiedostoon sovellusohjelman käyttöön
LisätiedotHELIA 1 (15) Outi Virkki Tietokantasuunnittelu
HELIA 1 (15) Luento 2.6 Käyttöoikeuksista ja suojauksesta... 2 Suojausten suunnittelu... 3 Käyttäjätunnukset... 4 Tunnuksen luominen... 5 Tunnuksen muuttaminen... 6 Tunnuksen poistaminen... 6 Oikeudet
LisätiedotTietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1
Tietokannan hallinta Kevät 2004 Jan Lindström R&G Chapter 1 Tietokannan hallinta 1. Johdanto (käsitteitä) 2. Tietokannan talletusrakenteet 3. Tietokannan hakemistorakenteet 4. Kyselyiden käsittely ja optimointi
LisätiedotTiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas
Tiedonhallinnan perusteet Viikko 1 Jukka Lähetkangas Kurssilla käytävät asiat Tietokantojen toimintafilosofian ja -tekniikan perusteet Tiedonsäilönnän vaihtoehdot Tietokantojen suunnitteleminen internetiä
LisätiedotHELIA 1 (14) Outi Virkki Tiedonhallinta
HELIA 1 (14) Luento Näkymät... 2 Relaatiotyypit... 2 Taulu - Tallennettu relaatio... 3 Näkymä - Virtuaalirelaatio... 3 Tulosrelaatio - Kyselyn tulos... 3 Otetaulut - Tauluun tallennettu kyselyn tulos...
LisätiedotCS-A1150 Tietokannat CS-A1150 Tietokannat / 44
CS-A1150 Tietokannat 2.4.2019 CS-A1150 Tietokannat 2.4.2019 1 / 44 Oppimistavoitteet: tämän luennon jälkeen Tiedät, miten tietokannan taulujen (relaatioiden) määrittelyt kirjoitetaan SQL:llä. Osaat päivittää
LisätiedotTietotekniikan laitos Käki-projekti TIETOKANTASUUNNITELMA. 1. Johdanto
Jyväskylän yliopisto SUUNNITELMA Tietotekniikan laitos 5.11.2003 Käki-projekti TIETOKANTASUUNNITELMA 1. Johdanto Suunnitelma sisältää kuvauksen tietokannan suunnittelussa käytetyistä periaatteista, kuvan
Lisätiedotmääritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta
SQL tietokantakieli SQL:llä voidaan... määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta näytölle tai tiedostoon sovellusohjelman
LisätiedotSELECT-lauseen perusmuoto
SQL: Tiedonhaku SELECT-lauseen perusmuoto SELECT FROM WHERE ; määrittää ne sarakkeet, joiden halutaan näkyvän kyselyn vastauksessa sisältää
LisätiedotTietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta
Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta Jouni Huotari Martti Laiho (materiaali on osa virtuaaliammattikorkeakoulun Tietokantaosaaja-opintokokonaisuutta) opintokokonaisuutta)
LisätiedotTietokantakurssit / TKTL
Tietokantakurssit / TKTL Tietokantojen perusteet - tietokannan käyttö: SQL, sovellukset Tietokannan hallinta - tietokannanhallintajärjestelmän ominaisuuksia: tallennusrakenteet kyselyjen toteutus tapahtumien
LisätiedotDenormalisointia turvallisesti. Ougf syysseminaari 4.11.2010 Pörssitalo Helsinki Timo Raitalaakso
Denormalisointia turvallisesti Ougf syysseminaari 4.11.2010 Pörssitalo Helsinki Timo Raitalaakso Timo Raitalaakso Senior Database Specialist Solita Oy 2001- - 2001 Tampereen Teknillinen korkeakoulu Tietokannat
LisätiedotSQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX
SQL - perusteet SQL - yleistä Esa Salmikangas InMics SE Oy versio 16.6.2003 SQL - perusteet 1 SQL - perusteet 2 SQL Structured Query Language SQL on tietokantojen käsittelyyn kehitetty kieli yleisimmät
LisätiedotTIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö
TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö Tekijät: Eemeli Honkonen Joni Metsälä Työ palautettu: SISÄLLYSLUETTELO: 1 SEMINAARITYÖN KUVAUS... 3 2 TIETOKANTA... 3 2.1 MITÄ TIETOKANNAT SITTEN OVAT?... 3
LisätiedotHelsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista
Helsingin yliopisto Tietojenkäsittelytieteen laitos 26.2.2014 (H.Laine) Tietokantojen perusteet Liitteenä: Tiivistelmä SQL-syntaksista Kirjoita jokaiseen erilliseen vastausarkkiin kurssin nimi, tenttipäivä,
Lisätiedotselect tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta]
SQL kysely Kyselyn yleisrakenne: select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta] Kysely tuottaa nimettömän
LisätiedotCSE-A1200 Tietokannat
CSE-A1200 Tietokannat Osa laukaisimia käsittelevistä kalvoista perustuu kurssin oppikirjaan 19.4.2016 CSE-A1200 Tietokannat 19.4.2016 1 / 36 Oppimistavoitteet: tämän luennon jälkeen Osaat määritellä SQL:ssä
LisätiedotHELIA 1 (21) Outi Virkki Tietokantasuunnittelu
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...
LisätiedotTietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 relaatiomalli Harri Laine 1.
Relaatiotietokannat Relaatiomalli Perustana rakennetason tietomalli (the relational model of data) perusteoria: E.F.Codd 1970 ensimmäiset kaupalliset toteutukset 70-luvun lopulla yleistynyt 80-luvun lopulla
LisätiedotTIEDONHALLINNAN PERUSTEET - SYKSY 2013
TIEDONHALLINNAN PERUSTEET - SYKSY 2013 Kurssikoodi: Saapumisryhmä: Luento 5 XX00AA79-3013 TU12S2 Pasi Ranne 11.9.2013 11/9/13 Helsinki Metropolia University of Applied Sciences 1 Tietokannan normalisoinnin
LisätiedotSQL-kielen perusteet. Tietokantojen perusteet 4.4.2008
SQL-kielen perusteet Tietokantojen perusteet 4.4.2008 Sisällys Tietokannan käsittely ja ylläpito SQL tiedonmäärittelykielenä Tietokantataulun ja sen osien määrittely SQL tiedonkäsittelykielenä SQL-kysely
LisätiedotNäkymät ja tiedon suojaus
HELIA TIKO-05 1 (23) Näkymät ja tiedon suojaus Näkymät...2 Eri tyyppisiä relaatioita...2 Taulu - Tallennettu relaatio...2 Tulosrelaatio - Kyselyn tulos...2 Työtaulut - Väliaikaisiksi luodut taulut...2
LisätiedotOn autoja, henkilöitä, Henkilöllä on nimi Autolla on omistaja, joka on henkilö. Taulu AUTO(rekno, malli) Taulu HENKILO(nimi, )
Tietomallit Tietomallilla (data model) tarkoitetaan tiedon rakenteen ja tiedolle suoritettavan käsittelyn määrittelevää kehikkoa - käsitteistöä Tietoa voidaan tarkastella eri näkökulmista - eri abstraktiotasoilla
LisätiedotHELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki
HELIA TIKO-05 1 (17) SQL / DML 4 Alikyselyt...2 Joukko-operaatiot...7 Yhdiste, unioni...8 Leikkaus...9 Erotus... 10 Tietokannan datan muokkaus... 11 Lisäys... 11 Yhden rivin lisääminen... 12 Useamman rivin
LisätiedotHELIA 1 (13) Outi Virkki Tietokantasuunnittelu
HELIA 1 (13) Luento 2.9 Tietohakemistot 2 2 Coddin 12 säännöstä RDBMS:lle... 3 Oraclen tietohakemistonäkymät (osa) 4 Yleiset 4 Taulut 4 Säännöt 4 Näkymät 4 Synonyymit 5 Talletetut rutiinit 5 Käyttöoikeudet
LisätiedotTietomallit. Näkökulmat tietoon. Näkökulmat tietoon. Mitä malleja olisi tarjolla? Abstraktiotasot tiedon käsittelyssä
Tietomallit Tietomallilla (data model) tarkoitetaan tiedon rakenteen ja tiedolle suoritettavan käsittelyn määrittelevää kehikkoa - käsitteistöä Tietoa voidaan tarkastella eri näkökulmista - eri abstraktiotasoilla
LisätiedotTietokantojen suunnittelu, relaatiokantojen perusteita
Tietokantojen suunnittelu, relaatiokantojen perusteita A277, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin
LisätiedotJohdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)
HAAGA-HELIA ICT1TA006: Ohjelmointi 1 /5 Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC) (Lähteet: Oracle java jdbc Tutorial, Arvo Lipitsäinen: Tietokannan käsittely JDBC:n
LisätiedotTäysautomatisoitu raportointiympäristö. Joni-Petteri Paavilainen Jani Alatalo
Täysautomatisoitu raportointiympäristö Joni-Petteri Paavilainen Jani Alatalo Miksi tähän ryhdyttiin? Miten asiassa edettiin? Vaatimuksia Reaaliaikaisuus n 15 min Hallitut käyttöoikeudet Raportin tekijöillä
LisätiedotHarjoitustehtävä 1. Harjoitustehtävän 1 ratkaisu. Harjoitustehtävä 1. Relaatioalgebra -liitokset (join) Liitos
Harjoitustehtävän 1 ratkaisu Tonttu( tonttutunnus, nimi) Puutarha( puutarhatunnus, omistaja, sijainti ) Vastuualue ( puutarhatunnus->puutarha, aluenumero, maaperä, kosteus, valaistus, sijainti, vastuutonttu
LisätiedotHelsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, , H.Laine
Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, 3.5.2007, H.Laine Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, oma nimesi, syntymäaikasi ja nimikirjoituksesi
LisätiedotCS-A1150 Tietokannat
CS-A1150 Tietokannat Osa laukaisimia käsittelevistä kalvoista perustuu kurssin oppikirjaan 29.4.2019 CS-A1150 Tietokannat 29.4.2019 1 / 39 Oppimistavoitteet: tämän luennon jälkeen Osaat määritellä SQL:ssä
LisätiedotTällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia
Tällä viikolla Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia 1.) Mainitse tietokonepelistä (kuvitteellisesta tai todellisesta) esimerkkitilanteita,
LisätiedotHAAGA-HELIA heti09 1 (27) ICT05 Tiedonhallinta ja tietokannat O.Virkki 19.1.2010. Relaatiomalli
HAAGA-HELIA heti09 1 (27) Relaatiomalli Relaatiomalli... 2 Peruskäsitteet... 3 Relaatio... 5 Attribuutti ja arvojoukko... 6 Monikko... 7 Säännöt... 8 Arvojoukkoeheyssääntö... 8 Pääavain ja yksilön eheyssääntö...
Lisätiedotmääritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta
SQL tietokantakieli SQL:llä voidaan... määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta näytölle tai tiedostoon sovellusohjelman
LisätiedotIDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit
IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,
LisätiedotHELIA 1 (11) Outi Virkki Tiedonhallinta
HELIA 1 (11) Luento Käyttöoikeuksista ja tiedon suojauksesta... 2 Käyttäjätunnukset... 3 Tunnuksen luominen... 4 Oikeudet / Valtuudet... 5 Oikeuksien hallinta SQL:ssa... 6 Suojaustarkkuus?... 7 Roolit...
LisätiedotWritten by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36
!!!!! Relaatiotietokannat ovat vallanneet markkinat tietokantojen osalta. Flat file on jäänyt siinä kehityksessä jalkoihin. Mutta sillä on kuitenkin tiettyjä etuja, joten ei se ole täysin kuollut. Flat
LisätiedotJoko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT
Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT Agenda Regular Expression - funktiot Case-insensitive Sort Case-insensitive Seach Merge muutokset Tree-walking in 10g DML Returning Values
LisätiedotATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014
18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,
LisätiedotTietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);
Tietokannat SQL-peruskomentojen pikaopas CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); INSERT INTO table VALUES(val1,val2,... ); Lisää tauluun
LisätiedotIIO30220 Database Management / Tietokannan hallinta TAPAHTUMIEN HALLINTA JOUNI HUOTARI (7.3.2012)
IIO30220 Database Management / Tietokannan hallinta TAPAHTUMIEN HALLINTA JOUNI HUOTARI (7.3.2012) TEHTÄVIÄ/KYSYMYKSIÄ Määrittele tapahtuma (transaction) tapahtumien hallinta Mitä ovat tapahtuman ACIDominaisuudet?
LisätiedotTietokanta (database)
Tietokanta Tietokanta (database) jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja 1 Tiedosto Ohjelmointikielissä apumuistiin tallennettuja tietoja käsitellään
LisätiedotKirjoita jokaiseen erilliseen vastauspaperiin kurssin nimi, tenttipäivä, oma nimesi (selkeästi), opiskelijanumerosi ja nimikirjoituksesi
Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, kurssikoe 29.2.2012 (vastauksia) Liitteenä on tiivistelmä SQL-syntaksista Kirjoita jokaiseen erilliseen vastauspaperiin kurssin
LisätiedotPro gradu -tutkielma Meteorologia SUOMESSA ESIINTYVIEN LÄMPÖTILAN ÄÄRIARVOJEN MALLINTAMINEN YKSIDIMENSIOISILLA ILMAKEHÄMALLEILLA. Karoliina Ljungberg
Pro gradu -tutkielma Meteorologia SUOMESSA ESIINTYVIEN LÄMPÖTILAN ÄÄRIARVOJEN MALLINTAMINEN YKSIDIMENSIOISILLA ILMAKEHÄMALLEILLA Karoliina Ljungberg 16.04.2009 Ohjaajat: Ari Venäläinen, Jouni Räisänen
LisätiedotMuita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto
Muita tietokantaobjekteja Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto Näkymät Näkymä (view) on looginen näyte tietokannan tauluista tai näkymistä Näkymä ei voi sisältää SELECT INTO,
LisätiedotTietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot
DO NOT PRINT THIS DOCUMENT SQL:ssä joukko yhteenvetofunktioita (aggregate function, koostefunktio) AVG keskiarvo MIN pienin arvo (minimi) MAX suurin arvo (maksimi) SUM summa COUNT lukumäärä Yhteenvetofunktioita
LisätiedotMUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO
MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO NÄKYMÄT Näkymä (view) on looginen näyte tietokannan tauluista tai näkymistä Näkymä ei voi sisältää SELECT INTO,
LisätiedotTietokannat II -kurssin harjoitustyö
Tietokannat II -kurssin harjoitustyö Olli Opiskelija (123), olli.opiskelija@foo.fi Maija Mallioppilas (321), maija.mallioppilas@foo.fi 13.3. 2007 1 Sisältö 1 Tietokannan kuvaus 3 1.1 Tietokannan rakenne..................................
Lisätiedot4.3.1 SQL tietokanta SQL:n kirjoitusasu SQL määrittelykielenä... 36
TIETOKANTOJEN PERUSTEET, OPETUSMONISTE OSA 2 SQL- TIETOKANNAN RAKENNE JA MÄÄRITTELYT Harri Laine 4.3 SQL TIETOKANTAKIELI... 33 4.3.1 SQL tietokanta... 34 4.3.2 SQL:n kirjoitusasu... 36 4.3.3 SQL määrittelykielenä...
LisätiedotAika/Datum Month and year Kesäkuu 2012
Tiedekunta/Osasto Fakultet/Sektion Faculty Laitos/Institution Department Filosofian, historian, kulttuurin ja taiteiden tutkimuksen laitos Humanistinen tiedekunta Tekijä/Författare Author Veera Lahtinen
LisätiedotTIEDONHALLINTA - SYKSY Luento 10. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences
TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 10 TU00AA48-2002 TU10S1E Hannu Markkanen 14.-15.11.2011 9/10/12 Helsinki Metropolia University of Applied Sciences 1 SQL: Monen taulun kyselyt
LisätiedotHelsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot
DO NOT PRINT THIS DOCUMENT SQL:ssä joukko yhteenvetofunktioita (aggregate function, koostefunktio) AVG keskiarvo MIN pienin arvo (minimi) MAX suurin arvo (maksimi) SUM summa COUNT lukumäärä Yhteenvetofunktioita
LisätiedotTyön laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages
Tiedekunta/Osasto Fakultet/Sektion Faculty Laitos Institution Department Tekijä Författare Author Työn nimi Arbetets titel Title Oppiaine Läroämne Subject Työn laji Arbetets art Level Aika Datum Month
LisätiedotHELIA 1 (8) Outi Virkki Tietokantasuunnittelu
HELIA 1 (8) Luento 1 Johdatusta tietokannan suunnitteluun... 2 Tietokantasuunnittelu?... 2 Tietokanta?... 2 Tieto?... 2 Tietokantasuunnittelun tavoite, v.1... 2 Luotettavuus?... 3 Tietokantasuunnittelun
LisätiedotSamanaikaisuuden hallinta Snapshot Isolationin avulla
hyväksymispäivä arvosana arvostelija Samanaikaisuuden hallinta Snapshot Isolationin avulla Olli Korhonen Helsinki 4.3.2009 Seminaarityö HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO
LisätiedotTIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI
TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI Tavoite: Suunnitella käyttäjien tarvitsemat turvallisuusmekanismit ja säännöt. Toisin sanoen: tehdä tietokannasta turvallinen ja luotettava. Muistutus: Tietokanta
LisätiedotTietohakemisto ja Transaktionkäsittely
HELIA TIKO-05 1 (18) Tietohakemisto ja Transaktionkäsittely Tietohakemisto...2 Oraclen tietohakemistonäkymät (osa)...3 Yleiset...3 Taulut...3 Säännöt...3 Näkymät...3 Synonyymit...4 Indeksit...4 Sekvenssit...4
LisätiedotTietokannan hallintajärjestelmän (DBMS) palvelut ja rakenne
HAAGA-HELIA Heti-09 1 (6) Tietokannan hallintajärjestelmän (DBMS) palvelut ja rakenne Tietovarastotekniikan kehittyminen... 2 Tiedostopohjaiset ratkaisut... 2 Tiedoston palvelut... 3 Tiedostopohjaisten
LisätiedotHaaga-Helia / TIKO-05 1 (12) Tietokannan suunnittelu ja Toteutus Outi Virkki
Haaga-Helia / TIKO-05 1 (12) Tietotarpeet Tietotarpeiden määrittely... 2 Tietotarveanalyysi... 3 Lähtökohtana tietojenkäsittelytehtävät... 3 Määrittelyn sisältö... 4 Vaiheistus... 5 Tietolähteet... 5 Lähestymistapa...
LisätiedotSQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito
SQL sisältää operaatiot tietokannan sisällön muodostamiseen ja ylläpitoon: insert - uusien rivien vienti tauluun delete - rivien poisto update - rivien muutos Insert lauseella on kaksi muotoa: insert into
LisätiedotHelsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot
DO NOT PRINT THIS DOCUMENT SQL:ssä joukko yhteenvetofunktioita (aggregate function, koostefunktio) AVG keskiarvo MIN pienin arvo (minimi) MAX suurin arvo (maksimi) SUM summa COUNT lukumäärä Yhteenvetofunktioita
LisätiedotYhteentoimivuusalusta: Miten saadaan ihmiset ja koneet ymmärtämään toisiaan paremmin?
Yhteentoimivuusalusta: Miten saadaan ihmiset ja koneet ymmärtämään toisiaan paremmin? Avoin verkkoalusta ihmisen ja koneen ymmärtämien tietomääritysten tekemiseen Riitta Alkula 20.3.2019 Esityksen sisältö
LisätiedotLohdutus - tietokantadokumentti
Lohdutus - tietokantadokumentti Ohjelmiston tietokanta on toteutettu Oracle-ympäristöön, ja sitä käytetään ohjelmassa Hibernaten kautta. Tietokannan rakenne Tietokannan taulujen merkitykset Taulu Project
LisätiedotSamanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa
Samanaikaisuuden hallinta Optiot transaktionaalisissa työnkuluissa Sisältö Transaktionaaliset työnkulut Samanaikaisuuden ongelmat Optiot idea käyttökohteet WorkMan Optioiden toteutus Arviointi Transaktionaaliset
LisätiedotJärjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä
Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta Hajautettu tietokanta Jokainen hajautettu tietokanta muodostaa oman kokonaisuutensa Loogisesti yhtenäinen data on hajautettu tietokantoihin (eri
LisätiedotYlläpitodokumentti. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie
Ylläpitodokumentti Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie Helsinki 16.7.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti
Lisätiedot