gf2:datenbanken:definition

Dies ist eine alte Version des Dokuments!


Datenbanken 2 - Entwurf und Modellierung

Im Beispiel aus dem letzten Kapitel (Benutzer eines Sozialen Netzwerkes mit geposteten Fotos und Kommentaren) wurden einige grundlegende Konzepte für Datenbanken eingeführt. In der folgenden Liste werden sie noch einmal aufgeführt

  • Tabelle: Eine Datenbank besteht aus Tabellen, bei deren Visualisierung es Zeilen und Spalten gibt.
  • Feld: Ein Feld (auch Datenfeld) kann als eine Spalte in einer Tabelle gesehen werden. Es entspricht einem Merkmal in dieser Tabelle. Zum Beispiel entspricht das Feld „comment_body“ in der Tabelle „Kommentare“ einem Kommentar, den ein Benutzer zu einem Foto hinterlassen hat.
  • Datensatz: Ein Datensatz wird durch eine Zeile in einer Tabelle repräsentiert. Beispielsweise enthält die Tabelle „Benutzer“ 12 Datensätze, die jeweils die Informationen eines Benutzers des sozialen Netzwerks enthalten.

Primärschlüssel

Ein übergeordnetes Konzept in relationalen Datenbanken ist das Konzept der Schlüssel. In diesem Modell hat jede Tabelle einen Primärschlüssel (engl. primary key). Der Primärschlüssel einer Tabelle ist ein Feld oder eine Gruppe von Feldern, mit denen ein Datensatz in der Tabelle eindeutig identifiziert werden kann.
Das bedeutet, dass der Inhalt der Datensätze des Primärschlüssels NIE zwischen zwei Zeilen der Tabelle identisch ist. Im Beispiel der Datenbank unseres Sozialen Netzwerkes wird der Primärschlüssel der Tabelle „Benutzer“ durch das Feld „user_id“ gebildet. Jede/r Benutzer/in unseres Netzwerks hat also eine eindeutige Benutzer-ID.Jeder Nutzer und jede Nutzerin kann also eindeutig anhand seiner Benutzer-ID (user_id) identifiziert werden.

Ähnlich kann in der Tabelle „Bilder“ jedes Foto mit dem Primärschlüsselfeld „photo_id“ identifiziert werden. Somit ist auch hier „photo_id“ ein Primärschlüssel. In der Tabelle „Kommentare“ gibt es den Primärschlüssel „comment_id“. Es wäre jedoch auch möglich gewesen, dieses Feld wegzulassen und stattessen einen Primärschlüssel als Gruppe von mehreren vorhandenen Feldern zu definieren. Dies wird Gegenstand einer zu lösenden Übung sein.

Fremdschlüssel

Fremdschlüssel (engl. foreign key) sind Bestandteile einer Tabelle. Dabei handelt es sich um ein Feld (Spalte), die auf einen Primärschlüssel einer anderen (oder aber derselben Tabelle) verweist. Das heisst, dass Fremdschlüssel quasi die Verbindung verschiedener Tabellen ermöglichen, was ein zentrales Konzept relationaler Datenbanken darstellt. In der abgebildeten Tabelle ist beispielsweise photo_user_id ein Fremdschlüssel.

Das Entity-Relationship-Model (kurz ERM) dient der konzeptionellen Darstellung der Elemente einer Datenbank und der Verbindungen zwischen ihnen.
Dieses Modell wurde in den 1970er Jahren von Peter Chen erfunden 1) und wird heute weithin verwendet. Es ermöglicht, die Struktur einer Datenbank auf einfache Weise zu visualisieren.
Um eine robuste Datenbank (robust bedeutetet in diesem Fall qualitativ hochwertig und aus Benutzersicht stabil) zu erstellen, wird ein Datenmodel entworfen . Es geht darum, durch eine Beschreibung der realen Welt (des Bedürfnisses für eine Datenbank) zur Festlegung einer geeigneten Datenbankstruktur zu gelangen. Im ersten Schritt wird immer mit dem Entwurf des ERM (Entity-relationship-model) begonnen und die relationale Datenbank im zweiten Schritt anhand des ERMs abgeleitet und erstellt. In diesem Entitäten-Beziehungsmodell werden die Entitäten und deren Beziehungen dargestellt.

Entitäten und Beziehungen im Model

Eine Entität ist ein einzelnes, eindeutig identifizierbares Informationsobjekt, frei übersetzt als „Seiendes“ oder „Ding“. Entitäten werden als Rechtecke dargestellt.
Neben den Entitäten werden die gegenseitigen Beziehungen untereinander als Rauten dargestellt.

