In der bisherigen Lerneinheit haben wir uns mit dem relationalen
Datenmodell, strukturierter und konsistenten Datenbeschreibungen vertraut
gemacht. In Lerneinheit 4 wurde bereits die Trennung von Daten und
Datenbankmanagementsystem begründet. Aus Sicht eines Anwenders drängen sich nun
die beiden Fragen auf, wie das relationale Datenmodell "in Echt" in das
Datenbanksystem integriert wird und wie die Daten (als Informationen) zwischen
den Anwendern und der Datenbank ausgetauscht werden. Für den Arbeitsalltag mit
Datenbanken bzw. GI-Systemen sind die folgende Fragen von evident:
Wie erfolgt die Interaktion zwischen einer Anwendung und einem
Datenbank-Verwaltungssystem?
Wie stellt sich ein Datenbanksystem gegenüber einer Benutzerin dar?
Wie können Anfragen durchgeführt und Resultate in einer Anwendung
dargestellt werden?
Funktionsprinzip einer Datenbankschnittstelle. Schnittstellen dienen einem standardisierten Ausstausch zwischen unterschidlichen
Datenbaken, Anwenungen Nutzern etc.. Datenbankenschnittstellen sind vor allem hinsischtlich des Datenmodells und der Abfragestruktur
normiert.
Funktionsprinzip einer Datenbankschnittstelle
Eine Anwendung
stellt mit Hilfe einer spezifischen Datenbanksprache, eine Anfrage an das
Datenbanksystem. Dort wird die entsprechende Antwort bereitgestellt und
ebenfalls mittels der Datenbanksprache an die Anwendung zurückgegeben. Diese
Kommunikation kann interaktiv oder automatisiert stattfinden. Das Prinzip ist
auf nachfolgender Abbildung verdeutlicht.
Wie zuvor gezeigt sind in der Realität der GI-Systeme die Sprachentwürfe
für Definition und Manipulation von Datenbanken in der Structured Query Language
implementiert. Im Alltag von Nutzern wird SQL überwiegend interaktiv als Anfragesprache an eine Datenbank
eingesetzt.
Typische interaktive Nutzerschnittstellen für SQL-Anfragen an Datenbanken
Eine Benutzungsoberfläche ist das sogenannte Frontend also die
Bedienoberfläche der Datenbankschnittstelle die dem Benutzer zur Verfügung
steht. Gerade für den interaktiven Betrieb ist diese häufig grafisch als
graphische Nutzerschnittstelle (graphical user interface GUI) angelegt. eine GUI
bietet normalerweise Hilfsmittel zur Vereinfachung der Datenbanknutzung. In der
Regel werden entweder Formulare oder Schaltflächen angeboten mit deren Hilfe
dann von der Software die syntaktisch korrekten Befehle in SQL aufgebaut
werden.
Die Abfragemaske der Deutschen Bahn als Beispiel einer formular-basierten Benutzungsoberfläche (GIS.MA 2009)
Beispiel einer Internet formular-basierten GUI
Diese
Oberflächen bestehen Formularen die den Benutzern angepasst sind. Der Benutzer
kann entweder alle Felder ausfüllen und so neue Einträge machen, oder er kann
einzelne Felder ausfüllen und auf diese Weise eine Anfrage für die restlichen
Felder machen. Formular-basierte Benutzungsoberflächen sind vor allem im
Internet stark verbreitet und machen die wichtigste Interaktionsmöglichkeit mit
DBMS aus. Formular-basierte Oberflächen sind sehr einfach zu bedienen und haben
den großen Vorteil, dass die Anwender keinerlei Kenntnisse einer
Datenbanksprache (z. B. SQL) benötigen.
Beispiel einer interaktiven graphischen Abfrage realisiert über eine GIS-Software. Mit dem graphischen Selektionswerzeug wurden
alle rot markierten Datensätze ausgewählt. (GIS.MA 2009)
Beispiel der in ArcGIS integrierten sogenannten Query-Wizards zur adressbasierten, räumlichen und attributiven Datenbankabfrage (GIS.MA 2009)
Beispiel einer softwarespezifischen formular-basierten GUI (GIS)
Eine GIS-Benutzungsoberfläche integriert in aller Regel auch Elemente einer
Datenbankschnittstelle. Die Datenbankinteraktion erfolgt dabei über eine
Kombination von verschiedenen graphischen Nutzerschnittstellen. In diesem
Beispiel sind die Auswahlmöglichkeiten von ArcGIS 9.3.1 dargestellt::
grafische Nutzer-Abfrage mit Hilfe interaktiver Selektionen innerhalb der
Kartendarstellung
Verwendung sogenannter Query-Wizards (Assistenten) als ergebisorientierte
Kombination von formular-basierter und text-basierter Interaktion:
Finde Maske
Select by Attribute Maske
Select bei Location Maske
Text-basierte Interaktion
Letztlich generieren alle zuvor
genannten GUIs den SQL-Befehlstext der auch (die notwendigen Kenntnisse
vorausgesetzt) über ein textbasiertes Ein- und Ausgabefenster (Terminal) direkt
in SQL an die Datenbank gerichtet wird. Text-basierte Abfragen erschliessen den
vollen Umfang der Abfragesprache da GUIs normalerweise nur einen Teilumfang
abdecken. Ihre Bedienung erfordert aber aktive Kenntnisse der entsprechenden
Datenbanksprache (z. B. SQL).
Beispiel einer text-basierten Benutzungsoberfläche (GIS.MA 2009)
Exkurs: SQL als Sprache zur Datendefinition (DDL)... (Klicken Sie hier für mehr Informationen)
In SQL werden die Begriffe TABLE, ROW und COLUMN synonym für Relation, Tupel und Attribut gebraucht. Mit Hilfe des CREATE TABLE-Befehls wird ein neues Relationenschema in der Datenbank definiert. Das
Relationenschema muss genau spezifiziert werden, oder in anderen Worten, die
zur Relation gehörenden Attribute sowie deren Domänen müssen angegeben
werden.
Mit CREATE TABLE wird in einer
Datenbank eine neue Relation (Tabelle) angelegt. Der Befehl hat folgende
Grundstruktur:
CREATE TABLE <Tabellenname>
(<Attributdefinitionen und Beschränkungen>);
Code-Beispiel: CREATE TABLE als ein Beispiel, wie eine Datenbanktabelle mit Hilfe von SQL definiert
werden kann.
Attributdefinition: Attribute
werden mit einem Namen und einem Datentyp definiert, wobei der Namen
innerhalb der Tabelle eindeutig sein muss. Diese Angaben sind für alle
Attribute zwingend notwendig. Die Reihenfolge der Attribute bei
der Definition entspricht der Reihenfolge der Spalten in der erstellten
Tabelle. Wird eine bestimmte Ordnung angestrebt ist diese bereits bei der
Erstellung der Tabelle zu definieren. Danach bleibt sie, sofern keine
Änderungen an der Struktur der Tabelle vorgenommen werden bestehen.
Beschränkungen: Es gibt zwei Arten von
Beschränkungen: Tabellenbeschränkungen und Attributbeschränkungen. Der
Unterschied liegt darin, dass Attributbeschränkungen sich auf nur ein
Attribut beziehen und Tabellenbeschränkungen sich auf mehrere Attribute
beziehen können, dies aber nicht müssen. Mit diesen Beschränkungen kann der
Wertebereich der Attribute eingeschränkt werden oder es wird verhindert,
dass Werte eingegeben werden, die nicht erlaubt sind. Ein Datensatz kann
nicht erfasst werden, wenn er eine Beschränkung verletzt. Es gibt vier Arten von Beschränkungen:
UNIQUE - das Attribut oder die
Attributkombination muss innerhalb der Tabelle eindeutig sein
PRIMARY KEY - das Attribut oder die
Attributkombination ist Primärschlüssel der Tabelle
FOREIGN KEY - das Attribut ist ein
Fremdschlüssel
CHECK - Bedingung die für ein
Attribut oder eine Attributkombination erfüllt sein muss
Zusätzlich sind noch eine Reihe weiterer Deklarationen möglich wie z.
B. die Domänendeklaration die in SQL die Datentypen CHAR, NUMBER, LONG und
DATE kennt. Durch die Deklaration NOT NULL wird festgelegt, dass für das jeweilige Attribut
keine NULL-Werte zulässig sind. Folglich muss beim Einfügen eines Tupels
grundsätzlich ein Wert für dieses Attribut angegeben werden.
Manipulation von Relationsstrukturen
Mit ALTER TABLE kann die Struktur einer Relation
geändert werden. Es können die mit CREATE TABLE
erzeugten Attribute und Beschränkungen geändert, neue hinzugefügt oder
vorhandene gelöscht werden. Der Befehl hat folgende Syntax:
ALTER TABLE <Tabellenname>
<Änderung>;
wobei <Änderung> verschieden Befehle beinhalten
kann:
ADD [COLUMN]
<Attributdefintion> Attribut hinzufügen (Attributdefiniton wie bei CREATE)
ALTER [COLUMN] <Attributname> SET DEFAULT
<Standardwert> neuer Standardwert festlegen
ALTER [COLUMN] <Attributname> DROP
DEFAULT aktuellen Standardwert löschen
DROP [COLUMN] <Attributname> {RESTRICT |
CASCADE} löschen eines Attributes
ADD <Tabellenbeschränkung> neue Tabellenbeschränkung hinzufügen (Tabellenbeschränkung wie
bei CREATE)
DROP CONSTRAINT
<Tabellenbeschränkung> löschen einer Tabellenbeschränkung
Mit den oben genannten Befehlen können Attribute und Beschränkungen
hinzugefügt bzw. gelöscht werden. Zudem können die Standardwerte für die
Attribute gesetzt oder gelöscht werden. SQL beinhaltet im
Standard keine Befehle um Attribute zu ändern oder umzubenennen. Dies würde
auch zu Problemen führen, wenn bereits Daten vorhanden sind. Dennoch sind
diese Befehle in einigen Datenbanken vorhanden (z.B. MODIFY oder RENAME).
Die Syntax unterscheidet sich jedoch von System zu System. Wenn keine Daten
vorhanden sind, kann das Attribut, das geändert werden soll, gelöscht und
neu hinzugefügt werden.
Löschen von Relationen
Mit DROP TABLE
kann eine bestehende Tabelle gelöscht werden. Dabei werden die Daten und die
Struktur der Tabelle gelöscht. Der Befehl hat folgende
Syntax:
Mit DROP TABLE
<Tabellenname>; wird die Tabellenstruktur samt den
Daten gelöscht. Dies kann in den meisten Fällen nicht mehr rückgängig
gemacht werden.
Wirkungsweise von CREATE und ALTER
NAchvollziehen Sie anhand
der nachfolgenden Beipiele die Wirkungsweise von SQL auf
Relationen
Im animierten Beispiel wird einer Datenbank eine Tabelle
hinzugefügt, die mit einer bereits bestehenden Tabelle verknüpft ist. Im SQL
Befehl kommt der Unterschied zwischen Attribut- und Tabellenbeschränkung zum
Ausdruck. projekt_ID und leiter_ID haben eine Attributbeschränkung
(Beschränkung wird direkt hinter die Attributdefiniton geschrieben).
projekt_ID hat die Beschränkung PRIMARY KEY, ist also Primärschlüssel dieser
Tabelle, d.h. das Attribut muss eindeutig und nicht NULL sein. leiter_ID hat
die Beschränkung NOT NULL (Spezialfall einer CHECK Beschränkung), muss also
immer einen Wert enthalten. Der Verknüpfung mit der bestehenden
Tabelle ist als Tabellenbeschränkung definiert (FOREIGN KEY) und hat einen
Namen (projektleiter). Diese Beschränkung könnte jedoch auch als
Attributbeschränkung definiert werden, da sie nur ein Attribut
beinhaltet. Das Beispiel zeigt, dass grundsätzlich kein
Unterschied zwischen Attribut- und Tabellenbeschränkungen besteht, sofern
nur ein Attribut betroffen ist.
Die Wirkungsweise des CREATE TABLE Befehls
Im animierten Beispiel wird einer Tabelle ein neues Attribut
hinzugefügt. Der angezeigte Datensatz enthält danach NULL für dieses
Attribut, weil noch kein Wert zugewiesen wurde. Anschliessend wird dieses
Attribut wieder aus der Tabelle gelöscht. Das Schlüsselwort RESTRICT bewirkt, dass nur Attribute gelöscht
werden können, die nicht mit anderen Tabellen verbunden sind
(Fremdschüssel). Alternativ kann das Schlüsselwort CASCADE verwendet werden. Dabei wird nicht nur die
gewünschte Spalte, sondern auch die verbundene Spalte in der anderen Tabelle
gelöscht.
Die Wirkungsweise des ALTER TABLE Befehls
Exkurs SQL als Sprache zur Datenmanipulation (DML)... (Klicken Sie hier für mehr Informationen)
Zum besseren Verständnis des Unterschieds von Datendefinition und Datenmaipulation ist es sinnvoll Anfragen bzw. Abfragen
hinsichtlich ihrer Wirkungsweise bzw. Zielsetzung zu unterschieden. Während
mit der Datendefinition Relationsstrukturen erzeugt werden wird mit der Datenmanipulation eine
(temporäre) Veränderung des Datenbestands, also der Inhalte der Relationen
benannt. Allerdings gilt es hier genau zu differenzieren:
Einfache Abfragen: rufen Daten aus einer Datenbank ab. Spezifische
Abfragebedingungen identifizieren eine Teilmenge der Daten und
extrahieren diese in der gewünschten Präsentationsform ohne die
Ausgangsdaten zu verändern.
Manipulative Abfragen: erzeugen neue Relationen oder manipulieren die Inhalte
existierender Relationen.
Manipulative bzw. nicht manipulative Abfragen
Ziel der raumbezogenen Selektion und Analyse ist es, räumliche
Beziehungen zwischen Elementen eines oder mehrerer Themen zu ermitteln.
Selektionen sind nichts anderes als an eine Relation gerichtete Anfragen.
Hierzu wird ein Set von Kriterien formuliert, um gesuchte
Merkmalsausprägungen zu identifizieren. Prinzipiell sind in GI-Systemen drei
Ansätze möglich:
Thematische Abfrage: Selektiert die Objekte, deren
Eigenschaften (Attribute) die gestellten Bedingungen erfüllen. Z. B.:
„Selektiere alle Bäume der Art Fichte.“
Geometrische Abfrage: Selektiert die Objekte, welche die
gestellten räumlichen Bedingungen erfüllen. Z. B.: „Selektiere alle
Häuser, die weniger als 250 m vom Fluss entfernt sind.“
Topologische Abfrage: Selektiert die Objekte, welche die
gestellten Bedingungen bezüglich den räumlichen Beziehungen zwischen den
Objekten erfüllen. Z. B.: „Selektiere alle Gebäude, die vollständig in
der Wohnzone II (WII) liegen.“
Einfache Abfragen mit Hilfe der SQL
SELECT * FROM produkte WHERE produkt-ID IN (SELECT
produkt-ID FROM bestellungen WHERE rabatt >= .25);
Mit Hilfe der SELECT-FROM-WHERE Struktur können Anfragen an eine
Dabenbank gestellt werden. Anfragen bestehen aus einer Auswahl der
gewünschten Spalten (SELECT) und einer Liste mit einer oder mehreren
Relationen (FROM). In dieser einfachen Form werden immer alle Datensätze
zurückgeben. Zusätzlich kann ein Suchkriterium übergeben werden (WHERE).
Damit können gezielt Datensätze selektiert werden. Eine SQL Anfrage gibt als
Resultat wiederum eine Relationen zurück.
Die
Standardform einer Datenbankanfrage mittels SQL ist wie folgt
aufgebaut:
SELECT <Attributliste>
FROM <Relationenliste>
WHERE <Bedingungen>;
Wobei:
<Attributliste> besteht aus den Namen der Attribute, deren
Werte man durch die Anfrage erhalten möchte.
<Relationenliste> ist die Aufführung der Namen der Relationen,
die für die Anfrage gebraucht werden.
<Bedingungen> die jene Tupel identifizieren, die durch die
Anfrage zurückgegeben werden sollen.
Verschachtelte Abfragen mit Hilfe der SQL
Wie obiges
Beispiel zeigt können Abfragen auf die gesamte Datenbasis angewendet werden.
Dieser Leistungsumfang lässt sich sehr wirkungsvoll durch die Möglichkeit
dynamisch Teilrelationen durch Abfragen zu generieren und diese wiederum in
die eigentliche Abfrage zu integrieren, steigern. Auf diese Weise können
Abfragen sehr tief verschachtelt werden. Eine Abfrage in einer Abfrage wird
Subquery genannt.
Damit haben wir die Grundstruktur von SQL als Anfragesprache bereits
gezeigt. Es gibt nun eine Reihe von möglichen Erweiterungen des obigen
Grundschemas, die die Flexibilität von Anfragen massiv erhöhen. Wir
unterscheiden folgende Fälle:
mehrere Bedingungen (konjunktiv oder disjunktiv verknüpft)
Versuchen Sie sich den Ablauf und die Wirkungsweise einer
Datenbankanfrage mit Hilfe von SQL anhand des nachfolgenden animierten
Beispiels zu verdeutlichen. zu
Schrittweise Darstellung des Ablaufs und der Wirkungsweise einer Standardabfrage an eine Relation mit Hilfe von SQLSchrittweise Darstellung des Ablaufs und der Wirkungsweise einer verketteten Abfrage an eine Relation mit Hilfe von SQLSchrittweise Darstellung des Ablaufs und der Wirkungsweise einer verschachtelten Abfrage an eine Relation mit Hilfe von SQL
Bearbeiten Sie...
Besuchen sie die Web-Repräsentanzen aus Lerneinheit 1 und versuchen Sie die
Datenbankschnittstelle zu analysieren.