Megszorítások. AB1_06A_Megszorítások - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

Hasonló dokumentumok
SQL DDL-1: táblák és megszorítások

Bevezetés: az SQL-be

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

SQL DDL-2 (aktív elemek) triggerek

SQL DDL: Táblák, megszorítások (constraints), triggerek, nézettáblák

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK)

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

Adatbázisok-I. előadás dr. Hajas Csilla (ELTE IK)

Az SQL adatbázisnyelv: DML

6.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

Adatbázis tartalmának módosítása

Relációsémák létrehozása SQL nyelvben

Adatbázisok-I. előadás dr. Hajas Csilla (ELTE IK)

Adatbázis I. 11. előadás. Kulcsok az SQL ben. Hivatkozásépségi megszorítások és idegen kulcsok.

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

Tervezés: Egyed-kapcsolat modell és az SQL DDL: táblák, nézetek

7. fejezet Kulcsok és idegen kulcsok

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Adatbázisok elmélete 10. előadás

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

B I T M A N B I v: T M A N

Lekérdezések az SQL-ben 1.rész

Lekérdezések az SQL-ben 1.rész

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok

Adatbázisok elmélete 9. előadás

SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

WHERE záradék (további lehetıségek) SQL specialitások, nem írhatók át relációs algebrába: LIKE. NULL értékek. Az ismeretlen (unknown) igazságérték

Adatbázis-kezelés. Harmadik előadás

Adatbázis használat I. 5. gyakorlat

Adatbázisok elmélete 9. előadás

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

Információs rendszerek Adatbázis-kezelés

Adatbázisok tavaszi félév Vizsgatételsor

Adatbázis rendszerek SQL nyomkövetés

Több táblára vonatkozó lekérdezések Relációs algebra és SQL SELECT

Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány)

Adatbázis kezelés Delphiben. SQL lekérdezések

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Adattípusok. Max. 2GByte

Bevezetés: Relációs adatmodell

ADATBÁZISOK: TAN7.EA témaköre SQL DDL, DML, DCL, Tranz.kez.

Adattípusok. Max. 2GByte

Adatbázis tartalmának módosítása. SQL DML utasítások

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE) október október 22. Adatbázisok 1 / 14

Adatbázis-kezelés, információs-rendszerek

Adatbázisok. 2. gyakorlat SQL november november 12. Adatbázisok 1 / 31

BEVEZETÉS Az objektum fogalma

Nézetek és indexek. AB1_06C_Nézetek_Indexek - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

Bevezetés: Relációs adatmodell

Adatbázis tartalmának módosítása (DML), az adatbázis-kezelı rendszerek felépítése,

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

Lekérdezések az SQL-ben 2.rész

Relációs algebra 2.rész példák

Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv)

Adatbázis Rendszerek I. 9. SQL alapok (DDL esettanulmány)

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

SQL parancsok feldolgozása

Tranzakciókezelés PL/SQL-ben

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

Az SQL nyelv. SQL (Structured Query Language = Strukturált Lekérdező Nyelv).

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

Adatbázisok* tulajdonságai

5.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

Adatbázisok elmélete 11. előadás

Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) );

Gazdasági folyamatok térbeli elemzése. 5. elıadás

Bevezetés: Relációs adatmodell

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

SQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák

SQL bevezetés. Select-From-Where záradékok Több relációt tartalmazó lekérdezések Alkérdések

Java és web programozás

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

Adatbázis Rendszerek II. 8. Gyakorló környezet

Adatbázisok biztonsága

Nézetek és indexek. 8. fejezet Nézettáblák

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

Webfejlesztés 4. alkalom

Relációs algebra 1.rész alapok

Adatbázisok I A relációs algebra

Adatbázisok elmélete

3. Előadás. Az SQL adatbázisnyelv (Tartalom) Az SQL története. Az SQL felépítése. Adattípúsok. SQL utasítások

Tankönyv példák kidolgozása

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK

Keskeny Zoltán 2007/08 SQL. Structured Query Language. (gyakorlat az SQL2 szabvány alapján) Keskeny Zoltán tanév

Készítette: Szabóné Nacsa Rozália

A relációs algebra egy speciális algebra, amely néhány egyszerű, de hathatós. operandusok. Egy reláció megadható a nevével vagy közvetlenül, sorainak

Az adatbázisrendszerek világa

LOGISZTIKAI ADATBÁZIS RENDSZEREK BEVEZETÉS


Adatbázis rendszerek tervezése

9.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Átírás:

