HELIA 1 (15) Outi Virkki Tietokantasuunnittelu 13.11.2000



Samankaltaiset tiedostot
HELIA 1 (12) 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

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

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

HELIA 1 (19) Outi Virkki Tietokantasuunnittelu

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

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

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

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

TIETOKANTOJEN PERUSTEET MARKKU SUNI

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

Denormalisointia turvallisesti. Ougf syysseminaari Pörssitalo Helsinki Timo Raitalaakso

CSE-A1200 Tietokannat

SQL - STRUCTURED QUERY LANGUAGE

HELIA 1 (11) Outi Virkki Tiedonhallinta

HELIA 1 (13) Outi Virkki Tietokantasuunnittelu

3. Taulujen määrittely ja muuttaminen

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO

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

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta]

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki

SQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta

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

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

HELIA 1 (17) Outi Virkki Tietokantasuunnittelu

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Tietohakemisto ja Transaktionkäsittely

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

SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä

Näkymät ja tiedon suojaus

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2007 SQL:n perusteet. Harri Laine 1. SQL tietokantakieli. SQL tietokantakieli

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 SQL-perusteet. Harri Laine 1. SQL tietokantakieli

Relaatiomalli ja -tietokanta

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

HELIA 1 (15) Outi Virkki Tiedonhallinta

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT

HELIA 1 (17) Outi Virkki Tiedonhallinta

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

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

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

määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta

Täysautomatisoitu raportointiympäristö. Joni-Petteri Paavilainen Jani Alatalo

CSE-A1200 Tietokannat

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

SELECT-lauseen perusmuoto

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

HAAGA-HELIA TIKO - Heti09 1 (22) ICT05 Tiedonhallinta ja Tietokannat E.Räty, O.Virkki, M.Laiho

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

CS-A1150 Tietokannat

TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI

Tietokannan suunnittelu

TIEDONHALLINTA - SYKSY Luento 8. Saapumisryhmä: Pasi Ranne /9/13 Helsinki Metropolia University of Applied Sciences

Harjoitustehtävä 1. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. SQL kysely

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

määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Tietokantakurssit / TKTL

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

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

IIO30220 Database Management / Tietokannan hallinta TAPAHTUMIEN HALLINTA JOUNI HUOTARI ( )

HELIA 1 (8) Outi Virkki Tietokantasuunnittelu

Kari Aalto Saariston IT

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

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

Tietokannat II -kurssin harjoitustyö

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

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

TIETOKANNANHOITAJA DBA (DATABASE ADMINISTRATOR) JA TIETOKANNAN HALLINTA

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

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

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

Seminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen

SQL-kielen perusteet. Tietokantojen perusteet

Java ja tietokannan käsittely (JDBC)

Tiedonhallintajärjestelmän rakenne ja Suorituskyky

Haaga-Helia / TIKO-05 1 (12) Tietokannan suunnittelu ja Toteutus Outi Virkki

Johdanto PHP PostgreSQL. PHP & PostgreSQL. Paul Tötterman 5. helmikuuta PHP & PostgreSQL.

CLOUDBACKUP TSM varmistusohjelmiston asennus

Written by Administrator Monday, 05 September :14 - Last Updated Thursday, 23 February :36

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

Microsoft Visual Studio 2005

EXEC SQL BEGIN DECLARE SECTION

SQLite selvitysraportti. Juha Veijonen, Ari Laukkanen, Matti Eronen. Maaliskuu 2010

4.3.1 SQL tietokanta SQL:n kirjoitusasu SQL määrittelykielenä... 36

Transkriptio:

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... 6 Herätetoiminnot - Triggerit / Aktiiviset säännöt... 8 Määrittely... 8 SQL3:n syntaksi... 9 Oracle 7 8:n syntaksi... 10 Suoritus ja käyttöoikeudet... 12 Käyttötilanteita... 13 Muita käyttökohteita... 14 Tietoturva... 14 Replikointi on-line... 14 Suorituskyvyn parantaminen... 14 SQL3:n Assertiot... 15

