10.07.2015 Aufrufe

Defaults in deduktiven Datenbanken

Defaults in deduktiven Datenbanken

Defaults in deduktiven Datenbanken

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!