Megszorítások Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 7.1. Kulcsok és idegen kulcsok 7.2. Attribútumra vonatkozó megszorítások 7.3. Megszorítások módosítása 7.4. Önálló megszorítások 1

Hol tartunk? Mit tanultunk eddig? A gyakorlatokon szereplı SQL használat szerint építjük fel az elıadást. Ami eddig, az 1-5. elıadáson és gyakorlaton volt, abból az anyagból írjuk a 6.gyakorlaton az I.ZH-t: 2.fejezet: Relációs modell és relációs algebra 5.1-5.2.: Kiterjesztett mőveletek a relációs algebrában 6.fejezet: Az SQL adatbázisnyelv (SELECT.. FROM.. WHERE.. GROUP BY.. HAVING.. záradékok szintaxis és szemantika, alapértelmezés, alkérdések kiértékelése) Van-e kérdés az eddigi tananyaggal vagy az I.ZH-val kapcsolatban? 2

Hol tartunk? Mi van még hátra? A következı témakörök a gyakorlat a II.ZH-ban lesznek: 6.5.: Változtatások az adatbázisban (DML) 7.fejezet: Megszorítások és triggerek 8.fejezet: Nézetek 9.3-9.4.: PSM (gyakorlaton Oracle PL/SQL) 5.3-5.4.: Datalog +10.2.: Rekurzió A tavaszi szünet után következı témákból csak a vizsgán lesz számonkérés: 3.fejezet: Relációs adatbázisok tervezésének elmélete, függıségeken alapuló normálformák, felbontások 4.fejezet: Magas szintő adatbázismodellek 1.fejezet: Az adatbázis-kezelı rendszerek komponensei 3

SQL fı komponensei Az SQL elsıdlegesen lekérdezı nyelv (Query Language) SELECT utasítás (az adatbázisból információhoz jussunk) Adatleíró rész, DDL (Data Definition Language) CREATE, ALTER, DROP Adatkezelı rész, DML (Data Manipulation Language) INSERT, UPDATE, DELETE Adatvezérlı rész, DCL (Data Control Language) GRANT, REVOKE Tranzakció-kezelı rész COMMIT, ROLLBACK, SAVEPOINT Procedurális kiterjesztések Oracle PL/SQL (Ada alapján), SQL/PSM (PL/SQL alapján) 4

Adatbázis relációsémák definiálása Ismétlés: Tankönyv 2.3. fejezete Az SQL tartalmaz adatleíró részt (DDL) is, az adatbázis objektumainak a leírására és megváltoztatására. Objektumok leíró parancsa a CREATE utasítás. A relációt az SQL-ben táblának (TABLE) nevezik, az SQL alapvetıen háromféle táblát kezel: Alaptáblák (permanens) CREATE TABLE Nézettáblák CREATE VIEW (ezt késıbb nézzük) Átmeneti munkatáblák Alaptáblák létrehozása: CREATE TABLE (köv.oldal) 5

Táblák létrehozása Ismétlés: A legegyszerőbb formája: CREATE TABLE táblanév ( attribútum deklarációk listája, további kiegészítések); Az attribútum deklaráció legalapvetıbb elemei: attribútumnév értéktípus [DEFAULT érték] itt olyan értéktípus, amit az SQL konkrét megvalósítása támogat (gyakorlaton Oracle környezetben nézzük meg), Típusok, például: INTEGER, REAL, CHAR, VARCHAR, DATE, stb DEAFAULT kiegészítéssel alapértelmezett értéket tudunk megadni. 6

Példa: sörivók adatbázis Sörök(név, gyártó) Bár(név, város, tulaj, engedély) Ivó(név, város, tel) Kedvel(név, sör) Felszolgál(bár, sör, ár) Látogat(név, bár) Az aláhúzás jelöli a kulcsot (a sorok a kulcs összes attribútumán nem vehetik fel ugyanazt az értékeket). Ez a kulcs, külsı kulcs és hivatkozási épség megszorításoknak lesz késıbb kiváló példája. 7

Egyszerő példák táblák létrehozására CREATE TABLE Bár ( név CHAR(20), város VARCHAR2(40), tulaj CHAR(30), engedély DATE DEFAULT SYSDATE ); CREATE TABLE Felszolgál ( bár CHAR(20), sör VARCHAR2(20), ár NUMBER(10,2) DEFAULT 100 ); 8

