Luento 2
Luennolla käytetty esimerkkitietokanta:
luento2.mdb (120 kb)
luento2.zip (11 kb)
Kentät (fields)
Kenttiä luotaessa niille määritellään seuraavanlaisia ominaisuuksia:
- Kentän nimi
Kentän nimeksi kannattaa valita jokin selkeä ja kuvaava nimi.
Nimessä kannattaa kuitenkin välttää välilyöntejä,
erikoismerkkejä ja skandinaavisia merkkejä (å,ä,ö).
- Tietotyyppi
- Kiinteä vai vaihtuvamittainen kenttä?
- Maksimipituus ja mahdollinen tarkkuus
- Onko tieto pakollinen
mahdollisimman moni kenttä pitää määritellä pakolliseksi
jolloin vältetään NULL-arvojen tuomat ongelmat
- Tarkistukset syötettävän tiedon oikeellisuudelle tai sallittujen
arvojoukkojen joukko.
- Oletusarvo
- Syöttömaski
AVAIMET (keys)
- perusavain (primary key)
- yksikäsitteinen muodostuen yhdestä tai useammasta sarakkeesta
- taulusta ei saa löytyä identtisiä perusavaimen arvoja
- ei saa puuttua yhdeltäkään riviltä
- perusavaimen eheys (entity integrity)
- toissijaiset avaimet (secondary key, secondary index)
nopeuttavat taulun järjestämistä
- viite-avaimet
määritysalue on sama kuin jonkin perusavaimen
VIITE-EHEYS (REFERENTIAL INTEGRITY)
- jokaista taulussa esiintyvää (NULL:sta poikkeavaa) viiteavaimen arvoa pitää vastata
sama perusavaimen arvo taulussa, johon viiteavain viittaa
- yritettäessä rikkoa viite-eheyttä perusavaimen päivityksellä on kolme vaihtoehtoa:
- NULLIFIES eli viiteavaimen nollaus
kaikki poistuvaan perusavaimeen viittaavat viiteavaimet muutetaan
NULLeiksi
soveltuu vain sarakkeisiin, joilta ei ole kielletty puuttuvaa arvoa (NOT
NULL)
- CASCADES eli johdannaispoisto:
kaikki poistuvaan perusavaimeen viittaavat viiteavaimet ja vastaavat rivit
poistetaan
- RESTRICTED eli rajoitettu poisto:
voidaan poistaa vain perusavaimet, joihin ei ole viittauksia eli kyseistä
päivitystä ei tehdä.
NÄKYMÄT (VIEWS)
- Näkymä pohjautuu yhteen tai useampaan (perus)tauluun
- Näkymä esittää tietyillä ehdoilla rajatun osan halutusta taulusta / tauluista
Jokainen käyttäjä näjee vain ne tiedot, jotka ovat hänen kannaltaan oleellisia
- Taulukon päivitys aiheuttaa suoraan myös siihen pohjautuvien näkymien päivityksen
- Näkymiä päivittämällä voi eräin rajoituksin päivittää pohjana olevia taulukoita
- päivityskelpoiset (updatable)
näkymät jotka on saatu yhden perustaulun rivien ja/tai sarakkeiden
osajoukkona ja perusavain on näkymässä mukana
- päivityskelvottomat (non-updatable)
- päivitykset , joista ei edes teoriassa voida johtaa vaikutusta perustauluun
jonkin sarakkeen arvo esim. perustaulun sarakkeen keskiarvo
- ristiriita näkymän määrittelyn kanssa
näkymässä ovat esim. kaikki joiden OSASTONRO = 3 niin ei voida
lisätä riviä jolla olisi muu OSASTONRO
- useammasta perustaulukosta kootut näkymät ovat päivityskelvottomia
- päivitysrajoitteiset
- näkymät joissa jokin sarake on määritelty aritmeettisena lausekkeena tai
skalaarifunktiona.
voidaan poistaa rivejä ja muuttaa muita sarakkeita
Tietokannan hallintajärjestelmät
TIETOTURVA
- taulukon omistajan (owner) määrittely (authorization)
- tietokantakäsittelyn valtuuksien myöntäminen (grant)
oikeuksin delegoida valtuus edelleen (with grant option)
- valtuuksien epääminen (revoke)
- myös näkymien käsittelyyn voidaan myöntää oikeudet
ELVYTYS
- varmuuskopio (backup copy)
kopio koko tietokannasta tiettynä ajanhetkenä.
pystytään palauttamaan (restore) tietty aikaisempi tietokannan tilanne
- lokitiedosto (log file)
voidaan siirtyä tietokannan tilasta toiseen, ajallisesti eteen tai taaksepäin
Jokaisen tietokantaan tehtävän muutoksen yhteydessä kirjoitetaan lokitiedostoon
tietueen esi- ja jälkivedokset
- esivedos on kopio tietueesta ennen päivitystä
- jälkivedos on kopio tietueesta päivityksen jälkeen
- lisäyksen yhteydessä syntyy vain jälkivedos
- poiston yhteydessä syntyy vain esivedos
YHTEISKÄYTTÖ
- useampi ihminen käyttää tietokantaa samanaikaisesti josta voi seurata ongelmia jos
yhteiskäyttöön ei ole varauduttu
kadonneet päivitykset
- rajoitetaan muiden käyttäjien mahdollisuuksia jonkin resurssin käytössä
- pessimistinen lukitus
tietue lukitaan koko päivitykseen liittyvän toimintoketjun ajaksi muilta
käyttäjiltä
tiedettävä että aiotaan päivittää tietoja eikä vain lukea heti alkuvaiheessa.
- optimistinen lukitus
tietuetta päivitettäessä tutkitaan onko tietueessa "käyty" sen jälkeen kun se
otettiin muutettavaksi
aikaleimat
- eritasoisia lukituksia
- S-lukitus eli jaettu lukitus (shared)
lukon omistaja ja muut voivat lukea sivun tietoja, mutta eivät päivittää niitä.
Muut saavat S- ja U-lukituksia tälle sivulle.
- U-lukitus eli päivityslukitus (update)
lukituksen omistaja voi lukea tietoa ja aikoo päivittää sitä. Kukaan muu ei
voi saada U- eikä X-lukitusta. Ennen päivitystä lukon omistaja odottaa, ettei
muilla ole sivulle S-lukitusta. Sitten hän pyytää X-lukituksen ja suorittaa
päivityksen.
- X-lukitus eli poissulkeva (exclusive)
lukituksen omistaja voi lukea tai päivittää lukittua dataa. Kukaan muu ei
voi saada lukitusta.
- aikavalvonta
TAPAHTUMAT (transaktio)
- lokitiedostoa käytetään mahdollistamaan palautuminen keskeytyneestä transaktiosta
- transaktio toteutetaan kokonaisuudessaan tai ei ollenkaan.
- tietokanta on ennen ja jälkeen transaktion ristiriidattomassa (consistent) tilassa
- samanaikaisuuden käsittely (concurrency)
samanaikaiset transaktiot eivät saa sekoittua keskenään
- eristyvyys (isolation)
transaktion aiheuttamat muutokset eivät saa näkyä muille ennen kuin koko
transaktio on hyväksytty (commit)
- pysyvyys (durability)
Kun tapahtuma on vahvistettu, tapahtuman tulokset eivät häviä missään
olosuhteissa.
- keskeytyneen (aborted) transaktion tietokantaan tekemät muutokset pitää peruuttaa
(rollback)