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 eheyssäännöt... 11
HELIA 2 (12) Eheyssäännöt (Integrity Constraints) Osa relaatiotietomallia 1. Yksilön eheyssääntö (entity integrity constraints) 2. Viite-eheyssääntö (referential integrity constr.) 3. Arvojoukko-eheyssääntö (domain constraints) 4. Käyttäjän määrittelemät sovelluskohtaiset eheyssäännöt Eheys Yksittäisen tai useamman tietovaraston tietojen sisäinen ristiriidattomuus
HELIA 3 (12) Eheyden valvonta a) Tiedonhallintajärjestelmä b) Sovellusohjelma c) Käyttäjä Yksilön eheyssäännöstä tiedonhallintajärjestelmät ovat huolehtineet jo pitkään Viite-eheydestä ja arvojoukkoeheydestä on perinteisesti huolehdittu sovellusohjelmassa Virhealtis, epäluotettava Tiedonhallintajärjestelmät tukevat eheyden valvontaa vaihtelevasti Vain osa määriteltävissä Rajoituksia Syntaksit erilaisia, heikko siirrettävyys Luotettavin tapa
HELIA 4 (12) Yksilön eheyssääntö Entity Integrity Relaatiossa ei saa olla kahta tai useampaa täysin samanlaista riviä Pääavain on pienin joukko attribuutteja, jotka riittävät yksilöimään kunkin relaation rivin Esim. KOIRA Rekno Nimi Rotu S-vuosi 105 Anki Seka 1995 110 Turkka Suom.pk 1993 120 Turkka Suom.pk 1993 150 Saara Labr. 2000... Tietokannan hallintajärjestelmä huolehtii yksilön eheyssäännön valvonnasta, mikäli eheyssääntö on määritelty tietokantaan (Primary Key Constraint)
HELIA 5 (12) Viite-eheyssäännöt Referential Integrity Viiteavaimen arvon on löydyttävä viitatun taulun pääavaimen arvoista tai viiteavaimen arvon on oltava tyhjä Relaatiotietokannassa ei saa viitata objektiin, jota siellä ei ole. Terminologiaa Teoria Intuitiivinen Englanti Viittaava relaatio Lapsi-relaatio Referencing relation Viitattu relaatio Emo-relaatio Referenced relation Target relation Esim. Jos opiskelijan tiedot päätetään poistaa, tietokantaan ei saa jäädä suoritustietoja, jotka viittaavat ko. opiskelijaan. Miksi? Tietokannan hallintajärjestelmä huolehtii viite-eheyssäännön valvonnasta, mikäli eheyssääntö on määritelty tietokantaan (Foreign Key Constraint)
HELIA 6 (12) Viite-eheyssäännön yhteyteen voidaan määritellä, miten toimitaan, kun viite-eheys on vaarassa, esim. poisto- tai muutostoimenpiteen yhteydessä a) Estetään toimenpide (restrict / no action) b) Vyörytetään toimenpide (cascade) c) Asetetaan viiteavaimen arvoksi tyhjä (set null) d) Asetetaan viiteavaimen arvoksi oletusarvo (set default) Esim. LENTO LENTO- TOTEUTUS VARAUS Miten vaikuttaa poiston vyörytys? Miten vaikuttaa poiston rajoitus? Mitä jos esimerkin yhteyksissä on erilaiset poistosäännöt? Millainen tietojen muutostoimenpide voi vaarantaa viite-eheyden?
HELIA 7 (12) Esim. Oppilashallinto pk: fk: OPETTAJA OPISKELIJA pk: fk: pk: fk: KURSSI OSALLIS TUMINEN pk: fk:
HELIA 8 (12) Arvojoukkoeheyssäännöt Domain Constraints Tulkinta ja määrittely vaihtelee! a) Attribuutin arvot kuuluvat samaan arvojoukkoon. b) Kaikki arvojoukkoon liittyvät rajoitukset: tietotyyppi, pituus, oletusarvo, sallitut arvot, välttämättömyys/pakollisuus, erilaisuus, ) Tietokannan hallintajärjestelmä huolehtii viite-eheyssäännön valvonnasta useamman mekanismin avulla: tietotyyppitarkistus oletusarvomääritykset (Default value) eheyssääntömäärittelyt (Check Constraint) (myös pakollisuus / not null -määrittelyt) erilaisuusmäärittelyt (Unique Constraint) herättimet (Trigger) Esim. Asiakkaan_tyyppi Char(10) Not null Default( yritys ) Check(value in yritys, yksityinen ),
HELIA 9 (12) Esim. Oppilashallinto Kurssi Attribuutti Tietotyyppi Eheyssääntö Kurssinro Kurssin_nimi Kurssin_laajuus Vastuuopen_nro Kieli Materiaali
HELIA 10 (12) Null-arvoista Puuttuva arvo Tuntematon arvo 0 Ä esitystavat ja käyttäytyminen eri operaatioissa vaihtelevat eri tiedonhallintajärjestelmissä lajittelu vertailut funktiot liitokset... toiminta testattava, jos haluaa välttää ennalta arvaamattomia tuloksia / seurauksia Ä vältä mahdollisuuksien mukaan! jos et voi välttää, varaudu ohjelmoidessa Voiko pääavaimen arvo olla null? Voiko pääavaimen osan arvo olla null? Voiko viiteavaimen arvo olla null? Voiko viiteavaimen osan arvo olla null?
HELIA 11 (12) Sovelluskohtaiset eheyssäännöt Sovelluksen toiminnan ja tietosisällön mielekkyyttä tukevat säännöt Tietokannan hallintajärjestelmä voi huolehtia sovelluskohtaisten eheyssääntöjen valvonnasta, mikäli tietokantaan ohjelmoidaan valvonnasta vastaava herätin tai assertio (Trigger, Assertion) Esim. Lentoa ei voida peruuttaa, jos varauksia on vähintään 5 kpl Tilaukseen on liityttävä vähintään yksi tuote Asiakkaan uusia tilauksia ei oteta vastaan, mikäli maksamattomien laskujen yhteissumma on yli 1000 mk
HELIA 12 (12) Suunnittele viite-eheyden valvontasäännöt Bachelors Books tehtävään