Datenbank
SQL
1 Einführung

Dieses Dokument soll eine kleine Einführung in die Datenbankabfragesprache SQL darstellen.

 

Es behandelt die Grundlagen der Datenabfrage und der Datenänderung. Hierzu gehören die Befehle SELECT, INSERT, UPDATE und DELETE. Dies sind die von den Anwendern einer Datenbank am häufigsten genutzten Befehle.

 

Auf administrativen Tätigkeiten, wie das Erstellen von Tabellen, das Anlegen von Indizes oder der Erstellung von referentieller Integrität wird bewußt nicht eingegangen. Hierzu wird auf anderen Dokumente verwiesen.

 

Nach dem Durcharbeiten dieses Dokumentes soll der Anwender in die Lage versetzt werden, Daten aus bestehenden Datenbanken abzufragen, entsprechend aufzubereiten und manipulieren zu können.

 

Angesprochen werden hierin die einfachen Abfrage einer Tabelle, Skalarfunktionen und Aggregatfunktionen, die Verknüpfung mehrerer Tabellen und Unterabfragen. Desweiteren wird das Hinzufügen, das Ändern und das Löschen von Daten aufgezeigt.

 

Berücksichtigt werden die Datenbanken von Microsoft (Access und SQL-Server) und Oracle.

 


1.1 Historie

Die Sprache SQL (Structured Query Language) ist die de facto Standard-Abfragesprache für relationale Datenbanken. Sie entstand Ende der 70er Jahre bei IBM für ihre Datenbank DB2.

 

SQL ist eine nicht prozedurale Sprache, d.h. man beschreibt das „was“, und nicht das „wie“.

 

Relational bedeutet, das die Daten untereinander in Beziehung stehen. Durch mengenalgebraische Operationen werden die Daten bearbeitet (abgefragt, eingefügt, geändert, gelöscht).

 

Die Organisationen ANSI und ISO haben versucht, diese Sprache zu standardisieren, aber wenige Hersteller halten sich an diese Normung.

 


1.2 Datenbanken

In den geschäftlichen und privaten Bereichen werden Daten bearbeitet, die gespeichert werden müssen. Zur Speicherung dieser Daten hat man Datenbanken entwickelt. Dies ist im Prinzip eine geordnete Sammlung von Daten, den Informationen.

 

Durch die rasante Entwicklung im PC/Homecomputerbereich werden die Datenbanken immer mehr vom Großrechner auf die PCs verlagert und somit für jeden Anwender erschwinglich.

 


1.3 Das relationale Modell

Im Jahre 1970 veröffentlichte Dr. E. F. Codd den Artikel „A Relational Model of Data for Large Shared Data Banks“, der als Basis des relationalen Modells gilt. Er stützt sich hierin auf math. Konzepte der relationalen Algebra, um Daten in Mengen und untereinander in Beziehung stehende Untermengen aufzuteilen.

 

Informationen werden in verschiedenen Mengen gruppiert. Das relationale Modell gliedert die Daten in Sätze und stellt diese in Form einer Tabelle dar. Diese Tabellenstruktur besteht also aus einzelnen Datenelementen (Spalten oder Felder). Als Datensatz bezeichnet man einen einzelnen Satz (Zeile), der eine Gruppe von Feldern zusammenfaßt.

 





 

Eine Relation ist als eine logisch zusammenhängende Objektmenge zu verstehen, die in einer m:n Matrix (Tabelle) festgehalten wird.

R Í W1 ´ W2 ´ ... ´ Wm

Jedes Element r einer Relation muß aus einer geordneten Menge einzelner Werte w1 Î W1 ; w2 Î W2 ; ... zusammengesetzt sein.

 

Formal gilt

 r = (w1, w2, ..., wn)

Auf eine Datenbank übertragen läßt sich festhalten:

Jede Relation ist eine Menge von Entitäten (oder Datensätzen) r. Jede Entität hat verschiedene Eigenschaften, bzw. Attribute w, die den Spalten der Matrix R entsprechen. Ein Attribut wa ums sich im Wertebereich Wa befinden.

 

 

