Datenbanken

Realisierung von Datenbank-Projekten

  1. 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).
  2. 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.
  3. Das logische Modell ist die normalisierte Form des Entwurfs in Tabellenform (Relationenmodell).
  4. 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

  1. Ü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.
  2. Ü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.
  3. 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 von NULL verschiedenen Einträge
  • MIN(attr) für den Minimalwert eines Attributs
  • MAX(attr) für den Maximalwert eines Attributs
  • AVG(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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.