Kulcsok megadása Ismétlés: Egy attribútumot vagy attribútum listát kulcsként deklarálhatunk (PRIMARY KEY vagy UNIQUE). Mindkét formája a megszorításnak azt követeli meg, hogy relációnak ne legyen két olyan sora, melyek megegyeznek a kulcs attribútumokon. Kulcs esetén nincs értelme a DEAFULT értéknek. Kulcsok megadásának két változata van (köv.oldalak) Egyszerő kulcs (egy attribútum) vagy Összetett kulcs (attribútumok listája) 9

Egyszerő kulcs megadása Ismétlés: Ha a kulcs egyetlen attribútum, akkor ez az attribútum deklarációban megadható, az attribútumnév és típus után a PRIMARY KEY vagy UNIQUE kulcsszót írjuk. Példa: CREATE TABLE Sörök ( ); név gyártó CHAR(20) UNIQUE, CHAR(20) 10

Összetett kulcs megadása Ismétlés: A CREATE TABLE utasításban az attribútum deklarációk után a kiegészítı részben meg lehet adni további tábla elemeket, például egyik eleme lehet a kulcs deklaráció. Több attribútumú kulcsokat csak ebben a formában deklarálhatunk (ugyanakkor az egyetlen attribútumból álló kulcsokat is megadhatjuk ily módon). Példa: CREATE TABLE Felszolgál ( bár sör ár CHAR(20), VARCHAR2(20), NUMBER(10,2), PRIMARY KEY (bár, sör) ); 11

PRIMARY KEY vs. UNIQUE Ismétlés: Egy relációhoz csak egyetlen PRIMARY KEY tartozhat, viszont UNIQUE több is lehet. A PRIMARY KEY egyetlen attribútuma sem kaphat NULL értéket. A UNIQUE megszorításnál viszont szerepelhetnek NULL értékek vagyis hiányzó értékek egy soron belül akár több is. 12

DDL adatleíró részben módosítás Hogyan tudjuk a leíró részt módosítani? CREATE létrehozni DROP eldobni, a teljes leírást és mindazt, ami ehhez kapcsolódott hozzáférhetetlenné válik ALTER módosítani a leírást Ha ezt táblára használjuk DROP TABLE táblanév; ALTER TABLE táblanév DROP attribútumnév - - oszlopot tudunk törölni ADD attribútumnév értéktípus - - új oszlopot adni kiegészítı részek például megszorítások Például mikor adhatunk meg UNIQUE feltételt? 13

Megszorítások és triggerek Tankönyv 7. fejezet (új anyagrész!) A megszorítás adatelemek közötti kapcsolat, amelyet az AB rendszernek fent kell tartania. Példa: kulcs megszorítások. Triggerek olyankor hajtódnak végre, amikor valamilyen megadott esemény történik, mint pl. sorok beszúrása egy táblába. 14

Megszorítások típusai Kulcsok és idegen kulcsok, A hivatkozási épség fenntartása Megszorítások ellenırzésének késleltetése Attribútumokra vonatkozó megszorítások NOT NULL feltételek Egy attribútumra vonatkozó CHECK feltételek Sorokra vonatkozó megszorítások Sorra vonatkozó CHECK feltételek Önálló megszorítások (Assertions) 15

Idegen kulcsok megadása Még egy kiegészítı lehetıség Mi köthet össze két táblát? Idegen kulcs (foreign key) megadása Az egyik tábla egyik oszlopában szereplı értékeknek szerepelnie kell egy másik tábla bizonyos attribútumának az értékei között. A hivatkozott attribútumoknak a másik táblában kulcsnak kell lennie! (PRIMARY KEY vagy UNIQUE) Példa: Felszolgál(bár, sör, ár) táblára megszorítás, hogy a sör oszlopában szereplı értékek szerepeljenek a Sörök(név, gyártó) táblában a név oszlop értékei között. 16

Idegen kulcsok megadása: attribútumként REFERENCES kulcsszó használatának két lehetısége: attribútumként vagy sémaelemként lehet megadni. 1.) Attribútumként (egy attribútumból álló kulcsra) PÉLDA: CREATE TABLE Sörök ( név CHAR(20) PRIMARY KEY, gyártó CHAR(20) ); CREATE TABLE Felszolgál ( bár CHAR(20), sör CHAR(20) REFERENCES Sör(név), ár REAL ); 17