KUNDE (Nummer, Name, Adresse, ...)
Die Relation Kunde wird durch die Attribute Nummer, Name, Adresse, ... beschrieben. Einer Entität r wird jede dieser Attribute ein Wert aus der jeweiligen Wertemenge zugeordnet (Kundennummer von 1 bis 9999)

 

Hinter diesem Ansatz steht, das die Daten in Tabellen (Relationen) abgelegt werden, die in ihrer Gesamtheit die eigentliche Datenbank darstellen. Zu beachten ist, das die Daten möglichst in redundanzfreier Form gespeichert werden sollen und Beziehungen zwischen den Relationen berücksichtigt werden müssen.

 

Die Beziehung der Entitäten zueinander werden mit Hilfe von Schlüsselattributen hergestellt. Jede Relation hat deshalb einen identifizierenden Primärschlüssel. Mit Hilfe eines Bezugsschlüssels (foreign key) kann eine Beziehung zwischen den Relationen hergestellt werden.

 

Hierbei unterscheidet man zwischen 3 Beziehungstypen
In einer 1:1 Beziehung steht jede Entität Ex mit höchstens einer Entität Ey in Beziehung B1 zueinander (Bsp.: jede Abteilung hat höchstens einen Abteilungsleiter)
Bei jeder 1:n Beziehung sind jeder Entität Ex n (mit n ³ 0) Entitäten Ey mit der Beziehung Bn zugeordnet. Umgekehrt steht jedes Ey mit höchstens einer Entität Ex in Beziehung (Bsp.: Ein Abteilungsleiter „regiert“ eine Anzahl von Mitarbeitern, ein Mitarbeiter wird von einem Abteilungsleiter „regiert“)
Eine Beziehung vom Typ m:n liegt vor, wenn jede Entität Ex mit n (n ³ 0) Entitäten Ey in Beziehung Bn steht und jede Entität Ey mit m (m ³ 0) Entitäten Ex in Beziehung Bm steht. (Bsp.: Mitarbeiter arbeiten an mehreren Projekten und ein Projekt wird von mehreren Mitarbeitern bearbeitet)


1.4 Normalisierung

Die Normalisierung ist ein Prozeß, bei dem die zu bearbeitenden Daten in ein logisches Modell gebracht werden. Dieses logische Modell wird daraufhin verfeinert, das die Bearbeitung der Daten optimiert wird.

 

Hierbei unterscheidet man 3 Formen der Normalisierung, die im folgenden aus einem Beispiel heraus dargestellt werden.

 

Als Beispiel soll eine Arbeitertabelle dienen, die folgende Einträge hat

 


Name Geburtsdatum Adresse Manager Faehigkeit1 Faehigkeit2 Faehigkeit3 
Heinz 01.01.70 Bad Dürkheim Josef malen   
Sepp 01.07.80 Freinsheim Josef techn. Zeichnen rechnen  
Jupp 04.09.75 Wachenheim Karl kreativ organisieren unterhalten 
Jochen 04.03.60 Deidesheim Karl   
Jürgen 05.08.73 Forst Karl planen   
Thomas 03.03.69 Herxheim Karl schreiben   
Hans 02.04.68 Frankental Josef Geographie   

1.5 Die erste Normalform

Im ersten Schritt werden die Daten in separate Tabellen verschoben, wobei gleichartige Daten in eigene Tabellen zusammengefaßt werden. Jede Tabelle bekommt einen Primärschlüssel, einen eindeutigen Kennzeichner oder Bezeichner.

So kann man z.B. die Fähigkeiten eines Arbeiters in einer eigenen Tabelle zusammenfassen. Man kann dann pro Arbeiter mehr als drei Fähigkeiten angeben, anstatt in der Arbeitertabelle mehr als einen Eintrag für einen Arbeiter einzufügen. Als nächstes definiert man dann pro Tabelle einen Primärschlüssel. Dies ist ein für diese Tabelle eindeutiger Bezeichner. Somit erhält man eine neue Arbeitertabelle und eine Fähigkeitentabelle, die hier aufgeführt sind.

 


