Datenbanken
Realisierung von Datenbank-Projekten
- Die Anforderungsdefinition (Spezifikation) ist eine Beschreibung der Wünsche des Kunden bzw. des Auftraggebers. Sie legt fest, welche Prozesse abgebildet werden sollen, welche Funktionen die Benutzerschnittstelle beinhaltet und ob es Schnittstellen zu anderen Systemen geben soll (und ggf. wie diese aussehen sollen).
- Das konzeptionelle Modell schafft ein semantisches Abbild der Realität. Hier werden die Daten, welche in der Datenbank gespeichert werden sollen, modelliert. Das Ergebnis des konzeptionellen Entwurfs wird in einem ER-Diagramm graphisch dargestellt.
- Das logische Modell ist die normalisierte Form des Entwurfs in Tabellenform (Relationenmodell).
- Das physische Modell umfasst die Implementierung, d. h. die Realisierung als Datenbank und die Schaffung einer Benutzerschnittstelle.
Erst im letzten Schritt kommt ein DBMS ins Spiel, die ersten drei Schritte sind komplett DBMS-unabhängig.
Begriffe zur Modellierung mit dem ERM
- Entitäten (entities)
- sind Objekte aus der realen Welt (wie Personen oder bestimmte Dinge).
- Entitätstypen
- werden im ER-Diagramm durch Rechtecke dargestellt.
- Attribute
- beschreiben eine Entität (oder auch eine Beziehung) genauer und werden im ER-Diagramm als Ellipsen dargestellt. Zu jedem Attribut gehört ein Wertebereich, der die möglichen Werte dieses Attributs beschreibt.
- Schlüssel
- ist ein Attribut, das einen Eintrag in der Datenbank eindeutig identifiziert. Der/die Schlüssel wird/werden in der Darstellung unterstrichen.
- Beziehungstypen (relationships)
- verbinden zwei oder mehr Entitätstypen miteinander und werden im ER-Diagramm als Rauten dargestellt.
- Funktionalitäten/Kardinalität
- beschreiben die Art der Beziehung genauer, indem sie angeben, mit wie vielen anderen Entitäten eine Entität eine Beziehung eingeht. Mögliche Funktionalitäten sind 1:1, 1:N, N:1, N:M.
- Optionalität
- beschreibt, ob eine Verbindung unbedingt erforderlich ist (Muss-Verbindung) oder ob sie optional ist (kann-Verbindung).
- Rollen
- beschreiben, in welcher Weise Entitäten an einer Beziehung teilnehmen. Sie können zum Beispiel zur Beschreibung rekursiver Strukturen benutzt werden.
Übersetzung eines ER-Modells in ein Relationenschema
- Übersetzung der Entitäten
- Jede Entität wird eine Relation.
- Der Schlüssel der Entität wird Primärschlüssel der Relation.
- Weitere Attribute der Entität wird zu Attributen der Relation.
- Übersetzung der Beziehungen
- Jede Beziehung wird eine Relation.
- Attribute dieser Relation sind die Schlüssel der teilnehmenden Relationen(bei N:M Beziehungen beide). Bei 1:N und N:1 Beziehungen wird die N-Seite der Schüssel. Bei 1:1 Beziehungen wird einer der beiden Schlüssel gewählt.
- Attribute der Beziehung selbst werden ebenfalls zu Attributen der neuen Relation.
- Vereinfachung des Schemas
- Wenn es mehrere Relationen mit demselben Schlüssel gibt, werden diese zu einer Relation zusammengefasst.
Fremdschlüssel sind die Schlüssel in Relationen, in denen diese keine Primärschlüssel sind, sondern nur auf eine andere Relation verweisen.
Normalisierung von Datenbanken
Normalformen helfen, Anomalien und Redundanzen zu vermeiden. Eine Relation ist jeweils in der 1., 2. oder 3. Normalform, wenn folgende Bedingungen erfüllt sind.
- 1. Normalform
- Alle Attribute weisen nur einfache Attributwerte auf (sind atomar), d. h. Werte dürfen keine Mengen oder Aufzählungen enthalten.
- 2. Normalform
- In einer Relation der 1. Normalform wird kein Nicht-Schlüssel-Attribut von einem Teil des Schlüssels identifiziert (keine funktionale Abhängigkeiten).
- 3. Normalform
- In einer Relation der 2. Normalform folgt aus keinem Nicht-Schlüssel-Attribut ein anderes Nicht-Schlüssel-Attribut (keine transitive Abhängigkeiten).
SQL-Befehle
Im Folgenden ist nur eine begrenzte Auswahl an MySQL-Befehlen aufgelistet. Alle SQL-Befehle sind hier vollständig in Großbuchstaben geschrieben.
Datenauswertung
Bei der Selektion fragt man nach Datensätzen und bei der Projektion nach Spalten.
SELECT [DISTINCT] * [,rechenausdruck [AS ergebnis]] FROM tabellen_name [AS tabellen_alias][, tabellen_name2, ...] [WHERE attribut operator wert(eliste)] [GROUP BY attr [HAVING attribut operator wert(eliste)]] [ORDER BY attribut|ergebnis|Spaltenposition [DESC|ASC]] [LIMIT a[,b]]
DISTINCT
sorgt dafür, dass evtl. vorhandene Dopplungen aussortiert werden.
Statt *
können auch nur einzelne Attribute (Spalten) abgefragt werden.
Ein Rechenausdruck kann neben den Grundrechenarten folgende Funktionen enthalten:
- SUM(attr) AS summe
COUNT
für die Anzahl der vonNULL
verschiedenen EinträgeMIN(attr)
für den Minimalwert eines AttributsMAX(attr)
für den Maximalwert eines AttributsAVG(attr)
für den Durchschnittswert eines Attributs
Der Teil operator value
in Bedingungen kann wie gefolgt aussehen:
- Vergleichsoperator
<
,<=
,=
,>
,>=
oder<>
mit einem Wert (nur Strings werden dabei in Anführungszeichen gesetzt) BETWEEN wert1 AND wert2
(Bereichsauswahl)LIKE '%beispiel_'
, wobei in der angegebenen Zeichenkette%
für eine beliebige Zeichenfolge und_
für ein beliebiges Zeichen steht.IN ('wert1','wert2'[...])
IS [NOT] wert
Mehrere Bedingungen können mit AND
und OR
verbunden werden.
Mit GROUP BY
können die Ergebnis-Datensätze gruppiert werden.
Mit ORDER BY
können die Ergebnis-Datensätze sortiert werden, dabei bedeutet DESC
eine absteigende Reihenfolge und ASC
eine aufsteigende.
Mit LIMIT a
wird die Ausgabe auf die ersten a
Datensätze beschränkt, bei LIMIT a,b
auf b
Datensätze ab dem a+1
. Datensätze.
SELECT
-Befehle können verschachtelt werden, indem bei einer Bedinung als Wert(eliste) in Klammern (...)
eine weitere SELECT
steht.
Tabellen können mit INNER JOIN
verknüpft werden:
SELECT * FROM tabellen_name INNER JOIN tabellen_name2 ON tabellen_name.attr = tabellen_name2.attr
Beim OUTER JOIN
werden alle Datensätze ausgewählt, auch wenn die Bedingung nicht stimmt.
Mit LEFT|RIGHT OUTER JOIN
werden die Datensätze ausgewählt, zu denen es keinen Partner in der anderen Tabelle gibt.
Datenmanipulation: DML-Befehle zur Verfügung:
Neue Datensätze werden mit dem INSERT
-Befehl eingefügt; nicht bekannte Werte können NULL
gesetzt werden.
INSERT INTO tabellen_name VALUES ('wert1','wert2','wert3')
Werte können mit dem UPDATE
-Befehl aktualisiert werden.
UPDATE tabellen_name SET attr='wert1', attr2='wert2' WHERE Bedingung
Werte können auch relativ zum alten Wert überschrieben werden:
UPDATE tabellen_name SET attr = attr * 1.5
Datensätze werden mit DELETE
gelöscht:
DELETE FROM tabellen_name WHERE Bedingung
Datendefinition: DDL
Eine neue Datenbank wird mit CREATE DATBASE
erstellt.
CREATE DATABASE datenbank_name
Eine Datenbank wird mit DROP DATABASE
gelöscht.
DROP DATABASE datenbank_name
Eine neue Tabelle wird mit CREATE TABLE
erstellt.
CREATE TABLE tabellen_name ( attr1 data_type, [attr2 data_type, ...] )
Eine Tabelle wird mit DROP TABLE
gelöscht.
DROP TABLE tabellen_name
Die Daten in einer Tabelle werden mit TRUNCATE TABLE
gelöscht.
TRUNCATE TABLE tabellen_name
Datenzugriffskontrolle: DCL
Die DDL spielt für uns erst einmal keine Rolle.
Sie umfasst Befehle wie GRANT
, REVOKE
, LOCK
.