background image

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

background image

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

background image

Outline

1

Wi ˛ezy

Klucze

2

Wyzwalacze

Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)

Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze

3 / 35

background image

Outline

1

Wi ˛ezy

Klucze

2

Wyzwalacze

Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)

Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze

4 / 35

background image

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

background image

Klucze obce

Niech

b ˛edzie zbiorem atrybutów w relacji i niech b ˛edzie zbiorem

atrybutów w relacji

S.

Mo˙zemy zadeklarowa´c

jako klucz obcy powi ˛

azany z atrybutami

G.

Atrybuty

musz ˛

a by´c kluczem relacji

S.

Dla ka˙zdej krotki t 

T, która ma ró˙zne od NULL warto´sci

atrybutów

musi istnie´c krotka 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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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 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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Własno´sci wi ˛ezów – przykład

Je´sli w tabeli

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

background image

Własno´sci wi ˛ezów – przykład

W tabeli

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 values ( 1 6 ) ;
i n s e r t i n t o values ( 2 0 ) ;
i n s e r t i n t o 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 values ( 1 8 ) ;
i n s e r t i n t o values ( 3 0 ) ;
i n s e r t i n t o 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

background image

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

background image

Outline

1

Wi ˛ezy

Klucze

2

Wyzwalacze

Konrad Zdanowski ( Uniwersytet Kardynała Stefana Wyszy ´nskiego, Warszawa)

Bazy danych – wykład szósty Wi ˛ezy i wyzwalacze

24 / 35

background image

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

background image

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

background image

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

background image

Wyzwalacze – Wydarzenie

Wyzwalacz mo˙zemy uruchomi´c

przedpo 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

background image

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

background image

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

background image

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

orbefore

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

background image

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

background image

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

background image

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 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

background image

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


Document Outline