Datenbanken
Allgemeines:
Eine Datenbank (DB) besteht aus beliebig vielen Tabellen, in denen logisch zusammenhängende Objekte (Daten) gespeichert sind.
Diese Objekte können reine Texte, Verknüpfungen oder Anweisungen sein.
Datenbanken findet man häufig im Bereich der dynamischen Webseiten, um Inhalte zu speichern.
1. Grundbegriffe
Datenbank = DB (Data Base)
-
systematische, strukturierte Ansammlung von Daten
-
diese Daten stehen in einem sachlogischen Zusammenhang
Datenbankmanagementsystem = DBMS
-
Verwaltung und Nutzung der in der DB gespeicherten Daten
Datenbanksystem = DBS
-
Erstellung, Pflege und Verwaltung von einer oder mehreren Datenbanken (z.B. MySQL)
-
DB + DBMS
Datenbanksoftware
-
bezahlbar: Microsoft Access als Teil des Office-Pakets
-
kostenlos: OpenOfficeBase; XAMPP (webbasier, besteht u.a. aus Weboberfläche phpMyAdmin, Apache-Webserver und MySQL-Datenbankserver)
Relationale Datenbank
-
wichtigste Untergruppe der Datenbanken
-
besteht aus mindestens einer, meistens aus mehreren Tabellen (Relationen)
-
andere Datenbanken: hierarchische oder objektorientierte
Tabelle = Relation
-
Baustein der Relationalen Datenbank
-
besteht aus Datensätzen
-
kompakte Darstellung großer Datenmengen
-
sortierbar nach beliebigen Attributen
-
können nach vorgegebenen Kriterien gefiltert werden
-
können miteinander in Beziehung gesetzt werden
Datensatz = Tupel
-
Zeile einer Tabelle
-
ein Datensatz besteht aus mehreren Datenfeldern (z.B. Nname, Vname, E-Mail-Adresse)
-
Jeder Datensatz muss über einen Schlüssel eindeutig identifizierbar sein (z.B. Kundennummer)
Attribute
-
einzelne Zellen werden als Datenfelder bezeichnet
-
gleichartige Datenfelder sind spaltenweise angeordnet und als Attribute bezeichnet
-
jedes Attribut erhält einen Feldnamen (z.B. Nname)
Datentyp
-
jedem Attribut wird ein bestimmter Datentyp zugewiesen
-
INT (integer = ganze Zahlen) [TINYINT, SMALLINT, MEDIUMINT, BIGINT]
-
FLOAT, DOUBLE (Fließkommazahl)
-
DECIMAL (Dezimalzahlen)
-
CHAR (feste Speicherung z.B. CHAR(25) Reservierung für GENAU 25 Zeichen) [2^8 Zeichen]
-
VARCHAR (z.B. VARCHAR(25) speichert BIS ZU 25 Zeichen) [2^8 Zeichen]
-
BOOLEAN (Ja/Nein)
-
DATE (Datum)
-
TIME (Uhrzeit)
-
DATETIME (Kombination aus Datum und Uhrzeit YYYY-MM-DD HH:MM:SS)
-
TIMESTAMP (speichert die Zeit, zu der die Zeile begonnen wurde (falls nicht anders angegeben))
-
YEAR
-
BINARY (Binäre Daten z.B. Bilder)
-
TEXT (Zeichenketten) [BLOB, LONGTEXT, LONGBLOB]
-
-
Festlegung des Datentyps ist erforderlich zur weiteren Verarbeitung (z.B. Rechnen mit Zahlen, generieren von E-Mails mit Text, etc.)
Schlüssel
-
Jeder Datensatz muss eindeutig identifizierbar sein, daher wird in jeder Tabelle mindestens ein Schlüssel benötigt
-
über den Schlüssel wird der Zugriff beschleunigt
-
auto_increment = automatische Vergabe des Schlüsselwertes; d.h. doppelte Werte können nicht vorkommen
-
Verknüpfung von Tabellen miteinander erfolgt über Schlüssel
-
Primärschlüssel = Schlüssel zur Identifikation der Tupel der eigenen Tabelle; jede Tabelle kann nur einen Primärschlüssel enthalten
-
Fremdschlüssel = Verwendung eines Primärschlüssels in einer Tabelle, die selbst einen eigenen Primärschlüssel hat [Feldname in einer Tabelle, welcher eine Beziehung herstellt zu einem Schlüsselfeld einer anderen Tabelle]; die Verwendung mehrerer Fremdschlüssel ist möglich
-
Datenkategorien
-
Stammdaten = verändern sich nicht oder kaum (z.B. Name, Adresse, Produktbeschreibungen)
-
Bewegungsdaten = Daten, die sich häufig ändern (z.B. Inhalt des Warenkorbs)
-
Prozessdaten = Daten, die nicht in der Datenbank gespeichert werden (z.B. Alter einer Person; wird errechnet aus Systemzeit und Geburtsdatum)
2. Anforderungen
Datenkonsistenz
-
jeder Datensatz muss eindeutig identifizierbar sein (konsistent lat. con = "zusammen" + sistere = "halten") [vgl. Fingerabdruck]
-
Primärschlüssel werden einmalig vergeben und auch nach löschen des Datensatzes nicht neu vergeben
Redundanzfreiheit
-
Redundanz = überflüssige oder mehrfach vorkommende, gleiche Informationen innerhalb verschiedener Datensätze (lat. redundare = "überlaufen, im Überfluss vorhanden sein")
-
Redundanzfreiheit = alle Daten werden nur ein einziges Mal erfasst und gespeichert
-
spart Speicherplatz und verhindert Probleme (Anomalien) bei späteren Änderungen
Sonstiges
-
Datensicherheit; um Datenverlust zu vermeiden, müssen Backups getätigt werden
-
Datenschutz
-
Multiuser-DB; Zugriffsmöglichkeit für mehrere Nutzer gleichzeitig
-
Reihenfolge der Datenerfassung ist unerheblich, die Daten organisieren und verwalten sich selbst
3. Beispiele für Datenbanken in der Medienbranche
-
Aufbau digitaler Bild-, Text- oder Medienarchive
-
digitale Projektbearbeitung von der Datenerfassung bis zum fertigen Produkt
-
Print-Worflow
-
Personalisierung von Medienprodukten
-
E-Commerce-Lösungen, Webshops, CMS, Suchmaschinen, Foren
-
Lern-Management-Systeme (z.B. Moodle)
-
Soziale Netzwerke (z.B. Facebook)
-
Web-Enzyklopädien (z.B. Wikipedia)
4. Datenerfassung
-
Daten werden erfasst und gepflegt über Formulare
-
keine Kenntnisse über die Struktur der Daten nötig
-
bei der Datenerfassung erfolgen Überprüfungen auf Vollständigkeit und Korrektheit
-
fehlende Eingaben, leer gelassene Felder
-
falsche Eingaben (Buchstaben statt Ziffern, fehlendes @-Zeichen in der Mail-Adresse)
-
Rechtschreibprobleme (z.B. fehlende Großschreibung, Beginn eines Eintrags mit Leerzeichen)
-
-
der Datensatz wird erst akzeptiert, wenn er vollständig und fehlerfrei ist
-
Nicht kontrollierbar: wissentliche oder versehentliche Falscheingaben, Schreibfehler
5. Normalisierung
= um Konsistenz und Redundanzfreiheit zu erreichen, werden Datensätze auf mehrere Tabellen verteilt; hierbei werden Normalformen unterschieden (bekannt: 5, relevant: 3)
Normalformen finden Anwendung bei Stamm- und Bewegungsdaten, NICHT bei Prozessdaten.
1. Normalform
Jedes Datenfeld enthält nur einen Eintrag (atomar = kleinster Wert, nicht weiter teilbar).
-
Achtung: Hausnummer und Straße gehören zusammen, PLZ und Ort gehören NICHT zusammen
-
keine Redundanzfreiheit
-
keine Datenkonsistenz
2. Normalform
Die Tabelle befindet sich in der 1. Normalform und alle Datenfelder sind von einem Schlüssel funktional abhängig.
-
die Tabelle wird zur Reduktion von Redundanzen in mehrere Tabellen zerlegt
-
z.B. wird jeder Produktnummer genau ein Produkt zugeordnet
-
keine Redundanzfreiheit
3. Normalform
Die Tabelle befindet sich in der 2. Normalform und alle Datenfelder, die keine Schlüssel sind, sind nicht funktional abhängig.
-
Beseitigung der letzten Redundanzen
-
Nachteil: Verschlechterung der Lesbarkeit mit jeder hinzugekommenen Tabelle, daher wird eine DBMS benötigt, die sich um die Organisation und Verwaltung kümmert
6. Entity-Relationship-Modell = ER-Modell
= Entwurfsverfahren, um bereits beim Datenbankentwurf dafür zu sorgen, dass sich eine konsistente und redundanzfreie Datenbank ergibt.
Die Chen-Notation verwendet drei grafische Elemente: Rechteck (= Entitätstyp), Raute (= Beziehung) und Ellipse (= Attribut)
-
Entitätstyp: Objekte, denen Informationen zugeordnet werden können (z.B. Produkt, Kunde)
-
Beziehung: Beziehungen, die zwischen Entitäten hergestellt werden (z.B. Kunde kauft Produkt)
-
Attribut: jede Entität hat bestimmte Eigenschaften (z.B. ein Kunde hat einen Namen)
Arten von Beziehungen
1:1-Beziehung
-
einer Entität ist höchstens eine andere Entität zugeordnet
-
Kunde kauft Produkt
1:n-Beziehung
-
einer Entität stehen keine, eine oder mehrere Entitäten gegenüber
-
Kunde kauft mehrere Produkte; der Kunde kann aber auch nur ein Produkt kaufen oder gar keins, aber es ist trotzdem eine mögliche 1:n-Beziehung
m:n-Beziehung
-
auf beiden Seiten stehen mehrere Entitäten in Beziehung zueinander
-
mehrere Kunden können mehrere Produkte kaufen
Problem bei einer m:n-Beziehung:
-
keine eindeutige Beziehung zwischen zwei Tabellen herstellbar
-
müssen durch Ergänzen weiterer Tabellen aufgelöst werden (z.B. Kunde-Produkt-Tabelle, die auflistet, welcher Kunde welches Produkt kauft)
Anwendung des ER-Modells
-
aus jedem Entitätstyp entsteht eine Tabelle (Tabelle Kunde)
-
aus den Attributen werden die Tabellenspalten; evtl. werden weitere Spalten ergänzt (Kundendaten)
-
für die Beziehungen werden Primärschlüssel (Entität Kunde) und Fremdschlüssel (Entität Produkt) miteinander verbunden
-
Beispiel: ein Kunde kann mehrere Produkte kaufen, er erteilt mehrere Aufträge mit den dazugehörigen Auftragsnummern, jedes Produkt mit den dazugehörigen Produktnummern kann von mehreren Kunden gekauft werden --> Eindeutigkeit ergibt sich erst aus einer Kombination von Auftrags- und Produktnummer = zusammengesetzter Schlüssel
7. Referenzielle Integrität
-
das DBS muss sicherstellen, dass Beziehungen zwischen Tabellen nicht zu Fehlern führen
-
Verhinderung von widersprüchlichen oder fehlerhaften Daten
-
Beispiel: ein Kunde ist zwar mit Kundendaten angelegt, hat aber bisher nichts bestellt; dieser Kunde kann gelöscht werden; ein Kunde, der bereits bestellt hat, darf nicht gelöscht werden (Fehler in der Auftragstabelle)
8. SQL
-
Structured Query Language
-
Erstellen von Datenbanken und Tabellen
-
Eingeben, Ändern und Löschen von Datensätzen
-
Abfragen (engl. Query) von Daten nach gewünschten Kriterien
-
ISO-standardisiert und plattformunabhängig
-
heutige DB-Software ermöglicht Zugriffe auf DB auch ohne SQL-Kenntnisse
SQL-Befehle
-
not null → nicht leer; hier muss immer ein Eintrag erfolgen
-
auto_increment → der Wert wird automatisch vergeben und hochgezählt; eine doppelte Vergabe ist dadurch nicht möglich
-
CREATE DATABASE Tabelle → erstellt eine neue Datenbank
-
ALTER TABLE Tabelle → Verändern einer Tabelle
-
DROP TABLE Tabelle → Löschen einer Tabelle
-
CREATE DATABASE name → erstellt eine neue Datenbank
INSERT INTO Tabelle → Datensatz eingeben
INSERT INTO Tabelle
[(Spalte1 [, Spalte2, …])]
VALUES (Ausdruck | Default)[,(...),(...)];
INSERT INTO Kunden
(Firma, Straße)
VALUES („Winkler“, „Hauptstraße 23“);
DELETE FROM Tabelle → Datensatz Löschen
DELETE FROM Tabelle
WHERE Bedingungen
DELETE FROM Kunden
WHERE Knr = 5;
SELECT Spalten → Abfrage eines bestimmten Datensatzes
SELECT Spalten
FROM Tabelle
[WHERE Bedingungen]
[ORDER BY Sortierspalten]
[LIMIT Limits];
SELECT Firma, Straße
FROM Kunden
WHERE Firma
= „Mayer“;
SELECT *
FROM Kunden
ORDER BY Plz;
UPDATE Tabelle → Ändert Datensätze
UPDATE Tabelle
SET Spalte1 = Ausdruck1 [, Spalte2 = Ausdruck2]
[WHERE Bedingung];
UPDATE Kunden
SET Straße = „Gartenstraße 5“,
Plz = „77933“
Ort = „Lahr“
WHERE Knr = 5;
9. Datenbankmanagement
Fileserver-System
-
Zugriffe auf eine Datenbankdatei erfolgen direkt
-
clientseitig
-
Nachteil: die Performance der Datenbank sinkt ab einer hohen Benutzerzahl
-
daher sind die Fileserver-Systeme nur für kleinere und mittlere Datenbanksysteme empfehlenswert und ausreichend
Client-Server-System
-
ODBC = Open Database Connectivity
-
Verbindung zwischen Datenbank-Client und Datenbank-Server
-
Client --> ODBC-Schnittstelle --> Server/Datenbank
-
nutzt die Abfragesprache SQL
-
Datenbankanwendungsschnittstelle (API) der Datenbankabfragesprache SQL
-
serverseitige Auswertung
-
bessere Performance und geringe Netzbelastung, daher für sehr große Datenbanken mit hoher Benutzeranzahl geeignet
-
Zugriff auch über Skriptsprache möglich
Aufgaben von Datenbanksystemen DBS
-
Datenbankabfragen bearbeiten
-
Datensicherheit
-
Datenschutz
-
Multiuser-DB (Synchonisation von mehreren gleichzeitigen Zugriffen)
-
Werkzeuge für Datenbankentwürfe
-
"Assistenten" für Berichte, Formulare und Abfragen
-
Datenexport
-
drei große Systeme: DB2 von IBM, Microsoft SQL-Server und Oracle-Database
10. Anomalien
-
treten in relationalen Datenbanken auf
-
können durch nicht normalisierte bzw. denormalisierte Datenstrukturen entstehen
-
führen zu Inkonsistenzen
Änderungs-Anomalien
Änderungen führen häufig zu Fehlern, wenn nicht alle Datensätze gleichzeitig geändert werden
Lösch-Anomalien
entstehen, wenn durch das Löschen eines Datensatzes mehr Informationen als erwünscht verloren gehen
Einfüge-Anomalien
Teile des Datensatzes gehen verloren, da z.B. der Datentyp nicht übereinstimmt
11. Kartesisches Produkt
-
repräsentiert sätmliche möglichen Kombinationen aller Zeilen zweier oder mehrerer Tabellen
-
erzeugt aus gegebenen Mengen eine neue Menge
-
jede Relation ist eine Teilmenge eines kartesischen Produktes
-
besteht aus der Menge aller Tupel, die Reihenfolge der Mengen und der entsprechenden Elemente ist fest vorgegeben
12. Entwicklungsverfahren
In der Datenbankentwicklung gibt es zwei grundsätzliche Verfahren.
Top-down "von oben nach unten"
-
vom Abstrakten, Allgemeinen, Übergeordneten hin zum Konkreten, Speziellen, Untergeordneten
-
erst steht das System, dann werden Daten eingepflegt
-
Nachteil: kann nur schwer in bereits laufende Prozesse integriert werden
Bottom-up "von unten nach oben"
-
aus vorhandenen Daten und Informationen wird ein DBS entwickelt
-
von Detail-Aufgaben zur Erledigung übergeordneter Prozesse
-
Nachteil: führt bei großen Datenmengen schnell zu Anomalien
(Quellen: Komp. 5. Aufl. Band II ab S. 154 + Spickzettel 2. Aufl. + eigener Kram)