Upload
azuka
View
24
Download
0
Embed Size (px)
DESCRIPTION
3.6.1 assert-Klausel (2/6). Beispiel 3-2: Angestellter: (Ang-Nr, Ang-Name, Gehalt, Familienstand, Abt-Bez) . ib1 : Der Familienstand eines Angestellten ist entweder „ledig”, „verheiratet”, „verwitwet” oder „geschieden”. - PowerPoint PPT Presentation
Citation preview
Sem
anti
sche
Int
egri
täts
bedi
ngun
gen
AIF
B
SS
2001
1
3.6.1 3.6.1 assert-Klauselassert-Klausel (2/6)(2/6)
Beispiel 3-2:
Angestellter: (Ang-Nr, Ang-Name, Gehalt, Familienstand, Abt-Bez).
ib1:
Der Familienstand eines Angestellten ist entweder „ledig”,
„verheiratet”, „verwitwet” oder „geschieden”.
ASSERT ib1 ON Angestellter:
Familienstand IN
(’ledig’, ’verheiratet’, ’verwitwet’,
’geschieden’).
Sem
anti
sche
Int
egri
täts
bedi
ngun
gen
AIF
B
SS
2001
2
3.6.1 3.6.1 assert-Klauselassert-Klausel (3/6)(3/6)
ib2:
Das Gehalt aller Angestellten in Abteilung xyz muß größer
als 15.000 sein.
ASSERT ib2 ON Angestellter:
NOT EXISTS
(SELECT FROM Angestellter
WHERE Abt-Bez = ’xyz’
AND Gehalt 15000).
Alternative Bedinguung:
Gehalt > 15000 OR Abt-Bez <> ’xyz’
Sem
anti
sche
Int
egri
täts
bedi
ngun
gen
AIF
B
SS
2001
3
3.6.1 3.6.1 assert-Klauselassert-Klausel (4/6)(4/6)
Beispiel 3-3:
Lagerbestand: (Produkt-Nr, Menge).
ib3:
Ein Tupel der Relation Lagerbestand darf nur gelöscht
werden, wenn der Wert von Menge gleich 0 ist.
ASSERT ib3
ON DELETION OF Lagerbestand:
Menge = 0.
Sem
anti
sche
Int
egri
täts
bedi
ngun
gen
AIF
B
SS
2001
4
3.6.1 3.6.1 assert-Klauselassert-Klausel (5/6)(5/6)
ib4:
Ein Tupel darf nur dann in die Relation Lagerbestand
eingefügt werden, wenn der Wert von Menge größer als 0
ist.
ASSERT ib4
ON INSERTION OF Lagerbestand:
Menge > 0.
Sem
anti
sche
Int
egri
täts
bedi
ngun
gen
AIF
B
SS
2001
5
3.6.1 3.6.1 assert-Klauselassert-Klausel (6/6)(6/6)
Beispiel 3-4: (über mehrere Relationen)
Angestellter: (Ang-Nr, Ang-Name, Gehalt, Familienstand, Abt-Bez).
Abteilung: (Abt-Bez, Abt-Leiter, Geh-Summe, Ang-Zahl, Budget).
ib5:
Das Gehalt eines Angestellten darf das Durchschnittsgehalt
seiner Abteilung nicht um mehr als 20 % übersteigen.
ASSERT ib5 ON Angestellter AngX:
AngX.Gehalt 1.2 *
(SELECT AVG(AngY.Gehalt)
FROM Angestellter AngY
WHERE AngX.Abt-Bez = AngY.Abt-Bez).