27.12.2012 Aufrufe

Formaler Datenbankentwurf - Informatixx

Formaler Datenbankentwurf - Informatixx

Formaler Datenbankentwurf - Informatixx

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

c Professor Dr. Georg Lausen, 2001: Vorlesung Datenbanken SQL: Einbettung.5<br />

dynamisches SQL<br />

Einbettungen sind statisch, d.h. die Anfrage muß zur Übersetzungszeit des Programms<br />

feststehen. Kann eine Anfrage als String während der Laufzeit an das<br />

DBS gereicht werden, so redet man von dynamischem SQL (vergl. ODBC, JDBC).<br />

Zunächst muß eine Verbindung zur DB aufgebaut werden.<br />

Anfragen werden als String übergeben:<br />

ResultSet result = sql stmt.executeQuery(<br />

''SELECT DISTINCT City.name, Country.name<br />

FROM City, Country<br />

WHERE City.country = Country.code'');<br />

Zur Verarbeitung kann über die Ergebnismenge iteriert werden:<br />

while(result.next()) f<br />

...result.getString('' ...''); ...g<br />

Zur Effizienzsteigerung ist eine Vorübersetzung des SQL-Ausdrucks möglich,<br />

die noch eine Parameterübergabe zur Laufzeit ermöglicht.<br />

c Professor Dr. Georg Lausen, 2001: Vorlesung Datenbanken SQL: statische Integrität.2<br />

Temporäre Verletzungen der Integrität können nicht immer ausgeschlossen<br />

werden.<br />

Beispiel: Umbuchungen auf Konten, wobei die Summe aller Kontenstände konstant<br />

bleiben soll.<br />

Eine Transaktion ist eine Folge von Datenbankoperationen, die bzgl. der Integritätsüberwachung<br />

als Einheit (atomar) betrachtet werden; verletzt eine Transaktion<br />

die Integrität, so wird sie zurückgesetzt (d.h. es werden die durch sie<br />

bewirkten Effekte in der Datenbank wieder entfernt).<br />

c Professor Dr. Georg Lausen, 2001: Vorlesung Datenbanken SQL: statische Integrität.1<br />

SQL: statische Integrität<br />

Im allgemeinen sind nur solche Instanzen einer Datenbank erlaubt, deren Relationen<br />

die der Datenbank bekannten Integritätsbedingungen erfüllen.<br />

Integritätsbedingungen (integrity constraints, assertions) definieren zulässige<br />

Datenbankinstanzen (statische Bedingungen).<br />

Beispiele: Wertebereichseinschränkungen, Bedingung NOT NULL, Schlüsselbedingungen,<br />

referentielle Integrität.<br />

Zustandsübergänge, bzw. Aussagen über die Vergangenheit (temporale Bedingungen).<br />

Beispiele: Lebenszyklus von Objekten (Wechsel des Familienstandes), Gesetz<br />

”Gehälter dürfen nicht fallen“, Bedingung ”der aktuelle Energieverbrauch<br />

muß 5% unter dem durchschnittlichen Verbrauch der letzten 10 Jahre liegen“,<br />

etc.<br />

Integritätsbedingungen werden als Teil des Schemas abgelegt; sie können mittels<br />

ADD und DROP einem Schema hinzugefügt, oder auch aus ihm entfernt werden.<br />

c Professor Dr. Georg Lausen, 2001: Vorlesung Datenbanken SQL: statische Integrität.3<br />

Beispiel:<br />

statische Integritätsbedingungen<br />

CREATE TABLE Lieferant<br />

CREATE DOMAIN StadtDomain CHAR(15),<br />

(LNr CHAR(5),<br />

DEFAULT `Paris',<br />

LName CHAR(20),<br />

CHECK (VALUE IN (`Berlin', `Paris',<br />

Status DECIMAL(3) DEFAULT 0,<br />

Stadt StadtDomain,<br />

PRIMARY KEY ( LNr ))<br />

`London', `Rom'))<br />

CREATE TABLE Teil<br />

(TNr CHAR(6),<br />

TName CHAR(20),<br />

Farbe CHAR(6),<br />

Gewicht DECIMAL(3),<br />

PRIMARY KEY ( TNr ))<br />

CREATE TABLE LT<br />

(LNr CHAR(5),<br />

TNr CHAR(6),<br />

Menge DECIMAL(5) CHECK (Menge > 10),<br />

PRIMARY KEY ( LNr, TNr ),<br />

FOREIGN KEY ( LNr ) REFERENCES Lieferant,<br />

FOREIGN KEY ( TNr ) REFERENCES Teil,<br />

CHECK (Menge * (SELECT Gewicht FROM Teil<br />

WHERE Teil.TNr = LT.TNr)<br />

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!