In unserem Beispiel vom Sozalen Netzwerk Instahub hat es mindestens zwei Entitäten, je nach dem, was alles beachtet wird. Das sind einerseits die Nutzer und Nutzerinnen des sozialen Netzwerks, andererseits die Fotos. Durch das Posten eigener Bilder oder auch das Kommentieren von Fotos anderer Nutzer stehen die Nutzer, und die Fotos in Beziehung zueinander.

Assoziationen oder auch Kardinalität der Beziehung

Die Assoziationen (teilweise auch Kardinalität genannt) gibt es verschiedene Typen.

  • Einfache Assoziation: jeder Entität wird wieder „genau eine“ Entität zugeordnet, gewissermassen eine 1:1 Beziehung.
    Beispiel 1:Ein Land hat genau eine Hauptstadt. Eine Hauptstadt kann genau einem Land zugeordent werden.
    Beispiel 2: Jeder Schüler hat einen Wiki-Login-Name. Ein Wiki-Login-Name kann einem Schüler zugeornet werden.
  • Konditionelle Assoziation: jeder Entität wird höchstens eine Entität zugeordnet, eine keins-oder-eins Beziehung.
    Beispiel 1: Ein (schweizer) Staatsangehöriger hat genau einen oder keinen (schweizer) Reisepass. Jeder Reisepass gehört einem Staatsangehörigen
    Beispiel 2: Jedes Englischbuch im Klassenzimmer gehört einem Lernenden bzw. einer Lernenden. Nicht unbedingt jeder Lernende muss sein Englischbuch im Klassenzimmer dabei haben.
  • Mehrfache Assoziation: jeder Entität werden „mehrere“ Entitäten zugeordnet. Diese Beziehung ist eine mehr-zu-mehr-Beziehung und wird oft als komplex bezeichnet. Oft spricht man hier auch von einer m:n Beziehung.
    Beispiel 1 einer n:m Beziehung: Im Sozalen Netzwerk können mehrer User mehrere Bilder kommentieren.
    Beispiel 2 einer 1:n Bezieung: Ein bestimmtes Kunstwerk (Bild) kann nur in einem Museum gleichzeitig ausgestellt werden, jedoch hat ein Museum mehrere Kunstwerke ausgestellt.
  • Mehrfach-konditionelle Assoziation: jeder Entität werden „keine, eine oder mehrere“ Entitäten zugeordnet. Im Gegensatz zu der mehrfachen Assoziation ist hier zu nennen, dass nicht zu jeder Entität eine Beziehung zu einer Entität der Zielmenge bestehen muss.

Die Beziehungen lassen sich immer in beide Richtungen lesen. In unserem Beispiel vom Nutzer zum Foto oder vom Foto zum Nutzer.

Video zum Thema:

Kurzer Auftrag 1:
Wie sieht das EMR Diagrammm von Instahub aus? - Bestimmen Sie alle Entitäten und deren Beziehungen - Zeichnen Sie ein Diagramm

Lösungen

Nun haben wir in unserem Beispiel die Entitäten ('User' und 'Fotos') und deren Beziehungen ('Posten' und 'Kommentieren') inklusive der Assozationen im ERM-Model gezeichnet. Was noch fehlt, um danach eine Datenbankentwurf umsetzen zu können, sind die Merkmale von Entitäten oder auch jene von Beziehungen.


Einfach ausgedrückt entsprechen Sie den Feldern (als Gedankenstütze man sich könnte dies hier auch als „Tabellenspalten“ oder „Überschriften“ vorstellen), die wir über jede Tabelle abspeichern wollen.

Dabei werden Attribute oval umrahmt abgebildet.
Primärschlüssel werden dabei standardmässig unterstrichen und Fremdschlüssel kursiv geschrieben.

Für unser Beispiel vom Sozialen Netzwerk könnten folgende Attribute dem ERM zugefügt werden. Bildquelle

Kurzer Auftrag 2:
Identifizieren Sie im obigen Model die Primär- und die Fremdschlüssel und bestimmen Sie die restlichen nicht abgebildeten Attribute. Ihr Instahub oder die früheren Tabellen können helfen.

Auftrag 3
Erstellen Sie ein ERM zum folgenden Szenario. Dies wird sicher am einfachsten auf Papier erstellt. Indentifizieren Sie die Primär- und Fremdschlüssel, bestimmen Sie die jeweiligen Entitätsbeziehungen und erstellen Sie ein Diagramm. Achtung, vermutlich braucht dies auch etwas Platz!

Szenario:
Sie entwickeln für einen Zoo eine kleine Datenbank. Es geht darum, Tiere, Gehege und Pflegerinnen und Pfleger in die Datenbank aufzunehmen. dabei gelten die folgenden Beziehungen.

