1 Theoretische
Grundlagen
1.1 Was sind Datenbanken ?
Definition
|
Datenbank
|
Datenbanken sind Sammlungen von Informationen mit definierten
Zugriffssystemen. Das Zugriffssystem umfasst Mittel und Methoden
zum:
|
Beispiele für klassische Datenbanken
Melderegister
Katasteramt
Katalog einer Bibliothek
Lexikon
1.2 Klassifizierung der Datenbanken
Datenbanken können bezüglich des Zugriffssystem, der
gespeicherten Information und der Softwarearchitektur klassifiziert
werden:
Struktur der Datensammlung
|
Typ der Information
|
Softwarearchitektur
|
|
|
|
1.3 Dateien als
Datenbanken
In der Urform der Datenbanken ist
das Zugriffssystem nahtlos in die Anwendung integriert. Jede
Anwendung hat ihr eigenes Zugriffssystem. Folglich kann jede
Anwendung nur die von ihr selbst erstellten Dateien lesen. Zum
Informationsaustausch zwischen den Anwendungen müssen
Konvertierungprogramme erstellt werden.
1.4 Datenbanksysteme
Die Anwendung greift nicht mehr direkt, sondern über eine
zwischengeschaltete Anwendung, dem Datenbankmanagmentsystem
(DBMS) zu. Das DBMS kann zu diesem Zweck eine standardisierte
Schnittstelle anbieten wie z.B. SQL. Dadurch entsteht eine Trennung
von Informationsspeicherung und Informationsverarbeitung. Dies hat
folgende Vorteile:
Auf eine Datensammlung können verschiedene Anwendungen
unterschiedlicher Hersteller zugreifen
Dateiformat ist unabhängig von den Anwendungen. So
können effizientere und sicherere Speicherformate eingeführt
werden, ohne das die Anwendungen davon etwas merken.
Speicherort der Dateien ist unabhängig von den
Anwendungen.
Dieses
Prinzip ist zu komplexen Softwaresystemen ausgebaut worden, genannt
Datenbanksystemen.
1.5 Bekannte Datenbanksysteme
Produkt
|
Hersteller
|
Beschreibung
|
Access
|
Microsoft
|
Relationales DBMS + IDE rein
Schnittstelle: MS- Query, SQL,
VBA
aktuelle Version XP
Kein Benutzerrechte in der DB
definierbar
|
MySQL
|
|
Realtionales DBMS, Server
aktuelle Version
Schnittstelle: SQL
ODBC und JDBC- Treiber
verfügbar (kostenlos !)
Verschiedene Speicherengines,
die für spezielle Einsatzzwecke optimiert sind. Die native
Engine ist MyISAM
Zugriffsrechte können pro
Benutzer und Rechner, von dem aus die Anmeldung erfolgt
definiert werden
Zugriffsrechte können auf
Datenbanken bis hinunter auf Tabellenspalten definiert werden
Wird von Scriptsprachen wie
PHP und Perl dierekt unterstützt
Für privaten Einsatz und
geschäftlichen Einsatz als Standalone- Server ohne
Herstellersupport kostenlos
Keine
Check Constraints, keine Fremdschlüsselüberprüfung
in MyISAM
Max.
Größe eines Datensatzes = 8KB (Ausnahme: BLOB und
TEXT Daten)
Unterstüzt
keine Transaktionen (
Keine
Subselects und Stored Procedures mit MyISAM
Keine
Datenbankvorlagen möglich
Keine Authentifikation über
Windows- Benutzerkonten möglich
|
MS SQL Server
|
Microsoft
|
Relationales DBMS, Server
aktuelle Version: 2008
Schnittstelle: SQL, XML, .NET
mit LINQ
ODBC – Treiber vorhanden
ACID Transaktionen
Views, Subselects, UDF's,
UDT's und Stored Procedures
Zugriffsrechte können pro
Benutzermeldung erfolgt definiert werden
Authentifikation über
Windows- Benutzerkonten möglich
Zugriffsrechte können auf
Datenbanken bis hinunter auf Tabellenspalten definiert werden
Kostenlose SqlExpress Version
für privaten und geschäftlichen Einsatz ohne
Herstellersupport
Datenbankvorlagen (modellDb)
definierbar
einfache Installation
teure Lizenzen Versionen, die mehr
als 4GB Daten speichern, und mehrere CPU- Cores nutzen können
|
Oracel 9i
|
Oracle
|
|
DB2
|
IBM
|
|
1.6 Datenbanktechnologie
Entwicklung von Datenbanksystemen
Benutzung von Datenbanksystemen
Entwicklung von Anwendungssoftware auf Basis von Datenbanken
1.6.1 OLTP (Online- Transaction Processing)
Viele Benutzer greifen gleichzeitig auf Online- Datenbanken zu.
Bsp.:
1.6.2 Batchverarbeitung
1.7 Ziele der Datenbankentwicklung
Redundanzfreie Abspeicherung von Daten
Konsistente Abspeicherung von Daten
Sichere Datenspeicherung
Aufteilung von Softwaresystemen in Systeme zur
Datenspeicherung (Datenbanken) und Systeme zur benutzerspezifischen
Datenverarbeitung (Anwendungsprogramme).
Definition
|
Konsistenz
|
Unter Konsistenz in Zusammenhang mit Datenbanken wird die
Widerspruchsfreiheit zwischen den Daten der Datenbank und dem
durch diese abgebildeten Weltausschnitt verstanden
Die Konsistenz ist z.B. verletzt, wenn ein Mitarbeiter in
einer Firma nicht mehr beschäftigt ist, und trotzdem ein
Datensatz für ihn in der Tabelle "Personal"
geführt wird.
|
Die Konsistenz kann verletzt werden durch mangelnde Pflege der
Datensammlung und durch Progamm- oder Benutzerfehler beim
Aktualisieren der Datenbank.
Definition
|
Redundanz
|
Unter Redundanz im Zusammenhang mit Datenbanken wird
verstanden, daß ein und dieselbe Information mehrfach an
verschiedenen Stellen der Datenbank abgelegt ist.
|
Durch Redundanzen wird Speicherplatz verschwendet, und es besteht
die Gefahr, das sich Inkonsistenzen einschleichen.
1.8 Datenmodellierung
1.8.1 Modell :<=>
Beschreibung eines Ausschnittes der realen Welt.
1.8.2 Modellierung :<=>
Abstraktionsprozess, der zu einem Modell führt.
Dabei werden unbedeutende Details weggelassen, reale Objekte
werden als Symbole und ihre Wechselwirkungen durch eine Menge von
Operationen auf den Symbolen dargestellt.
1.8.3 Sicht :<=>
Eine Sicht ist ein Ausschnitt aus der Miniwelt, die durch die
Datenbank abgebildet werden soll. Sichten werden aus den
unmittelbaren Anforderungen der zukünftigen Datenbankbenutzer
entwickelt (z.B. verwendete Formulare etc.)
1.8.4 Konzeptuelles Schema :<=>
Das Konzeptuelle Schema ist ein implementierungsunabhängiges
Datenmodell der Miniwelt, die durch die Datenbank abgebildet werden
soll. Sie entsteht durch die Integration aller Sichten .
1.8.5 Physisches Schema :<=>
Das physische Schema entspricht inhaltlich dem Konzeptuellen
Schema. Jedoch kann das physische Schema dierekt von einer Datenbank
verarbeitet werden.
1.8.6 Attribut :<=>
Wertepaar, bestehend aus Attributname und Attributwert.
Durch Attribute werden Details von Objekten der realen Welt und
Beziehungen zwischen diesen in Modellen beschrieben.
Beispiel:
Das betrachtete Objekt sei ein Auto.
Dann könnten folgende Attribute erfasst werden:
Automarke = Ferrari, Motorleistung =
800PS, Motor_Zylinderzahl = 12, ...
1.8.7 Entity :<=>
Menge aller Attribute zu einem realen Objekt, die in einem Modell
erfasst werden.
Beispiel:
Das betrachtete Objekt sei ein Auto der
Marke Ferrari. Dann könnte folgendes Entity durch Modellierung
gewonnen werden:
FERRARI := { Automarke=Ferrari,
Motorleistung=800PS, Farbe=rot, Fahrer=Fred Vollgas, ... }
1.8.8 Entity Typ :<=>
Ein Entitytyp bezeichnet eine Menge von Entities, die eine gleiche
Attributstruktur aufweisen. Die Gleichheit in der Attributstruktur
besteht dabei in gleichen Attributnamen und gleichen Datentypen für
die Attributwerte. Beispielsweise könnte ein Entitytyp für
Autos wie folgt aussehen:
ENTITYTYP_AUTO = { Marke as String, Leistung as Integer, Farbe as
Color, Zylinderzahl as Integer, Neupreis as Currency }
1.8.9 Beziehungen :<=>
Zusammenhänge zwischen realen Objekten. Beispiele: Erde
umkreist
Sonne, Meier arbeitet
beim Staat,
Netzwerkkarte fordert
einen Unterbrechung auf
IRQ 7
Im Datenmodellierungsprozess werden
die Bezeihungen zwischen Objekten auf Beziehungen zwischen Entities
abgebildet. Auch Beziehungen lassen sich durch einfache
Attributmengen beschreiben. Beispiele:
Erde umkreist Sonne --->
{ Zentralkoerper = Sonne, Satellit = Erde, Dauer_einer_Umkreisung =
1 Jahr }
Meier arbeitet beim
Staat ---> { Arbeitgeber = Staat, Arbeitnehmer = Meier }
Netzwerkkarte fordert eine
Unterbrechung auf IRQ 7 ---> { Interruptquelle =
Netzwerkkarte, Interruptleitung = 7 }
1.8.10 Beziehungstyp :<=>
Beziehungstypen werden analog zu
Entitytypen definiert: Ein Beziehungstyp bezeichnet eine Menge von
Beziehungen mit gleicher Attributstruktur. Auch hier besteht die
Gleichheit der Attributstruktur in der Gleichheit der Attributnamen
und gleichen Datentypen für die Attributwerte.
Beispiel:
Wir betrachten die Beziehung
Umkreisen, die zwischen Planeten und der Sonne besteht:
BEZIEHUNGSTYP_UMKREISEN = {
Zentralkoerper as String, Satelliet as String, Dauer as Time }
1.8.11 Kardinalitäten :<=>
In einer Beziehung können mehr als zwei Entities stehen. Z.B.
steht das Entity Windows as DATEIVERZEICHNIS in
der Beziehung enthält mit
zahlreichen Objekten wie system32 as DATEIVERZEICHNIS und
win.ini as DATEI. Diese
Mengenverhältnisse werden Kardinalitäten genannt, und durch
Zahlen und Wildcards beschrieben:
DATEIVERZEICHNIS <1-- ENTHÄLT --N> DATEIEN
1.8.12 Schlüsselattribute :<=>
Attribute oder Kombinationen von Attributen innerhalb von
Entities, die für jedes einzelne Entity einmalig sind.
Schlüsselattribute ermöglichen so die eindeutige
Identifikation eines Entitys. Da es mehrere Schlüsselattribute
innerhalb eines Entitys geben kann, ist es Aufgabe des
Datenmodellierers, eines dieser als Primärschlüssel
auszuzeichnen. Primärschlüssel finden beim Formulieren
von Beziehungen Anwendung.
1.8.13 Datenmodell :<=>
Formales System zur Beschreibung von
Entities und Beziehungen. Dieses formale System besteht dabei aus
speziellen Strukturtypen und Abbildungsvorschriften der Art:
Entitytyp ---> Strukturtyp i,
Beziehungstyp ---> Strukturtyp j
Beispiel:
1.8.13.1 Relationales Datenmodell
Das relationale Modell kennt nur einen Strukturtyp: die Tabelle,
auch Relation genannt. Entitytypen werden durch
Tabellendefinitionen dargestellt. Beziehungstypen können im
Falle komplexer m:n Beziehungen ebenfalls durch Tabellendefinitionen,
oder bei einfachen 1:1 und 1:n Beziehungen durch zusätzliche
Fremdschlüsselfelder in Tabellendefinitionen für Entities
modelliert werden.
Beispiel:
Relationales Datenmodell für eine Datensammlung zum
Sonnensystem:
Der Entitytyp GESTIRN = { Name as String, Durchmesser as String,
Oberflächentemperatur as Float } wird abgebildet auf die Tabelle
GESTIRN:
Name
|
Durchmesser
|
Oberflächentemperatur
|
Venus
|
12000 km
|
430 C
|
...
|
|
|
Der Beziehungstyp UMKREIST = { Zentralkoerper as String, Satellit
as String, Dauer as Time } wird abgebildet auf die Tabelle UMKREIST
:
Zentralkörper
|
Satellit
|
Dauer
|
Sonne
|
Erde
|
1 Jahr
|
...
|
|
|
1.8.14 Normalformen
Datenbanken sollen eine redundanzfreie und konsistente Speicherung
von Daten ermöglichen. Dies bedeutet, daß ein und dieselbe
Information nicht mehrfach an verschiedenen Stellen der Datenbank
abgelegt ist. Eine in der Datenbank erfasste Information sollte zu
jedem Zeitpunkt an genau einem festen Ort in der Datenbank
gespeichert sein.
Um dies zu erreichen, müssen wir beim Modellieren am Anfang
alle relevanten Entities und Beziehungen im Datenmodell erfassen. Das
Modell wird danach meist Redundanzen aufweisen. Diese können
jetzt systematisch beseitigt werden, indem das Datenmodell Schritt
für Schritt in die erste , zweite und schließlich dritte
Normalform überführt wird.
Die Definitionen der Normalformen legen Bedingungen fest, die ein
Datenmodell erfüllen muss, wenn es der Normalform genügen
soll. Bei der Umformung eines Datenmodells von der Normalform i in
die Normalformen i+1 muss untersucht werden, ob dass Datenmodell die
Bedingungen für Normalform i + 1 erfüllt. Wenn nicht, dann
sind die Strukturen im Datenmodell so umzuformen, dass die
Bedingungen für die Normalform i + 1 erfüllt werden.
1.8.14.1 1. Normalformen
Eine Tabelle steht in der ersten Normalform, wenn keine
Spaltendefinitionen ein mehrgliedriges Attribut ist, und keine
sogenannten Mehrfachfelder auftreten.
Beispiele:
Folgende Tabellen befinden sich nicht in der 1. Normalform:
Name
|
erreichbar_unter
|
Donald
|
Tel: 0712 000123 Fax.: 0712 000124
|
Waltraud
|
Handy: 0178 666777 Tel.: 0712 010010
|
Spalte erreichbar_unter ist ein mehrgliedriges Attribut.
Name
|
Tel.1
|
Tel. 2
|
Fax
|
Donald
|
0712 000123
|
|
0712 000124
|
Waltraud
|
0178 666777
|
0712 010010
|
|
Tel 1. und Tel. 2 sind Mehrfachfelder.
1.8.14.2 2. Normalform
Eine Tabelle steht in zweiter Normalform, wenn sie in 1.
Normalform steht, und Nichtschlüsselattribute nicht von Teilen
des Primärschlüssels funktional abhängen.
Beispiel:
Folgende Tabelle befindet sich nicht in der zweiten Normalform:
Projekt
|
Mitarbeiter
|
Telefon
|
Goldenes Kalb
|
Dagobert
|
0712 999999
|
Lottomillionär
|
Dagobert
|
0712 999999
|
Goldenes Kalb
|
Waltraud
|
0178 666777
|
...
|
|
|
Der Primärschlüssel in der Tabelle ist die
Attributkombination (Projekt,
Mitarbeiter). Die
Telefonnummer ist nur von der Schlüsselkomponente Mitarbeiter
abhängig. Dadurch wird die Telefonnummer unnötigerweise
mehrfach abgespeichert (Redundanz).
1.8.14.3 3. Normalform
Eine Tabelle steht in dritter Normalform, wenn sie in 1.
Normalform steht, und kein Nichtschlüsselattribut transitiv von
einem Schlüsselattribut funktional abhängt.
Folgende Tabelle befindet sich nicht in der dritten Normalform:
Zeilennr
|
Projekt
|
Mitarbeiter
|
Telefon
|
1
|
Goldenes Kalb
|
Dagobert
|
0712 999999
|
2
|
Lottomillionär
|
Dagobert
|
0712 999999
|
3
|
Goldenes Kalb
|
Waltraud
|
178 666777
|
Der Primärschlüssel ist jetzt das Attribut Zeilennr.
Damit liegt kein zusammengesetzter Primärschlüssel vor, und
folglich kann es keine Abhängigkeiten von Teilen des
Primärschlüssels geben. Die Tabelle steht in der 2.
Normalform. Jedoch besteht eine transitive Abhängigkeit der
Telefonnummer von der Zeilennr über das Attribut
Mitarbeiter. Jeder Zeilennr kann funktional ein
Mitarbeiter , und jedem Mitarbeiter funktional eine
Telefonnummer zugeordnet werden. Damit sind die Bedingungen
für die 3. Normalform verletzt, und die Tabelle befindet sich
nicht in 3. Normalform.