HELIA 2 (15) Toiminnallisuutta tietokantaan Deklaratiivinen eheysvalvonta Osa tietokannan eheyden valvonnasta voidaan toteuttaa deklaratiivisesti DDL -määrittelyillä 1. Identifioitavuus (primary key) 2. Viite-eheys (foreign key) 3. Tietotyypit 4. Välttämättömyys / mahdollisuus (null määritykset) 5. Yksikäsitteisyys (unique) 6. Sallitut arvot ja oletusarvot (osin) Ä Eheysmäärittelyn tuki vaihtelee toimittajakohtaisesti Ä Osa tiedonhallintajärjestelmistä tukee myös sovelluskohtaisia eheyssääntöjä / business rules (assertions) Etuja: Standardinmukainen (?) yksinkertainen määrittely Määrittelyt tallessa keskitetysti tietohakemistossa Hyvä suorituskyky

HELIA 3 (15) Proseduraalinen eheysvalvonta Eheyssääntöjä sekä muuta toiminnallisuutta voidaan toteuttaa myös proseduraalisesti: a) herätetoiminnoilla (triggers / active rules) b) tallennetuilla rutiineilla (proseduurit ja funktiot) Herätetoiminnot liittyy tietyn taulun tiettyyn tapahtumaan laukeaa implisiittisesti (epäsuorasti) ei vaadi suoritusoikeuksia Proseduurit ja funktiot itsenäinen kutsutaan eksplisiittisesti (suoraan) vaati suoritusoikeuden myönnön (Oracle) Ä Myös herätetoimintojen ja tallennettujen rutiinien tuki (ja syntaksi) vaihtelee toimittajittain Ei mukana SQL-92:ssa Mukana SQL3:ssa

HELIA 4 (15) Eheysvalvonnan suunnittelusta Sääntöjen määrittely Lähtökohta: 1. Käsitteellisen suunnittelun yhteydessä määritellyt sovelluskohtaiset säännöt 2. Loogisen suunnittelun yhteydessä määritellyt eheyssäännöt Ä Sääntö on ilmaistava niin riittävän tarkasti, jotta sen toteutusehto voidaan tietokannassa määritellä ja tarvittavat toimenpiteet suorittaa! Ä Sääntöjen määrittely edellyttää kohdealueen hyvää tuntemusta

HELIA 5 (15) Rikelista Luetteloi kaikki tietokantatapahtumat, jotka voivat rikkoa ko. eheyssääntöä Å Pohja herätetoimintojen määrittelylle Ä Rikelistan määrittely vaatii tietokannan rakenteen ja tiedonhallintajärjestelmän tuntemusta (ja eheyssääntöjen ymmärtämistä...) Virheiden käsittely Laadi tarvittaessa virheilmoitukset herätetoiminnolle Ä (Virheiden käsittely oma suunnitteluongelmansa: numerointi, kieli, sijainti,...) esim. Fleming...

HELIA 6 (15) Toteutusvaihtoehdot Ä Käytä deklaratiivista eheysmäärittelyä niin pitkälle kuin se on tuotteessa mahdollista Ä Myös silloin kun tavoitteena on RDBMS - toimittajariippumaton sovellus (rajoitukset tulevat vastaan aikaisemmin) Ä osa viite-eheys toiminnoista toteutettava proseduraalisesti (tyypillisesti ne, joita SQL-92 ei sisällä) on delete / update SET NULL / SET DEFAULT Ä huom! suhde deklaratiiviseen eheysmäärittelyyn Å Sovelluskohtaiset säännöt jäävät tyypillisesti proseduraalisesti toteutettavaksi Ä yhden säännön toteutus voi vaatia useamman herätetoiminnon

HELIA 7 (15) Esim. elokuvatietokannassa anekdootin pitää liittyä vähintään yhteen elokuvaan, organisaatioon tai henkilöön Toteutus: Ä assertio? Ä herätetoiminto? Ä 3sp-kirjasto-ohjelma? Ä sovellusohjelma? Ä käyttöohjeet? Ä muu? Ä Huolehdi eheydestä ensisijaisesti tietokantatasolla Kerran tietokannassa > kaikissa sovellusohjelmissa Ä Kaikki tietoon perustuva toiminnallisuus on määritelty keskitetysti Ä voimassa myös ad hoc työkaluja käytettäessä Ä Suunnittele huolellisesti, jottei synny ristiriitatilanteita! Ä Tarvittaessa tarkista tiedonhallintajärjestelmän toimittajan dokumentaatiosta deklaratiivisten sääntöjen ja proseduraalisten toimintojen suoritusjärjestys! 1. Deklaratiiviset tarkistukset 2. Proseduraaliset tarkistukset