Tiere:
Jedes Tier lebt in einem bestimmten Gehege und kann von mehreren Pflegerinnen oder Pflegern gepflegt werden.Über jedes Tier sollen die verschiedenen Attribute abgespeichert werden: Chipnummer, Name des Tiers, Tierart, Fütterungsinformationen (entweder Fleisch, pflanzlich oder gemischt), Alter, Grösse, Gewicht, Geschlecht
Gehege:
Jedes Tier gehört wie schon erwähnt zu genau einem Gehege. In einem Gehege können aber mehrere Tiere gleichzeitig leben! Für jedes Gehege trägt genau ein Tierpfleger oder -pflegerin die Hauptverantwortung. Über jedes Gehege wollen wir die folgenden Attribute abspeichern:Gehegename, Grösse, Gehegetyp (Wüste, Wald, Tropisch, Wasser oder Aquarium)
Tierpfleger oder -pflegerin
Ein Pfleger oder Pflegerin pflegt mehrere verschiedene Tiere. Die / der PflegerIn kann für mehrere Gehege hauptverantwortlich sein. Über jede Pflegerin und jeden Pfleger sollen die folgenden Attribute abgespeichert werden: Personal_ID, Vornamen, Nachnamen, Geburtsdatum, Telefonnummer

Eine relationale Datenbank besteht somit aus mehreren untereinander in Beziehung stehenden Tabellen. Beim Entwerfen solcher gut funktionierender Datenbanken sind Regeln zu beachten, mit denen innerhalb von Tabellen Abhängigkeiten freigelegt werden könne und so redundante Information (Anomalien) vermieden werden können.

Abbildungsregel für 1:1 Beziehungen - KANN-Regel

Die KANN-Regel bedeutet, dass man bei einer einfach-zu-einfach Beziehung zwei Tabellen erstellen kann, aber nicht miss. Es spielt keine Rolle, ob man (im Beispiel Land-Hauptstadt bei der Land-Tabelle die Hauptstadt als Fremdschlüssel definiert oder umgekehrt bei der Hauptstadt-Tabelle das Land als Fremdschlüssel definiert).

Alternativ ist es hier aber auch möglich, nur 1 Tabelle zu erstellen, die alle Länder und Hauptstädte enthält. Natürlich braucht es in diesem Fall keinen Fremdschlüssel mehr, jedoch nach wie vor einen Primärschlüssel.


Abbildungsregel - MUSS-Regel für einfach-mehrfache Beziehungen

Die MUSS-Regel für einfach-mehrfache Beziehungen bedeutet, dass man bei einer einfach-mehrfachen Beziehung immer zwei Tabellen benötigt und auch die Position des Fremdschlüssels klar definiert ist.

Beispiel einer einfach-zu-mehrfachen-Beziehung
Jeder Auftrag (zum Beispiel Bestellung-Kunden-Firma im Video) gehört zu genau 1 Kunden, während jeder Kunde mehrere Bestellungen tätigen kann.


Abbildungsregeln - MUSS-Regel für komplexe Beziehungen

Die MUSS-Regel für komplexe Beziehungen bedeutet, dass man bei komplexen (mehrfach-zu-mehrfach, also n:m) Beziehungen für jede der beiden Entitäten eine Tabelle braucht und zusätzlich für die Beziehung selber eine eigene / weitere / dritte Tabelle erstellen muss. In der dritten Tabelle müssen beide Fremdschlüssel (für beide Entitäten) enthalten sein. Der Primärschlüssel der dritten Tabelle wird aus den beiden Fremdschlüsseln der anderen Tabellen zusammengesetzt.
Hier kann unser Beispiel vom Anfang mit den Instahub User - Photos - Kommentaren genannt werden.


Auftrag 4:

  1. Besprechen Sie kurz zu zweit diese genannten Regeln für unser Instahub-Beispiel und auch für die Zoo Aufgabe. Entwerfen Sie so die Datenbank in groben Zügen (Wie viele Tabelle, welche Attribute, …)
  2. Füllen Sie die folgenden Begriffe in das leere ERM, dabei sollten alle möglichst viele der Ihnen bekannten Beziehungstypen genutzt werden. Ergänzen Sie das ERM durch einige wenige Attribute. Erklären Sie in groben Zügen die Struktur der Datenbank, unter Beachtung der oben formulierten Regeln.

Weiter zu Einführung in SQL


1)
Wikipedia, Freie Enzyklopädie, 2020
  • gf2/datenbanken/definition.1715757003.txt.gz
  • Zuletzt geändert: 2024/05/15 09:10
  • von marroc