Presentation is loading. Please wait.

Presentation is loading. Please wait.

Integritné obmedzenia v SQL

Similar presentations


Presentation on theme: "Integritné obmedzenia v SQL"— Presentation transcript:

1 Integritné obmedzenia v SQL
Jan Milan

2 Možnosti zabezpečenia integrity
Aplikačná vrstva Každá funkcia samostatne Integrita sa neudržuje a dojem konzistencie sa vytvára až na prezenčnej vrstve Aplikácie, ktoré periodicky kontrolujú stav DB Stredná vrstva Spoločné funkcie na úrovni aplikácie alebo v DB Na úrovni Databáze Integritné obmedzenia

3 Typy obmedzení (v SQL) Domenové Tabuľkové
Obecné (nahraditeľné pomocou tabuľkových)

4 Doménové obmedzenia Typové obmedzenia Pohľady CHAR(10), NUMBER(2,7)
CREATE DOMAIN T_Farba CHAR(10) DEFAULT ‘???’ CONSTRAINT Platne_farby CHECK ( VALUE IN (‘Modra’,‘Zlta’,‘???’)) Pohľady CREATE VIEW Modre_predmety AS SELECT * FROM Predmety WHERE Farba = ‘Modra’ WITH CHECK OPTION

5 Tabuľkové obmedzenia Sú súčasťou príkazov pre vytváranie tabuliek alebo zmenu ich definície NOT NULL UNIQUE CHECK PRIMARY KEY FOREIGN KEY

6 Klauzula NOT NULL Zajisťuje, že daný stĺpec bude vždy obsahovať hodnotu CREATE TABLE Filmy ( Nazov CHAR(30) NOT NULL, Meno_rezisera CHAR(50), …) Nahraditeľná pomocou CHECK CHECK ( Nazov IS NOT NULL )

7 Klauzula UNIQUE Zabezpečuje unikátnosť každej hodnoty v stĺpci
Nevylučuje nezadanú hodnotu (NULL), može sa však vyskytovať iba raz Dá sa definovať na úrovni stĺpca aj tabuľky CREATE TABLE Dodavatelia ( Nazov CHAR(30) UNIQUE, …) CREATE TABLE Ocenenia ( Nazov_filmu CHAR(30) NOT NULL, Meno_herca CHAR(30) NOT NULL, UNIQUE (Nazov_filmu, Meno_herca) )

8 Klauzula CHECK Určuje podmienku, ktorú musí splniť každý stĺpec
obmedzenia podmienky Nemože sa odkazovať na iné riadky danej tabuľky (može však obsahovať poddotazy) Nemala by obsahovať funkcie, ktorých hodnota závisí na konkrétnom čase alebo prihlásenom uživateľovy

9 Klauzula CHECK CREATE TABLE Filmy ( Nazov CHAR(30), Cena NUMBER(9,2)
CHECK (Cena < 100), Meno_rezisera CHAR(50) ) Cena NUMBER(9,2), Meno_rezisera CHAR(50), CHECK (Cena BETWEEN 0 AND 100)

