Bazy danych – wykład szósty
Wi ˛ezy i wyzwalacze
Konrad Zdanowski
Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
1 / 35
Wst ˛ep
Wiemy jak nakłada´c pewne ograniczenia (wi ˛ezy) w schemacie
bazy danych (klucze, integralno´s´c referencyjna).
Implementacja bazy danych mo˙ze korzysta´c z tych ogranicze ´n
aby zwi ˛ekszy´c wydajno´s´c ale musi te˙z dba´c o ich zachowanie,
czyli o spójno´s´c danych.
Mo˙zna dba´c o to z poziomu aplikacji lecz jest to niebezpieczne i
niewygodne.
DBMS dostarcza narz ˛edzi do definiowania czynnosci, które trzeba
podj ˛
a´c aby sprawdzi´c czy wi ˛ezy nie zostały naruszone (i co wtedy
zrobi´c).
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
2 / 35
Outline
1
2
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
3 / 35
Outline
1
2
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
4 / 35
Klucze własne
Klucze własne tabeli deklarujemy przez PRIMERY KEY lub UNIQUE.
cr ea te t a b l e osoby (
p e s e l
char [ 1 1 ] primary key ,
i m i e
char [ 2 0 ] ,
nazwisko
char [ 5 0 ]
) ;
cr ea te t a b l e samochody (
n r _ s i l n i k a
i n t ,
marka
char [ 3 0 ] ,
primary key ( n r _ s i l i n i k a , marka )
) ;
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
5 / 35
Klucze obce
Niech
A b ˛edzie zbiorem atrybutów w relacji T i niech B b ˛edzie zbiorem
atrybutów w relacji
S.
Mo˙zemy zadeklarowa´c
A jako klucz obcy powi ˛
azany z atrybutami
G.
Atrybuty
G musz ˛
a by´c kluczem relacji
S.
Dla ka˙zdej krotki t ∈
T, która ma ró˙zne od NULL warto´sci
atrybutów
A musi istnie´c krotka s ∈ S taka, ˙ze t[A] = s[B].
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
6 / 35
Klucze obce
Klucze obce deklarujemy jako
cr ea te t a b l e Malzenstwa (
maz
i n t references Osoby ( i d ) ,
zona
i n t references Osoby ( i d )
) ;
lub przez oddzieln ˛
a deklaracj ˛e
cr ea te t a b l e K s i e g o z b i o r (
t y t u l
char [ 5 0 ] ,
rok_wydania
i n t ,
szerokosc
i n t ,
wysokosc
i n t ,
f o r e i g n key ( t y t u l , r o k )
references K s i a z k i ( t y t u l , r o k )
) ;
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
7 / 35
Problem jajka i kury
Rozwa˙zmy deklaracje
cr ea te t a b l e Kura (
i d
i n t primary key ,
j a j k o _ i d
i n t references J a j k o ( i d )
) ;
cr ea te t a b l e J a j k o (
i d
i n t primary key ,
k u r a _ i d
i n t references Kura ( i d )
) ;
Wykonanie tych polece ´n wygeneruje bł ˛
ad (Oracle) gdy˙z podczas
tworzenia tabeli Kura nie istnieje tabela, do której odwołuje si ˛e klucz
obcy tabeli Kura.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
8 / 35
Problem jajka i kury
Musimy utworzy´c tabele Jajko i Kura bez deklaracji kluczy obcych:
cr ea te t a b l e Kura (
i d
i n t primary key ,
j a j k o _ i d
i n t
) ;
cr ea te t a b l e J a j k o (
i d
i n t primary key ,
k u r a _ i d
i n t
) ;
Nast ˛epnie modyfikujemy tabele:
a l t e r t a b l e Kura add c o n s t r a i n t KuraRefJajko
f o r e i g n key ( j a j k o _ i d ) references J a j k o ( i d )
i n i t i a l l y deferred d e f e r r a b l e ;
a l t e r t a b l e J a j k o add c o n s t r a i n t JajkoRefKura
f o r e i g n key ( k u r a _ i d ) references Kura ( i d )
i n i t i a l l y deferred d e f e r r a b l e ;
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
9 / 35
Problem jajka i kury
Opcja
initially deferred deferrable ka˙ze odroczy´c sprawdzenie
integralno´sci referencyjnej.
Dzi ˛eki temu mo˙zemy doda´c co´s do obu tabel:
i n s e r t i n t o Kura values ( 1 , 3 ) ;
i n s e r t i n t o J a j k o values ( 3 , 1 ) ;
commit ;
Sprawdzenie nast ˛epuje dopiero podczas
commit.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
10 / 35
Problem jajka i kury
Podobnie usuni ˛ecie tabeli Kura narusza warunek klucza obcego z
tabeli Jajko.
Przed usuni ˛eciem musimy wcze´sniej zmieni´c tabele
a l t e r t a b l e Kura drop c o n s t r a i n t KuraRefJajko ;
a l t e r t a b l e J a j k o drop c o n s t r a i n t JajkoRefKura ;
drop t a b l e Kura ;
drop t a b l e J a j k o ;
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
11 / 35
Odroczenie sprawdzania wi ˛ezów
Domy´slnie wi ˛ezy sprawdzane s ˛
a po ka˙zdej instrukcji, która mo˙ze
je naruszy´c.
Mo˙zemy odroczy´c sprawdzanie wi ˛ezów przez deklaracje bf
deferable initially deferred.
Mo˙zemy te˙z zmieni´c strategie sprawdzania wi ˛ezów poleceniem:
set constraint <ograniczenie> deferred lub set constraint
<ograniczenie>
immediate.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
12 / 35
Integralno´s´c referencyjna
Zmiany krotek, w tabeli z wi ˛ezami mog ˛
a spowodowa´c ich
naruszenie.
DBMS powinien zareagowa´c w takich sytuacjach.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
13 / 35
Integralno´s´c referencyjna
Rozwa˙zmy tabele Klucze(id) i KluczeObce(ko), gdzie ko jest kluczem
obcym odwołuj ˛
acym si ˛e do Klucze(id).
Je´sli chcemy wstawi´c do
KluczeObce krotk˛e z warto´sci ˛
a klucza
obcego ró˙zn ˛
a od NULL i tak ˛
a, ˙ze nie znajduje si ˛e ona w tabel
Klucze, to DBMS odrzuci zmian ˛e.
Podobnie musi zachowa´c si ˛e w sytuacji, gdy zmieniamy warto´s´c
ko w KluczeObce na warto´s´c ró˙zn ˛
a od NULL i nie znajduj ˛
ac ˛
a si ˛e
w tabeli
Klucze.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
14 / 35
Integralno´s´c referencyjna – usuwanie
Rozwa˙zmy tabele Klucze(id) i KluczeObce(ko), gdzie ko jest kluczem
obcym odwołuj ˛
acym si ˛e do Klucze(id).
DBMS domy´slnie zabroni usuni ˛ecia krotek z tabeli
Klucz, do
których odwołuj ˛
a si ˛e pewne krotki z tabeli
KluczObcy.
Polityka kaskadowa usunie wszystkie krotki z tabeli
KluczObcy,
które odwołuj ˛
a si ˛e do usuni ˛etej warto´sci (opcja
on delete
cascade).
Polityka ustawienia NULL wstawi warto´sci NULL w miejsce
wszystkich warto´sci, które przestały odwoływa´c si ˛e do istniej ˛
acej
warto´sci (
on delete set null).
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
15 / 35
Integralno´s´c referencyjna – modyfikacja
Rozwa˙zmy tabele Klucze(id) i KluczeObce(ko), gdzie ko jest kluczem
obcym odwołuj ˛
acym si ˛e do Klucze(id).
DBMS domy´slnie zabroni modyfikacji krotek z tabeli
Klucz, do
których odwołuj ˛
a si ˛e pewne krotki z tabeli
KluczObcy.
Polityka kaskadowa zmieni warto´sci atrybutu
ko krotek z tabeli
KluczObcy, na now ˛
a warto´s´c (opcja
on update cascade).
Polityka ustawienia NULL wstawi warto´sci NULL w miejsce
wszystkich warto´sci, które przestały odwoływa´c si ˛e do istniej ˛
acej
warto´sci (
on update set null).
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
16 / 35
Wi ˛ezy atrybutów i krotek
Mo˙zemy nakłada´c wi ˛ezy na poszczególne atrybuty tabeli.
Przykłady:
I
id
int not null,
I
plec
char(1) check (plec in (’K’, ’M’)).
I
kluczobcy
int check (exists (select id from Klucze)).
I
check (placa >= select avg(placa) / 2 from pracownicy).
Wi ˛ezy te s ˛
a sprawdzane przy ka˙zdym wstawieniu lub aktualizacji
warto´sci atrybutu.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
17 / 35
Wi ˛ezy atrybutów i krotek
W definicji tabeli mo˙zemy doda´c warunek, który maj ˛
a spełnia´c
krotki z tabeli.
Np. tylko osoby posiadaj ˛
ace kart ˛e kredytow ˛
a w danym banku
mog ˛
a mie´c w nim kredyt:
I
check ( (KartaKredytowa is not null)or( Kredyt is null)).
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
18 / 35
Wi ˛ezy atrybutów i krotek
Wi ˛ezy krotek s ˛
a sprawdzane przy modyfikacji krotki.
Wi ˛ezy atrybutów s ˛
a sprawdzane tylko przy wło˙zeniu lub
modyfikacji atrybutu.
Je´sli warunek odwołuje si ˛e do innych krotek w tabeli lub innych
tabel, to łatwo mo˙ze sta´c si ˛e fałszywy.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
19 / 35
Własno´sci wi ˛ezów
Nało˙zone wi ˛ezy mog ˛
a by´c:
DEFERRABLE albo NOT DEFERRABLE,
INITIALLY DEFERRED albo INITIALLY IMMEDIATE.
Konsekwencje ró˙znych własno´sci:
Wi ˛ezy IMMEDIATE s ˛
a sprawdzane po ka˙zdej instrukcji, która
mo˙ze zmieni´c ich zachodzenie (insert, update).
Wi ˛ezy DEFERRED s ˛
a sprawdzane dopiero podczas operacji
commit.
Własno´sci wi ˛ezów ustawiamy instrukcj ˛
a
set constraint
<warunek> <własno ´s ´c>.
Aby mo˙zna było ustawi´c własno´s´c DEFERRED dane ograniczenie
musi by´c utworzone z własno´sci ˛
a DEFERRABLE.
Je´sli wi ˛ezy nie s ˛
a spełnione transakcja lub cały ci ˛
ag transakcji
(przy własno´sci deferred) zostaje cofni ˛ety.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
20 / 35
Własno´sci wi ˛ezów – przykład
Je´sli w tabeli
T mamy ograniczenie T_chk postaci check (a>-20 and
a<20) , które ma własno´s´c deferred i wykonujemy ci ˛
ag instrukcji:
insert into T values(30);
insert into T values(11);
insert into T values(2);
commit;
to cofni ˛ete zostan ˛
a wszystkie instrukcje.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
21 / 35
Własno´sci wi ˛ezów – przykład
W tabeli
T mamy ograniczenie T_chk postaci check (a>-20 and a<20).
set c o n s t r a i n t T_chk immediate ;
i n s e r t i n t o T values ( 1 6 ) ;
i n s e r t i n t o T values ( 2 0 ) ;
i n s e r t i n t o T values ( 1 7 ) ;
set c o n s t r a i n t T_chk deferred ;
i n s e r t i n t o T values ( 1 8 ) ;
i n s e r t i n t o T values ( 3 0 ) ;
i n s e r t i n t o T values ( 1 9 ) ;
Po wykonaniu powy˙zszych instrukcji T b ˛edzie „zawiera´c” warto´sci 16,
17, 18, 30, 19.
Po wykonaniu
commit wszystkie powy˙zsze instrukcje zostan ˛
a
cofni ˛ete. Mo˙zemy si ˛e przed tym zabezpieczy´c wykonuj ˛
a´c przed
zako ´nczeniem transakcji
set constraint T_chk immediate.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
22 / 35
Modyfikacje wi ˛ezów
Mo˙zemy modyfikowa´c wi ˛ezy poprzez instrukcje:
set constraint ...
albo
alter table ... modify constraint ...
Wi ˛ezy mo˙zemy wł ˛
acz ˛
a´c lub wył ˛
acza´c, ENABLE lub DISABLE, z
opcjami VALIDATE lub NOVALIDATE.
ENABLE (opcja domy´slna VALIDATE) „wł ˛
acza” warunek i
sprawdza czy zachodzi dla aktualnych danych. Je´sli nie jest
spełniony to instrukcja si ˛e nie powiedzie.
ENABLE NOVALIDATE wł ˛
acza warunek lecz nie sprawdza go dla
aktualnych danych.
DISABLE (opcja domy´slna NOVALIDATE ) „wył ˛
acza” warunek (np.
usuwa index dla warunków UNIQUE lub PRIMARY KEY).
DISABLE VALIDATE „wył ˛
acza” warunek lecz nie pozwala na
pó´zniejsz ˛
a modyfikacj ˛e kolumny, której dotyczy warunek.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
23 / 35
Outline
1
2
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
24 / 35
Wyzwalacze
Wyzwalacze pozwalaj ˛
a kontrolowa´c zarówno czas wykonania
akcji jak i warunek, który ma by´c spełniony.
Okre´slane jako reguły ECA – event-condition-action.
I
event – modyfikacja bazy danych,
I
condition – wyra˙zenie SQL o warto´sci booleowskiej,
I
action — wyra˙zenie SQL.
Nie nale˙zy stosowa´c wyzwalaczy je´sli mo˙zemy uzyska´c ten sam
efekt przez zastosowanie wi ˛ezów (NOT NULL, UNIQUE,
PRIMARY KEY, FOREIGN KEY, CHECK, ON DELETE
CASCADE, ON DELETE SET NULL).
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
25 / 35
Przykład
Je´sli wkładana do tabeli KluczeObce(id, ko) warto´s´c ko nie wyst ˛epuje
w tabeli Klucze(id), to zast ˛
apmy j ˛
a warto´sci ˛
a NULL.
cr ea te or replace t r i g g e r BrakKlucza
a f t e r i n s e r t on KluczeObce
r e f e r e n c i n g
old row as S t a r a K r o t k a
new row as NowaKrotka
f o r each row
when ( NowaKrotka . ko not i n
(
s e l e c t i d from Klucze ) )
update
KluczeObce ( i d , ko )
set ko=NULL
where i d =NowaKrotka . i d ;
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
26 / 35
Przykład
Ostatniego przykładu prosz ˛e nie sprawdza´c w Oracle.
Nie ma DBMS, który by implementował cało´s´c standardu SQL
zwi ˛
azanego z wyzwalaczami.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
27 / 35
Wyzwalacze – Wydarzenie
Wyzwalacz mo˙zemy uruchomi´c
przed, po lub zamiast
wydarzenia (
before, after, instead of).
Wydarzenie
instead of jest zarezerwowane dla perspektyw
(okre´slamy co zrobi´c zamiast modyfikowania perspektywy).
Wykonuj ˛
ac wyzwalacz przed wydarzeniem, po wykonaniu
wyzwalacza warunek nie jest sprawdzany drugi raz.
Wydarzeniami mog ˛
a by´c:
insert, update, delete.
Przy
update mo˙zemy zaw ˛ezi´c modyfikacj ˛e do pewnych
atrybutów:
update of atrybuty.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
28 / 35
Wyzwalacze – warunek
Warunek to wyra˙zenie SQL o warto´sci boole’owskiej.
Warunek sprawdzany jest w tabeli, która istnieje
przed zmian ˛
a
lub która
istniałaby
po zmianie.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
29 / 35
Wyzwalacze – akcja
Akcj ˛
a mo˙ze by´c pojedy ´ncza instrukcja SQL lub ich zbiór (
begin ...
end).
Akcj ˛e mo˙zemy wykona´c dla pojedy ´nczych wierszy (
for each row)
lub dla całej instrukcji, która uruchomiła wyzwalacz (
for each
statement – domy´slne).
Przy opcji
for each row mo˙zemy odwoła´c si ˛e do starej i nowej
krotki tabeli (je´sli istniej ˛
a).
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
30 / 35
Wyzwalacze – Oracle
Mo˙zemy wywoła´c wyzwalacz przy wydarzeniu systemowym
(startup, shutdown, logon, logoff)
Przy
update mo˙zemy zaw ˛ezi´c modyfikacj ˛e do pewnych
atrybutów:
update of atrybuty.
Mo˙zemy wymieni´c do trzech warunkow przy pomocy
or: before
update or insert on Tab.
Wyzwalacz typu
statement nie mo˙ze posiada´c klauzuli when.
W warunku
when nie mo˙zemy u˙zy´c kwerendy SQL.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
31 / 35
Wyzwalacze – Oracle
Jeden wyzwalacz mo˙ze okre´sla´c akcje typu
statement jak i akcj ˛e
each row (compound triggers).
Do nowych krotek odwołujemy si ˛e przez
new, do starych przez
old.
W akcji nowe i stare wartosci poprzedzamy dwukropkiem ale po
warunku
when nie.
Aby unikn ˛
a´c „niesko ´nczonych” sekwencji wywoła ´n wyzwalacz nie
mo˙ze:
I
modyfikowa´c tabeli, której modyfikacja go uruchomiła,
I
modyfikowa´c tabeli powi ˛
azanej z t ˛
a tabel ˛
a przez wi ˛ezy klucza
obcego.
Mo˙zemy obejrze´c bł ˛edy kompilacji wyzwalacza wydaj ˛
ac
polecienie:
show errors trigger <nazwa_wyzwalacza>;
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
32 / 35
Wyzwalacze – przykład
Wstawianie domy´slnej warto´sci zamiast NULL we wstawianych do
tabeli danych.
cr ea te or replace t r i g g e r UstawJajko
before update or i n s e r t on Kura
f o r each row
when ( new . j a j k o _ i d i s n u l l )
be gin
:
new . j a j k o _ i d : = 1 ;
end ;
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
33 / 35
Wyzwalacze – przykład
Wstawianie brakuj ˛
acej krotki z kluczem do tabeli Klucze przy próbie
wstawienia do tabeli KluczeObce.
cr ea te or replace t r i g g e r DodajKlucz
before update or i n s e r t on KluczeObce
f o r each row
d e c l a r e
i
number ;
be gin
s e l e c t count ( ∗ ) i n t o i from Klucze
where i d = :new . k l u c z o b c y ;
i f ( i =0)
then i n s e r t i n t o Klucze values ( : new . k l u c z o b c y ) ;
end i f ;
end ;
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
34 / 35
Podsumowanie
Wi ˛ezy kluczy:
I
sprawdzane przy zmianach tabeli z kluczem obcym oraz przy
zmianach tabeli, do której odwołuje sie klucz obcy,
I
pozwalaj ˛
a na ró˙zne lecz ograniczone strategie przy niespełnieniu
integralno´sci.
Wi ˛ezy
check atrybutów:
I
sprawdzane tylko przy zmianach odpowiednich atrybutów,
I
zmiany innych krotek lub tabel mog ˛
a je ufałszywi´c,
I
pozwalaj ˛
a na dowolne strategie reakcji.
Wi ˛ezy
check krotek – podobnie jak atrybutów lecz s ˛
a cz ˛e´sciej
sprawdzane.
Wyzwalacze:
I
elastyczne warunki uruchomienia.
I
dowolne podejmowane akcje.
Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)
Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze
35 / 35