HELIA 8 (15) Herätetoiminnot - Triggerit / Aktiiviset säännöt Määrittely 1. Laukaiseva toiminto Jokin tai useampi päivityskomennoista (insert, update, delete) 2. Suorituksen ajoitus a) ennen laukaisevan komennon suoritusta b) laukaisevan operaation jälkeen 3. Suorituksen kohdistus a) Suoritus / komento b) Suoritus / rivi 4. Suoritusehto SQL-ehtolause 5. Toiminto SQL-skripti (tai Oraclessa PL/SQL) Ä Ei commit eikä rollback komentoja! Ä Ei peruuttamattomia operaatioita (esim. Oraclessa DDL-lauseet) Ä Myös herätetoiminnon suorittama operaatio peruutettavissa / vahvistettavissa (commit / rollback) Ä Sisältyy samaan transaktioon kuin laukaiseva toiminto! Ä Voi estää laukaisevan komennon suorituksen! (jos määritelty BEFORE)

HELIA 9 (15) SQL3:n syntaksi CREATE TRIGGER <trigger name> { BEFORE AFTER } <trigger event> ON <table name> [REFERENCING <old or new values alias list> [FOR EACH {ROW STATEMENT} ] [WHEN (search condition)] <triggered SQL statement> <trigger event> ::= INSERT DELETE UPDATE [ OF <column list> <old or new values alias list> ::= OLD [ROW] [AS] old values alias NEW [ROW] [AS] new values alias OLD TABLE [AS] <old values table alias> NEW TABLE [AS] <new values table alias>

HELIA 10 (15) Oracle 7 8:n syntaksi

HELIA 11 (15) esim. CREATE TRIGGER korotus_chk BEFORE UPDATE OF palkka ON tyolainen FOR EACH ROW WHEN (NEW.palkka < OLD.palkka OR NEW.palkka > 1,1 * OLD.palkka) BEGIN RAISE_APPLICATION_ERROR (-20502, Palkkaa ei saa laskea. Korotuksen oltava alle 10 %); END;

HELIA 12 (15) Suoritus ja käyttöoikeudet Ä Oraclessa triggeri käyttää omistajansa käyttöoikeuksia! Ä Ts. triggerin mahd. Suorittamia päivitystoimintoja varten ei käyttäjille tarvitse antaa käyttöoikeuksia Standardin mukaan käyttäjä voi määritellä triggerin, jos hänelle on myönnetty trigger-oikeus ko. tauluun.

HELIA 13 (15) Käyttötilanteita Ennen komentoa Triggereissä käytettyjen globaalien muuttujien alustus Päivityksen estäminen, jos tietoturva ei ole ok Ennen riviä Johdettujen kenttien laskenta Päivityksen estäminen, jos tietoturva ei ole ok Jälkeen rivin Auditointi Jälkeen komennon Auditointi

HELIA 14 (15) Muita käyttökohteita Eheysvalvonnan lisäksi Tietoturva kompleksiset tietoturvatarkastukset auditointi Replikointi on-line Suorituskyvyn parantaminen kompleksisten johdettujen ominaisuuksien ylläpito Ä denormalisoi harkiten!

HELIA 15 (15) SQL3:n Assertiot CREATE ASSERTION <constraint name> CHECK (search condition) <constraint attributes> constraint attributes> ::= <constraint check time> [ [NOT] DEFERRABLE ] [ [NOT] DEFERRABLE ] <constraint check time> <constraint check time> ::= INITIALLY DEFERRED INITIALLY IMMEDIATE Esim. CREATE ASSERTION tutki_palkka CHECK ((SELECT AVG(palkka) FROM henkilo) > 10000) INITIALLY IMMEDIATE NOT DEFERRABLE; Keskipalkan oltava suurempi kuin 10.000 Ä jos päivitys muuttaisi dataa niin, että keskipalkka <= 10.000, syntyy virheilmoitus