Az épségi megszorítások azt biztosítják, hogy az adatbázis módosítások ne eredményezhessenek helytelen sorokat a relációban.
Megszorítások a relációs adatbázisokban
- Kulcsok: Kulcs az az attribútum vagy attribútumhalmaz, amely funkcionálisan meghatározza a reláció összes többi attribútumát és nincs olyan valódi részhalmaza, amely funkcionálisan meghatározná a reláció összes többi attribútumát.
- Hivatkozási épség és idegen kulcsok: ami azt a követelményt fejezi ki, hogy 1 reláció 1 v. több attribútumának az értéke elő kell, hogy forduljon 1 másik reláció adott attribútumának értékeként.
- Attribútumértékekre vonatkozó megszorítások: Egy attribútum az értékeit a megadott értéktartományból veheti fel. Ilyen pl.: egyediség elvárása, az értéktartomány korlátozása bizonyos értékekre, és a NULL értékek megtiltása.
- Sorokra vonatkozó megszorítások
- A reláció egészére vonatkozó megszorítások
- Több relációt érintő megszorítások (Önálló megszorítások): Minden alkalommal ellenőrzi a rendszer, amikor az érintett relációk bármelyike módosul.
Megszorítások megadása SQL -ben
Az SQL2 számos lehetőséget kínál arra, hogy az épségi megszorításokat az adatbázisséma részeként adjuk meg:
- Kulcsok megadása az SQL -ben: Talán a legfontosabb fajtamegszorítás 1 adatbázisban annak deklarálása, hogy 1 attribútum v. attribútum-halmaz 1 relációnak a kulcsát alkotja. A kulcsfeltétel az SQL nyelv CREATE TABLE utasításán belül adható meg. Kulcsokat 2 módon deklarálhatunk, az egyik a PRIMARY KEY, a másik s UNIQUE kulcsszó segítségével történik. A PRIMARY KEY használata esetén a kulcs csak 1 attribútum lehet, UNIQUE-ot viszont több attribútumból álló kulcs megadásakor is használhatjuk.
Az elsődleges kulcsot a CREATE TABLE utasításon belül 2 fajta módon adhatjuk meg:- Az attribútumot deklarálhatjuk elsődleges kulcsként akkor, amikor az attribútumot felsoroljuk a relációsémában. A PRIMARY KEY kulcsszót az attribútum neve és típusa után kell írnunk.
- Hozzáadhatunk a sémában deklarált elemek listájához 1 további deklarációt, amelyik azt adja meg, hogy 1 attribútum v. attribútum-halmaz kulcsot alkot. Ilyenkor 1 új elemet kell az attribútumok listája után írnunk, amelyik a PRIMARY KEY kulcsszóból és a kulcsot alkotó attribútum(ok) zárójelezett listájából áll.
- Hivatkozási épség megszorítások: Előírhatjuk, hogy 1 attribútum v. attribútum-halmaz értékeinek elő kell fordulnia 1 másik reláció valamelyik sorának elsődleges kulcs attribútuma(i)ban. Ezt a relációséma megadásakor a REFERENCES v. a FOREIGN KEY kulcsszóval adhatjuk meg:
- Ha az idegen kulcs egyetlen attribútum:
REFERENCES <tábla> (<attribútum>)
- Ha az idegen kulcs több attribútumból áll:
FOREIGN KEY <attribútumok> REFERENCES <tábla> (<attribútumok>)
- Ha az idegen kulcs egyetlen attribútum:
- Attribútum-értékekre vonatkozó megszorítások: Azok a megszorítások, amelyek azt korlátozzák, hogy bizonyos attribútumok milyen értékeket vehetnek fel.
- a, NOT NULL feltételek : 1 egyszerű megszorítás, ami 1 attribútumhoz hozzárendelhető. Ez nem engedi meg olyan sorok előfordulását, amelyben az adott attribútum értéke NULL. A megszorítást úgy deklaráljuk, hogy a CREATE TABLE utasításban az attribútum megadása után a NOT NULL kulcsszót szerepeltetjük.
- b, Attribútumra vonatkozó CHECK feltételek: Bonyolultabb megszorítások rendelhetők hozzá 1 attribútumhoz, ha a deklarációban a CHECK kulcsszót használjuk. A kulcsszót 1 zárójelbe tett feltétel követi, amelyet az attribútum minden értékének ki kell elégítenie.
1 attribútumra vonatkozó CHECK feltételt csak akkor ellenőriz a rendszer, amikor valamelyik sorban az adott attribútum új értéket kap. Ha az új érték megsérti a feltételt, akkor a rendszer az adatmódosítást visszautasítja. - c, Értéktartományokra vonatkozó megszorítások: 1 attribútum értékeit úgy deklaráljuk, hogy 1 értéktartományt deklarálunk 1 hasonló megszorítással, majd ezt az értéktartományt adjuk meg az attribútum típusaként. Az SQL2 a VALUE -t kínálja arra, hogy az értéktartomány 1 értékére hivatkozhassunk.
Pl: A NemÉrtékek nevű értéktartomány deklarációja, amely csak az ’F’ és ’N’ karakterek előfordulását engedi meg:CREATE DOMAIN NemÉrtékek CHAR(1) CHECK (VALUE IN (’F’, ’N’));
- Globális megszorítások:
- a, Sorra vonatkozó CHECK feltételek: amelyek egyetlen reláció soraira tesznek különféle megszorításokat. A CREATE TABLE utasítás végén kell megadni a CHECK kulcsszót, majd zárójelek között egy feltételt.
- b, Önálló megszorítások: akár egy vagy több relációra is vonatkozhatnak.
Az utasítás formája:CREATE ASSERTION <név> CHECK (<feltétel>)