Beziehungen und Kardinalität

Werbung
Beziehungen und Kardinalität
Beziehungen und Kardinalität
Durch eine Fremdschlüsselspalte wird eine Beziehung (Relation) zwischen zwei Tabellen hergestellt: jeder Datensätze der referenzierenden Tabelle (die mit dem
Fremdschlüssel) ist mit einem Datensatz der referenzierten Tabelle (der „Zieltabelle“) verknüpft.
Da man in eine Fremdschlüsselspalte immer nur einen Wert eintragen kann1, korrespondiert ein Datensatz (eine Reihe = ein Datensatz) aus der referenzierenden
Tabelle immer genau mit einem Datensatz aus der Zieltabelle:
für jeden Helden kann ich nur eine Rasse eintragen.
hero
no
432
97
123
543
name
Alf
Belf
Celf
Delf
rasse
2
1
3
3
…
race
id
1
2
3
beschreibung …
Human
Dwarf
Elf
Umgekehrt kann aber ein Datensatz aus der referenzierten Tabelle mit
mehreren Datensätzen der Tabelle mit dem Fremdschlüssel verknüpft sein: die
Nummer 3 kann mehrfach in der Spalte „rasse“ von „hero“ auftauchen → es kann
mehrere elfische Helden geben.
1 Eine Designvorschrift für relationale Datenbanken verbietet es, in eine Zelle Listen einzutragen.
1
Beziehungen und Kardinalität
Eine Fremdschlüsselspalte entspricht immer einer „1 zu mehrere“-Beziehung (oneto-many relation), diese nennt man auch „1:n“ Beziehung. Dabei steht das
„mehrere“ (also das n) auf der Seite der Tabelle mit dem Fremdschlüssel.
Genau genommen ist die 1:n Beziehung die einzige Art von Beziehung, die man
in relationalen Datenbank aufbauen kann.
Grafische Darstellung – Beziehungen im Entity Relationship Model
Die Struktur einer Datenbank stellt man oft auch grafisch dar. Für das so genannten „Entity Relationship Model“ gibt es mehrere Standards. Allen gemein ist, dass
jede Tabelle (Entität) durch ein Rechteck repräsentiert werden und die Beziehung
durch Linien. In der Chen-Notation wird jede Beziehung durch eine beschriftete
(!) Raute gezeichnet. Durch eine „1“ und ein „n“ wird die „Kardinalität“ der Beziehung gekennzeichnet, also die Angaben darüber, wie viele Datensätze von Tabelle
A mit Tabelle B verknüpft werden können. Dabei steht das „n“ (das „mehrere“) immer auf der Seite der Entität (der Tabelle) mit dem Fremdschlüssel.
2
Beziehungen und Kardinalität
Übungen zu 1:n Beziehungen
Vervollständige die folgenden „Beziehungskreise“ 2
Aufgabe 1
klasse
abk
E1FS1T
E2FS1T
E3FS1T
E1FI1T
E2FI1T
E3FI1T
…
schüler
klassenlehrer
MER
DT
MAS
PAU
NAZ
MEI
…
„Ein Schüler.
2
Auszüge aus Tabellen, Auszüge aus CREATE TABLE, textliche Beschreibung der Beziehung,
Ausschnitt aus ERM
3
Beziehungen und Kardinalität
Aufgabe 2
Aufgabe 3
(Fortgeschrittene: ergänzt auch eine Tabelle „fahrer“)
dienstfahrten
id
1
2
3
4
fahrzeug
FR-CR 633
FR-M 21
FR-CR 633
FR-AJ 712
fahrer
4
1
5
1
datum
…
dienstwagen
kennzeichen
FR-CR 633
FR-M 21
FR-AJ 712
marke
Toyota
Renault
VW
typ
Yaris
Traffic
Passat
…
4
Many-to-many Relationships
Many-to-many Relationships
Rein technisch gibt es in relationalen Beziehung nur one-to-many Beziehungen 3.
Rein logisch kann man damit aber auch eine „mehrere-to-mehrere“ Beziehung
(„many-to-many“ Relationship) aufstellen:
item
id
1
2
3
4
beschreibung
….
Screwdriver
Antistatic Wrist Strap
Smartphone
Buisness Suit
inventory
item
hero
1:n
1
3
4
3
hero
no
432
97
97
432
n:1
432
97
123
name
Alf
Belf
Celf
In diesen Tabellen steht, dass
•
Alf einen Screwdriver und ein Smartphone hat. Ein Held kann also mehrere Gegenstände haben.
•
ein Smartphone im Besitz von Alf ist, ein weiteres (nicht dasselbe, ein anderes
Smartphone!) im Besitz von Belf. Ein Gegenstand (zwei Exemplare einesGegenstands) kann also mehreren Helden zugeordnet sein.
Hier dient die Tabelle „inventory“ als Zwischentabelle, um die „mehrere-zu-mehrere“-Beziehung zwischen Gegenständen und Helden herzustellen.
Eine „many-to-many“-Beziehung zwischen zwei Entitäten wird durch eine zusätzliche Tabelle realisiert, die zwei Fremdschlüsselspalten enthält und damit je eine
1:n Beziehung zu den Tabellen aufbaut, die eine n:n Beziehung eingehen wollen.
In Tabellenform kann man einen „many-to-many“-Beziehung nicht direkt abbilden,
in einem Entity-Relationship-Diagramm dagegen schon:
Lasst Euch nicht von der „dasselbe ↔ das gleiche“-Frage verunsichern - die ent steht unter Umständen auch schon bei 1:n Beziehungen. Manchmal geht es um
„dasselbe“, manchmal um „das gleiche“, das ergibt sich nur aus dem Kontext.
3 Aus denen kann man eine one-to-one Beziehung machen, wenn man die Fremdschlüsselspalte
mit „UNIQUE“ einschränkt.
5
Beispiele:
Beispiele:
Beziehungen mit Attributen
In der Übung zu den 1:n Beziehungen hatten wir die Zwischentabelle zu Dienstwagen und Fahrer schon gesehen – sie heißt dort „dienstfahrt“ und enthält neben
den Fremdschlüsseln auch weitere Angaben ( Datum, Zeit, Ziel der Fahrt etc). Solche zusätzlichen Attribute kann man im ERM auch einzeichnen.
Natürlich kann es vorkommen, dass eine n:n Beziehung so „aufgebläht“ wird, dass
man der Zwischentabelle auch in der Zeichnung eine eigene Entität verpasst (in
diesem Fall die schon bekannte „Dienstfahrt“. Man ist da als Entwickler aber wahlfrei!
6
Relationenmodell
Da im ERM aufgrund der möglichen many-to-many Beziehungen nicht alle Tabellen
erwähnt sind, ist es üblich diese im so genannten „Relationenmodell“ aufzuzählen.
Das ist vor allem eine beliebte Prüfungsfrage! In einem Relationenmodell listet
man alle Tabellennamen Ihren Spalten auf und markiert Primärschlüssel (z.B. unterstrichen oder fett) und Fremdschlüsselspalten (z.B. gestrichelt unterstrichen oder
kursiv).
Für das Dienstwagenbeispiel wäre das also:
Fahrer: Personalnummer, Vorname, Name
Dienstwagen: Kennzeichen, Marke, Typ
Dienstfahrt: Nummer, Fahrzeug, Fahrer, Datum, Zeit , Ziel
Aufgaben
Entscheide für folgende Entitäten, in welchen Beziehungen sie zueinander stehen.
Zeichne das zugehörige ERM und gib das Relationenmodell an.
Musiker und Band
Kunde und Artikel (in einem Online-Warenhaus)
Tätowierung und Tätowierer
Tätowierung und Tätowierter (beachte das „t“ )
7
Entity-Relationship-Model komplett
Entity-Relationship-Model komplett
Bei einem vollständigen Entity-Relationship-Model gibt man die Attribute für alle
Tabellen/Entitäten an. Das ERM des Rollenspiels sähe also folgendermaßen aus.
Beachte: den Primärschlüssel markiert man. Die Fremdschlüssel(spalten) gibt man
nicht extra als Attribut an, dafür wird ja die Beziehung eingezeichnet.
8
Entity-Relationship-Model komplett
Aufgabe 1 (nach einer Aufgabe aus der FIAE-Prüfung Sommer 2011)
Erstelle für folgendes Projekt das ERM der benötigten Datenbank in Chen-Notation und gib das dazu gehörige Relationenmodell an.
Gesprächsaufzeichnung mit dem Geschäftsführer von „Solar-Power“
„Unsere Aufgabe besteht darin, Investoren für Solaranlagen und Vermieter für geeignete Dachflächen zu finden. Jeder Vermieter erhält eine Jahresmiete, die sich aus der Dachflä­
che multipliziert mit einer Quadratmetermiete berechnet. Die
Miete wird für jedes Dach neu ausgehandelt.
In der Regel handelt es sich um sehr große Dächer, diese Dä­
cher mieten die Investoren für eine festgelegte Laufzeit.So­
wohl von Vermietern als auch Investoren speichern wir Vor­ und Nachnamen sowie eine Kontoverbindung.
Für die Verwaltung der Solarmodule müssen eine Nummer und die bisher erzeugte Energie gespeichert werden. Außerdem müssen wir wissen, auf welchem Dach die Anlage aufgebaut ist
und welches Modul welchem Investor gehört.“
ERM in Crow's Foot Notation (Martin Notation)
Die Chen Notation von ERMs ist
relativ raumgreifend. Deutlich kompakter ist die Krähenfußnotation,
da hier die Attribute direkt in dem
Rechteck aufgelistet werden, die
die Entität repräsentiert. Eine Ein
Krähenfuß kennzeichnet eine 1:n
Beziehung (der Fuß ist auf der Seite des „mehrere“) ein doppelter
Krähenfuß steht für „many-tomany“. Der Beziehungstext (ja, das
muss sein) wird einfach an die Linie geschrieben. Da das Tool „yed“, mit dem ich
die Zeichnung erstellt habe, das Unterstreichen einzelner Texte nicht unterstützt,
habe ich die Primärschlüssel mit einem Stern gekennzeichnet.
9
Entity-Relationship-Model komplett
Aufgabe 2
Benutze das Programm „yed“ um ein ERM in Krähenfußnotation für folgende Anwendung zu erstellen.
Sie entwickeln die Datenbank für eine Online­Videoplattform.
Hier können registrierte Benutzer Videos hochladen. Zu jedem
Video wird ein Titel gespeichert, ein Beschreibung, das Da­
tum des Uploads und der Pfad zur Videodatei. Außerdem können
registrierte Benutzer Kommentare zu Videos abgeben. Dabei kann ein Kommentar auch als Antwort auf einen anderen Kom­
mentar dienen.
Jeder User kann Kanäle erstellen und seine Videos diesen Kanälen zuordnen. Dabei kann ein Video durchaus zu mehreren Kanälen gehören. Diese Kanäle können von anderen Usern abon­
niert werden. Bei der Speicherung eines Abonnements wird auch festgehalten, wann die Abonnierung stattfand.
Aufgabe 3 (FIAE Prüfung Winter 2013)
Verwende die Software „dia“ um ein ERM in Chen-Notation für folgendes Szenario zu erstellen.
10
Entity-Relationship-Model komplett
Aufgabe 4
Mögliche Lösung für ERM 1
1. Gib die CREATE Befehle an, um die im ERM gezeigte Datenbank zu erstellen.
2. Erstelle einen SELECT-Befehl, der alle Vermieter auflistet ( voller Name und
Kontoverbindung).
3. Schreibe einen SELECT-Befehl, der alle Investoren auflistet (voller Name
und Anzahl der Module, an denen Sie beteiligt sind).
4. Gib den SELECT-Befehl an, der alle Personen auflistet. Ist eine Person ein
Vermieter, so wird auch die Anzahl der Dächer angegeben, die der Person
gehören (dafür brauchst Du einen LEFT JOIN bzw. RIGHT JOIN).
11
Herunterladen