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)

Bewertung: 
4.666665
Durchschnitt: 4.7 (3 Stimmen)

Datenbanken (Normalisierung)

Spricht man von einer Datenbank, meint man in der Regel ein Datenbanksystem (DBS). Dieses besteht aus zwei Teilen: Die eigentliche Datenbank (DB) ist eine programmunabhängige strukturierte Sammlung von Daten, die miteinander in Beziehung stehen. Um diese Daten sinnvoll und komfortabel nutzen zu können, wird eine Datenbanksoftware benötigt, das Datenbankmanagementsystem (DBMS).

Ziele einer Datenbank:

- Vereinheitlichung: Daten werden nur einmal erfasst und zentral gespeichert, sodass allen Benutzern eine einheitliche und aktuelle Datenbasis zur Verfügung steht.

- Flexibilität: Die erfassten Daten lassen sich mehrfach und unterschiedlich nutzen und auswerten.

- Programmunabhängigkeit der Daten: Wird durch die Trennung von DB und DBMS erreicht.

- Fehlerfreiheit: Datenbankfehler, die z.B. durch einen Programm- oder Computerabsturz entstehen, sollen automatisch korrigiert werden.

-Redundanz-Vermeidung: Unter Redundanz versteht man eine doppelte oder mehrfache Speicherung gleicher Daten. Dies führt zu Speicherplatzverschwendung, erhöht die Verarbeitungszeiten und kann zu widersprüchlichen Daten führen.

Folgende Kriterien für eine funktionierende Datenbank müssen erfüllt sein:

Datenkonsistenz: Jeder Datensatz muss eindeutig identifizierbar, also konsistent sein, z.B. werden Kundennummern nur ein einziges Mal vergeben. Wenn der Kunde nicht mehr existiert,  wird die Nummer nicht erneut verwendet. Somit sind konsistente Datensätze eindeutig unterscheidbar.
Beispiel: Selbst bei dem unwahrscheinlichen Fall, dass zwei Kunden dieselbe Adresse haben, kann mindestens durch die einmalig vergebene Kundennummer zwischen ihnen unterschieden werden.

Redundanzfreiheit: Sämtliche Daten werden nur einmal erfasst und gespeichert (=sie sind redundanzfrei). So treten bei Änderungen keine Probleme auf, da sie zentral abgelegt sind und nur ein Mal geändert werden müssen.
Beispiel: Ändert sich bei einem Kunden die Adresse, muss diese nicht für jede seiner Bestellungen erfasst und geändert werden, sondern nur ein Mal zentral in der Kundendatenbank, da den Bestellungen die eindeutige Kundennummer zugeordnet ist. Somit dient diese Nummer als Schlüssel.


Normalformen
1. Normalform: Jedes Datenfeld einer Tabelle enthält genau einen Eintrag, diese sind spaltenweise sortiert, z.B. nach Nachname, Straße, PLZ, Ort, Produkt und Datum. In der Tabelle der 1. NF sind alle Informationen gelistet, daher ist sie nicht konsistent und nicht redundanzfrei.
Beispiel: Der Kunde Winkler hat Visitenkarten und eine Website in Auftrag gegeben. Da ja jedes Datenfeld nur einen Eintrag enthält, ist der Kunde zwei Mal in der Auftragstabelle aufgeführt, ein Mal mit dem Produkt Website mit der Auftragsnummer 1 und ein Mal mit dem Produkt Visitenkarten mit der Auftragsnummer 5. Diese Nummern verweisen auf den Kunden und auf das Produkt.

2. Normalform: Nun wird die Tabelle in mehrere Tabellen zerlegt und zwar so, dass jeder Eintrag der entstandenen Tabellen einen eigenen Schlüssel erhält. Dieser Schlüssel wird dann anstatt des Produktes in der Tabelle der 1. NF aufgeführt. So befindet sich die Auftragstabelle in der 2. NF, da sie sich zum einen in der 1. NF befindet und zum anderen alle Datenfelder von einem Schlüssel funktional abhängig sind.
Beispiel: Die Produkte werden in einer eigenen Tabelle aufgeführt und jedes Produkt erhält eine Produktnummer (Schlüssel). So wird in der Auftragstabelle nun nicht das Produkt mit Namen angegeben, sondern der Schlüssel. Somit ist der Kunde Winkler zwar immernoch zwei Mal in der Auftragstabelle aufgeführt, jedoch ein Mal mit der Produktnummer 1 für die Website und ein Mal mit der Produktnummer 2 für Visitenkarten. Die Produktnummer 2 kann in der Tabelle natürlich ebenfalls für den Kunden Mayer vorkommen, der ebenfalls Visitenkarten in Auftrag gegeben hat.

3. Normalform: In dieser letzten Stufe werden die verbliebenen Redundanzen beseitigt. Die endgültige Tabelle befindet sich dann in der 3. NF, wenn sie sich zum einen in der 2. NF befindet und zum anderen alle Datenfelder, die keine Schlüssel sind (im Bsp. das Auftragsdatum), nicht funktional abhängig sind.
Beispiel: Nun sind die Kundenangaben in der Auftragstabelle funktional abhängig, also zum Kunden Winkler gehört genau eine Straße, eine PLZ und ein Ort. Das muss nun behoben werden, da ein weiterer Kunde namens Winkler hinzukommen kann und sich dadurch die Adresse anhand des Namens nicht mehr eindeutig ermitteln ließe. Deshalb wird eine weitere Tabelle mit neuem Schlüssel erstellt. Hier befinden sich die Daten der Kunden, die spaltenweise nach Name, Straße, PLZ und Ort aufgeführt sind. Das Wichtigste ist nun, dass jeder Kunde eine Kundennummer (Schlüssel) erhält, der in der Auftragstabelle angegeben werden kann. Diese Tabelle wird kann nun in die 3. NF gebracht werden: Eine Spalte gibt die Auftragsnummer an, eine die zugehörige Produktnummer, eine Spalte führt die Nummer des zugehörigen Kunden auf und eine weitere Spalte kann nun das Datum des Auftrags enthalten.

Nun ist die Normalisierung in die 3. NF abgeschlossen, alle Daten der 3 Tabellen sind redundanzfrei und konsistent.

 

Weiterführende Links

http://www.tinohempel.de/info/info/datenbank/normalisierung.htm

Bewertung: 
3
Durchschnitt: 3 (3 Stimmen)