Formaler Datenbankentwurf - Informatixx
Formaler Datenbankentwurf - Informatixx
Formaler Datenbankentwurf - Informatixx
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 />