Die Arbeitertabelle (1NF)

Name Geburtsdatum Adresse Manager 
Heinz 01.01.70 Bad Dürkheim Josef 
Sepp 01.07.80 Freinsheim Josef 
Jupp 04.09.75 Wachenheim Karl 
Jochen 04.03.60 Deidesheim Karl 
Jürgen 05.08.73 Forst Karl 
Thomas 03.03.69 Herxheim Karl 
Hans 02.04.68 Frankental Josef 

Die Fähigkeitentabelle (1NF)

Name Faehigkeit Beschreibung 
Hans Geographie Kennt sich überall gut aus 
Heinz malen Landschaftsbilder 
Jupp kreativ viele gute Ideen 
Jupp organisieren guter Überblick 
Jupp unterhalten kennt Witze 
Jürgen planen gute Terminvoraussagen 
Sepp rechnen Analysis, Algebra 
Sepp techn. Zeichnen Motorenbilder 
Thomas rechnen Numerik 

 

Primärschlüssel der Arbeitertabelle ist der Name, die beiden Spalten Bame und Fähigkeit bilden bei der Fähigkeitentabelle den Primärschlüssel.

Die Fähigkeitentabelle hat noch einen Nachteil. Die Beschreibung der Fähigkeit hängt von der Fähigkeit ab, nicht vom Namen. Dieser Nachteil wird in einem weiteren Normalisierungsschritt eliminiert.

 


1.6 Die zweite Normalform

Die zweite Normalform entfernt die Daten aus einer Tabelle, die nur von einem Teil des Primärschlüssels abhängen. Also wird hier die Fähigkeit und die Beschreibung dieser in getrennten Tabellen untergebracht.

 

Wenn die Fähigkeit und die Beschreibung in der 1NF gelassen werden, dann kann nur eine Beschreibung für eine Fähigkeit angegeben werden, d.h. man kann keine zwei Beschreibungen für eine Fähigkeit angeben (vgl. rechnen: Analysis, Algebra vs. Numerik)

 

Wenn ein Arbeiter mit einer besonderen Fähigkeit die Stadt verläßt und damit aus der Datenbank entfernt wird, dann wird auch diese Fähigkeit aus der Datenbank gelöscht. Mit der 2NF kann die Datenbank diese Fähigkeit speichern, obwohl zur Zeit niemand diese Fähigkeit besitzt.

 


Die Arbeitertabelle (2NF)

Name Geburtsdatum Adresse Manager 
Hans 02.04.68 Frankental Josef 
Heinz 01.01.70 Bad Dürkheim Josef 
Jochen 04.03.60 Deidesheim Karl 
Jupp 04.09.75 Wachenheim Karl 
Jürgen 05.08.73 Forst Karl 
Sepp 01.07.80 Freinsheim Josef 
Thomas 03.03.69 Herxheim Karl 

Die Fähigkeitentabelle (2NF)

Faehigkeit 
Geographie 
kreativ 
malen 
organisieren 
planen 
rechnen 
techn. Zeichnen 
unterhalten 

Die Arbeiter-Fähigkeiten-Tabelle (2NF)

Name Faehigkeit Beschreibung 
Hans Geographie kennt sich überall gut aus 
Heinz malen Landschaftsbilder 
Jupp kreativ viele gute Ideen 
Jupp organisieren guter Überblick 
Jupp unterhalten kennt Witze 
Jürgen planen gute Terminvoraussagen 
Sepp rechnen Analysis, Algebra 
Sepp techn. Zeichnen Motorenbilder 
Thomas rechnen Numerik 

1.7 Die dritte Normalform

In dieser dritten Normalform, die man für jedes Modell anstreben soll, werden alle Elemente aus den Tabellen entfernt, die nicht unmittelbar vom Primärschlüssel abhängen.

 

... überspringen wir

 


1.8 Integrität

... überspringen wir

 



Last update:  12.07.2005