Defaults in deduktiven Datenbanken
Defaults in deduktiven Datenbanken
Defaults in deduktiven Datenbanken
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
60 KAPITEL 3. ANWENDUNGSBEISPIELEEs gibt verschiedene Möglichkeiten, e<strong>in</strong>en solchen Vererbungs-Mechanismus <strong>in</strong> deduktive<strong>Datenbanken</strong> zu <strong>in</strong>tegrieren. E<strong>in</strong> offensichtlicher syntaktischer Weg wäre es, demBenutzer zu erlauben, die Vererbung von Regeln gezielt zu unterdrücken. Dies wärenatürlich e<strong>in</strong>erseits etwas unbequem, weil man häufig genau angeben muß, welche Regelnman ausschließen will (automatisch könnte man ja wohl nur alle Regeln über e<strong>in</strong> Prädikatelim<strong>in</strong>ieren). Andererseits ist die Ebene der Regeln meist auch schon zu hoch, denntypischerweise will man nur e<strong>in</strong>ige wenige, möglicherweise bed<strong>in</strong>gte Ausnahmen zu denRegeln angeben, und sie nicht völlig neu formulieren.In dieser Situation ist es naheliegend, die vererbten Regeln als <strong>Defaults</strong> anzusehen,die von spezifischerer Information überschrieben werden können.Beispiel 3.2.1: E<strong>in</strong> e<strong>in</strong>faches Beispiel s<strong>in</strong>d die unterschiedlichen Rabatte, die verschiedeneKlassen von Kunden bekommen. So bekommen allgeme<strong>in</strong>e Kunden typischerweise0% auf alle Produkte. Der Subtyp der Universitäts-Kunden bekommt dagegen 30% aufHardware und 50% auf Software. Diesen Kunden wird vermutlich erst später klar, daßes außer Hardware und Software auch noch den Bereich der Dienstleistungen (z.B. Wartungsverträge)gibt, auf den sie die ererbten 0% bekommen. Für e<strong>in</strong>en speziellen Kundenmit ausreichendem Verhandlungsgeschick können natürlich alle Rabatte noch e<strong>in</strong>malüberschrieben werden.kunderabatt(X, 0) ← produkt(X)uni kunderabatt(X, 30) ← hardware(X)rabatt(X, 50) ← software(X)uni hannoverrabatt(risc500 , 40)Formulierungen wie die obigen s<strong>in</strong>d noch objekt-lokal, man möchte natürlich mehrereKunden <strong>in</strong> der Datenbank haben. Wenn man ke<strong>in</strong>e spezielle Logik e<strong>in</strong>setzt, muß manzunächst das Prädikat rabatt um e<strong>in</strong> zusätzliches Argument für das aktuelle Objekt (denKunden) erweitern.Außerdem hat die <strong>in</strong> Kapitel 2 e<strong>in</strong>geführte Logik ke<strong>in</strong>e Subtypen, man kann sie abermit Prädikaten wie etwa uni kunde simulieren. Die betrachteten <strong>Defaults</strong> lauten alsorabatt(X, Y, 0) ← produkt(Y ) ∧ kunde(X).rabatt(X, Y, 30) ← hardware(Y ) ∧ uni kunde(X).rabatt(X, Y, 50) ← software(Y ) ∧ uni kunde(X).