Viite-eheys (Referential Integrity)

Timo Ahjos 7.5.1999
Relaatiotietokannan eri taulujen välillä voi olla viittauksia, jotka kytkevät taulujen tietosisällöt toisiinsa. Tyypillinen kytkentä on "äiti-lapsi"-suhde (Parent-Child), jolloin jälkimmäisen taulun jokaisella rivillä on viittaus edellisen taulun johonkin riviin. Viite-eheydellä tarkoitetaan sitä, että taulujen väliset viittaukset ovat kunnossa.

dBASE:n tietokantakoneisto huolehtii viite-eheydestä automaattisesti sille annettujen sääntöjen mukaisesti. Jos tietokantataulut ovat jossakin ulkopuolisessa SQL-tietokantakoneistossa, automatiikka toimii siinä laajuudessa kuin ao. tietokantakoneisto tukee tällaista automatiikkaa.

Seuraavassa kuvataan yksinkertaista esimerkkiä käyttäen, kuinka eheyssäännöt käytännössä määritellään. Esimerkissä on kaksi taulua, joiden avainkentät ovat seuraavat:

Taulu Customer.dbf on "parent",
sisältää asiakkaan perustiedot
Kentän nimiTyyppiIndeksi
*)=Ensisijainen
Sisältö
Customer IDChar 5*) NousevaAsiakastunnus
Last name Char 30Nouseva Sukunimi

Taulu Invoice.dbf on "child",
sisältää kuukausilaskuja koskevat tiedot
Kentän nimiTyyppiIndeksi
*)=Ensisijainen
Sisältö
InvoiceAutoincr.*) NousevaLaskun tunnus
Customer ID Char 5Nouseva Asiakastunnus
"Nouseva indeksi" tarkoittaa vain sitä, että silloin
kun taulun rivit näytetään tuon kentän mukaisessa järjestyksessä,
ne ovat nousevassa numero- tai aakkosjärjestyksessä.

Vaihe 1:

Avataan se projekti, jonka tietokantatauluja halutaan käsitellä. Otetaan esille valikon kohdasta File / Database Administration seuraava lomake:

Vaihe 2:

Yllä olevassa kuvassa näkyy valmiina kahden taulun välille määritelty Parent-Child-suhde. Tuon suhteen eli relaation nimi "customerinvoice" on muodustunut taulujen nimistä "customer" ja "invoice". Ennen kuin se määriteltiin, tämä lomake oli tyhjä ja määrittelylomake saatiin esille painamalla "New"-nappia. Nyt kun määrittely on tehtynä, sitä voidaan muuttaa painamalla "Modify"-nappia. Jos tietokannassa olisi useampia tauluja, niiden välille voitaisiin määritellä muitakin relaatioita. "Drop"-napin painallus yksinkertaisesti poistaa luettelosta valitun, aiemmin määritellyn relaation.

Jos tietokanta on käytössä, näiden määrittelyjen tekijällä täytyy olla muut samanaikaiset käyttäjät poissulkeva pääsy tauluihin, joita määrittely koskee.

Relaatioiden ja viite-eheyssääntöjen määrittelylomake, joka siis avautuu "New"- ja "Modify"-napeista, on tällainen:

Sivun alkuun
Seuraava sivu: Käyttöoikeudet