50 likes | 183 Views
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”.
E N D
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”. ASSERT ib1 ON Angestellter: Familienstand IN (’ledig’, ’verheiratet’, ’verwitwet’, ’geschieden’). Semantische Integritätsbedingungen Ó AIFB
3.6.1 assert-Klausel(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’ Semantische Integritätsbedingungen Ó AIFB
3.6.1 assert-Klausel(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. Semantische Integritätsbedingungen Ó AIFB
3.6.1 assert-Klausel(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. Semantische Integritätsbedingungen Ó AIFB
3.6.1 assert-Klausel(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). Semantische Integritätsbedingungen Ó AIFB