10 Klauzula CHECK CREATE TABLE Filmy ( Nazov CHAR(30),
Typ CHAR(10) DEFAULT ‘???’, Natoceny CHAR(3), Na_kazetach CHAR(3), CHECK (Typ IN (‘Komedia’,’Akcny’,’???’)), CHECK ((Natoceny, Na_kazetach) IN ( (‘Nie’, ‘Nie’), (‘Ano’, ‘Nie’), (‘Ano’, ‘Ano’)) )

11 Klauzula CHECK CREATE TABLE Detske_filmy ( Nazov CHAR(30),
Odporucana_cena NUMBER(5,2), Predajna_cena NUMBER(5,2), CHECK (Nazov NOT IN (SELECT Nazov FROM Filmy_nevhodne_pre_deti)), CHECK (Predajna_cena > Odporucana_cena) )

12 Klauzula PRIMARY KEY Určuje stĺpec (resp. stĺpce), ktorý je primárnym kľúčom tabulky Alternatívne kľúče pomocou kombinácie NOT NULL a UNIQUE CREATE TABLE Filmy1 ( Nazov CHAR(30) PRIMARY KEY ) CREATE TABLE Filmy2 ( Nazov CHAR(30), Meno_rezisera CHAR(50), PRIMARY KEY (Nazov, Meno_rezisera))

13 Klauzula FOREIGN KEY Zajisťuje referenčnú integritu
Stĺpec (resp. Skupina stĺpcov), ktorého hodnota závisí na hodnotách v inej tabuľke Obsahuje aj definíciu akcií, ktoré sa vykonajú pri zmenách v referencovanej tabuľke CREATE TABLE Komedie ( Nazov_filmu CHAR(30) REFERENCES Filmy1 )

14 Klauzula FOREIGN KEY CREATE TABLE Komedie ( Nazov_filmu CHAR(30),
Meno_rezisera CHAR(50), FOREIGN KEY (Nazov_filmu, Meno_rezisera) REFERENCES Filmy2(Nazov,Meno_rezisera)) CREATE TABLE Zamestnanci ( ID_Zamestnanca NUMBER PRIMARY KEY, Meno CHAR(50), ID_Nadriadeneho NUMBER REFERENCES Zamestnanci)

15 Akcie referenčného obmedzenia
Akcie iba při referenčnom omezení Spúšťa ich zmena alebo zmazanie hodnoty v referencovanej tabuľke Kľúčové slová ON UPDATE ON DELETE CASCADE SET NULL SET DEFAULT NO ACTION ID_Odd Nazov 1 Odd1 2 Odd2 3 Odd3 ID_Zam Meno ID_Odd 1 AAA 2 2 BBB 2 3 CCC 3 4 DDD 1

16 Akcie referenčného obmedzenia
CREATE TABLE Zamestanci ( ID_Zam NUMBER NOT NULL, Meno CHAR(50), ID_Odd NUMBER, CONSTRAINT Zam_Odd_fk FOREIGN KEY (ID_odd) REFERENCES Oddelenia(ID_odd) ON UPDATE CASCADE ON DELETE SET NULL )

17 Tabuľkové obmedzenia obecne
Používanie kľúčoveho slova CONSTRAINT Indexy

18 Obecné obmedzenia Kľúčové slovo ASSERTION
Niesú spojené s jednou tabuľkou Samostatné objety databáze Nahraditeľné pomocou tabuľkových, klauzulou CHECK Tabuľkové obmedzenia sa uplatňujú iba ak daná tabuľka obsahuje dáta

19 Obecné obmedzenia CREATE TABLE ...
CHECK ((SELECT MAX(COUNT(ID_Zam)) FROM Zamestanci GROUP BY ID_Odd) < (SELECT COUNT(*) FROM Oddelenia)) ) CREATE ASSERTION Max_Zam_v_Odd CHECK (...) CREATE TABLE Neprazdna (... CHECK((SELECT COUNT(*) FROM Neprazdna)>0)) CREATE ASSERTION Neprazdna_neprazdna CHECK((SELECT COUNT(*) FROM Neprazdna)>0)

20 Ďalšie vlastnosti [ [[NOT] DEFERRABLE] [INITIALLY { IMMEDIATE | DEFERRED }] [ ENABLE|DISABLE ] [ VALIDATE|NOVALIDATE ]

21 Ďalšie možnosti Trigger

22 Zhrnutie Možnosti zabezpečenia integrity
Typy obmedzení a ich vlastnosti Doménové Tabuľkové Obecné

23 Použité zdroje Jim Melton, Alan R. Simon: „Understanding the new SQL: A complete guide“ „An introduction to Database Systems“ Oracle9i SQL Reference Release 2 Slidy ku školeniu Oracle 8i – SQL


Download ppt "Integritné obmedzenia v SQL"

Similar presentations


Ads by Google