Idegen kulcsok megadása: sémaelemként 2. Sémaelemként (egy vagy több attr.-ból álló kulcsra) FOREIGN KEY (list of attributes) REFERENCES relation (attributes PÉLDA: CREATE TABLE Sörök ( név CHAR(20) PRIMARY KEY, gyártó CHAR(20) ); CREATE TABLE Felszolgál ( bár CHAR(20), sör CHAR(20), ár REAL, FOREIGN KEY(sör) REFERENCES Sörök(név)); 18

Idegen kulcs megszorítások megırzése Példa: R = Felszolgál, S = Sörök. Egy idegen kulcs megszorítás R relációról S relációra kétféleképpen sérülhet: 1. Egy R-be történı beszúrásnál S-ben nem szereplı értéket adunk meg. 2. Egy S-beli törlés lógó sorokat eredményez R-ben. 19

Hogyan védekezzünk? --- (1) Példa: R = Felszolgál, S = Sörök. Nem engedjük, hogy Felszolgál táblába a Sörök táblában nem szereplı sört szúrjanak be. A Sörök táblából való törlés, ami a Felszolgál tábla sorait is érintheti (mert sérül az idegen kulcs megszorítás) 3-féle módon kezelhetı (lásd köv.oldal) 20

Hogyan védekezzünk? --- (2) 1. Alapértelmezés (Default) : a rendszer nem hajtja végre a törlést. 2. Továbbgyőrőzés (Cascade): a Felszolgál tábla értékeit igazítjuk a változáshoz. Sör törlése: töröljük a Felszolgál tábla megfelelı sorait. Sör módosítása: a Felszolgál táblában is változik az érték. 3. Set NULL: a sör értékét állítsuk NULL-ra az érintett sorokban. 21

Példa: továbbgyőrőzés Töröljük a Bud sort a Sörök táblából: az összes sort töröljük a Felszolgál táblából, ahol sör oszlop értéke Bud. A Bud nevet Budweiser -re változtatjuk: a Felszolgál tábla soraiban is végrehajtjuk ugyanezt a változtatást. 22

Példa: Set NULL A Bud sort töröljük a Sörök táblából: a Felszolgál tábla sör = Bud soraiban a Budot cseréljük NULL-ra. Bud -ról Budweiser -re módosítunk: ugyanazt kell tennünk, mint törléskor. 23

A stratégia kiválasztása Ha egy idegen kulcsot deklarálunk megadhatjuk a SET NULL és a CASCADE stratégiát is beszúrásra és törlésre is egyaránt. Az idegen kulcs deklarálása után ezt kell írnunk: ON [UPDATE, DELETE][SET NULL CASCADE] Ha ezt nem adjuk meg, a default stratégia mőködik. 24

Példa: stratégia beállítása CREATE TABLE Felszolgál ( bár CHAR(20), sör CHAR(20), ár REAL, FOREIGN KEY(sör) REFERENCES Sörök(név) ON DELETE SET NULL ON UPDATE CASCADE ); 25

Tankönyv példája Módszer megadása a hivatkozási épség megırzésére: CREATE TABLE Stúdió ( név CHAR(30) PRIMARY KEY, cím VARCHAR(255), elnökazon INT REFERENCES GyártásIrányító(azonosító) ON DELETE SET NULL ON UPDATE CASCADE ); 26

Megszorítások ellenırzésének késleltetése Körkörös megszorítások miatt szükség lehet arra, hogy a megszorításokat ne ellenırizze, amíg az egész tranzakció be nem fejezıdött. Bármelyik megszorítás deklarálható DEFERRABLE (késleltethetı) vagy NOT DEFERRABLE-ként (vagyis minden adatbázis módosításkor a megszorítás közvetlenül utána ellenırzésre kerül). DEFERRABLE-ként deklaráljuk, akkor lehetıségünk van arra, hogy a megszorítás ellenırzésével várjon a rendszer a tranzakció végéig. Ha egy megszorítás késleltethetı, akkor lehet kezdetben késleltetett (INITIALLY DEFERRED) vagy kezdetben azonnali (INITIALLY IMMEDIATE) 27

Tankönyv példája Az elnökazon egyedisége és a megszorítás késleltetése CREATE TABLE Stúdió ( név CHAR(30) PRIMARY KEY cím VARCHAR(255) elnökazon INT UNIQUE REFERENCES GyártásIrányító(azonosító) DEFERRABLE INITIALLY DEFERRED ); 28

Attribútumokra vonatkozó megszorítások Egy adott oszlop értékeire vonatkozóan adhatunk meg megszorításokat. A CREATE TABLE utasításban az attribútum megadása után NOT NULL kulcsszóval Adjuk hozzá a CHECK(<condition>) feltételt az attribútum deklarációjához. A feltételben csak az adott attribútum neve szerepelhet, más attribútumok (más relációk attribútumai is) csak alkérdésben szerepelhetnek. 29

Példa: attribútum alapú ellenırzés CREATE TABLE Felszolgál ( bár CHAR(20), sör CHAR(20) CHECK ( sör IN (SELECT name FROM Sörök)), ár REAL CHECK ( ár <= 5.00 ) ); 30

Mikor ellenırzi? Attribútum-alapú ellenırzést csak beszúrásnál és módosításnál hajt végre a rendszer. Példa: CHECK (ár <= 5.00) a beszúrt vagy módosított sor értéke nagyobb 5, a rendszer nem hajtja végre az utasítást. Példa: CHECK (sör IN (SELECT név FROM Sörök), ha a Sörök táblából törlünk, ezt a feltételt nem ellenırzi a rendszer. 31

Sorokra vonatkozó megszorítások A CHECK (<feltétel>) megszorítás a séma elemeként is megadható. A feltételben tetszıleges oszlop és reláció szerepelhet. De más relációk attribútumai csak alkérdésben jelenhetnek meg. Csak beszúrásnál és módosításnál ellenırzi a rendszer. 32

Példa: sor-alapú megszorítások Csak Joe bárjában lehetnek drágábbak a sörök 5 dollárnál: CREATE TABLE Felszolgál ( ); bár CHAR(20), sör CHAR(20), ár REAL, CHECK (bár = Joe bárja OR ár <= 5.00) 33

Tankönyv példája Attribútumokra és sorokra vonatkozó megszorítások Példa: Ha egy színész neme férfi, akkor a neve nem kezdıdhet Ms. -el CREATE TABLE FilmSzínész ( név CHAR(30) PRIMARY KEY, cím VARCHAR(255) NOT NULL, nem CHAR(1), születésidátum DATE, CHECK (nem = 'N' OR név NOT LIKE 'Ms.%') ); 34

Megszorítások elnevezése Tankönyv példái: név CHAR(30) CONSTRAINT NévKulcs PRIMARY KEY, nem CHAR(1) CONSTRAINT FérfiVagyNı CHECK (nem IN ('F', 'N')), CONSTRAINT Titulus CHECK (nem = 'N' OR név NOT LIKE 'Ms.\%') 35

Megszorítások módosítása Tankönyv példái: ALTER TABLE FilmSzínész ADD CONSTRAINT NévKulcs PRIMARY KEY (név); ALTER TABLE FilmSzínész ADD CONSTRAINT FérfiVagyNı CHECK (nem IN ('F', 'N')); ALTER TABLE FilmSzínész ADD CONSTRAINT Titulus CHECK (nem = 'N' OR név NOT LIKE 'Ms.\%'); 36

Önálló megszorítások: Assertions SQL aktív elemek közül a leghatékonyabbak nincs hozzárendelve sem sorokhoz, sem azok komponenseihez, hanem táblákhoz kötıdnek. Ezek is az adatbázissémához tartoznak a relációsémákhoz és nézetekhez hasonlóan. CREATE ASSERTION <név> CHECK (<feltétel>); A feltétel tetszıleges táblára és oszlopra hivatkozhat az adatbázissémából. 37

Példa: önálló megszorítások A Felszolgál(bár, sör, ár) táblában nem lehet olyan bár, ahol a sörök átlagára 5 dollárnál több CREATE ASSERTION CsakOlcsó CHECK ( (SELECT.. NOT EXISTS ( olyan bárok, SELECT bár ahol a sörök FROM Felszolgál átlagosan drágábbak GROUP BY bár 5 dollárnál) HAVING 5.00 < AVG(ár) )); 38

Példa: önálló megszorítások Az Sörvivó(név, cím, telefon) és Bár(név, cím, engedély), táblákban nem lehet több bár, mint amennyi sörivó van. CREATE ASSERTION KevésBár CHECK ( (SELECT COUNT(*) FROM Kocsma) <= (SELECT COUNT(*) FROM Sörivó) ); 39

Önálló megszorítások ellenırzése Alapvetıen az adatbázis bármely módosítása elıtt ellenırizni kell. Egy okos rendszer felismeri, hogy mely változtatások, mely megszorításokat érinthetnek. Példa: a Sörök tábla változásai nincsenek hatással az iménti KevésBár megszorításra. Ugyanez igaz a Sörivók táblába történı beszúrásokra is. 40

Tankönyv példája Önálló megszorítás, amelyik a stúdióelnökök gazdagságát írja elı CREATE ASSERTION GazdagElnök CHECK (NOT EXISTS (SELECT * FROM Stúdió, GyártásIrányító WHERE elnökazon = azonosító AND nettóbevétel < 10000000 ) ); 41