LKG/Inf 11 2011/ER-Modell
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
== Begriffe ==
* '''Entität:''' konkretes, eindeutig identifizierbares Datenobjekt (z.B. bestimmter Autor, bestimmtes Buch).
* Alle Entitäten mit gleichen Attributen gehören zu einer '''Entitätenmenge''' (z.B. Autor, Buch). [hier: gelb]
* '''Attribut:''' gemeinsame Eigenschaften aller Entitäten einer Entitätenmenge. Der konkrete Titel eines bestimmten Buches ist der '''Attributwert'''. [hier: grün]
* '''Primärschlüssel:''' dient der eindeutigen Identifizierung einer Entität (z.B. eindeutige ID, ISBN...). [hier: durchgängig unterstrichene Attribute] Man kann übrigens auch mehrere Attribute als gemeinsamen Primärschlüssel definieren.
* '''Fremdschlüssel:''' dient als Verweis zwischen zwei Relationen (ist Primärschlüssel einer anderen Entitätenmenge). [hier: strich-strich-unterstrichene Attribute]
* '''Beziehung (Relationship):''' Zwischen den verschiedenen Entitätenmengen existieren Beziehungen (z.B. "verfasst" ein Autor ein Buch). [hier: orange]
[[Bild:Mschubert_Buchverkaeufer_db.png]]
== Tabellen ==
Die Entitätenmenge Autor und Buch sollen beispielhaft verdeutlicht werden.
Autor:
{| border=1
|-
|'''A_ID'''
|'''Name'''
|-
|3
|Berta Buchschreiber
|-
|4
|Viktor Verfasser
|-
|5
|Sally Schreiber
|}
Buch:
{| border=1
|-
|'''ISBN'''
|'''A_ID'''
|'''Titel'''
|'''Bestand'''
|-
|1234567890123
|4
|Das Leben im Erz
|3
|-
|1111111111111
|4
|Mei Arzgebirg - wie bist du schie
|0
|-
|2222222222222
|5
|Die moderne Frau
|1
|}
== Beziehungstypen - Kardinalität ==
Beziehungen haben eine Kardinalität wie 1:n.
* 1:1 - Ein Mann hat ''eine'' Frau; eine Frau hat ''einen'' Mann (normalerweise...).
* 1:n - Ein Mond gehört zu ''einem'' Planeten; ein Planet kann ''mehrere'' Monde haben.
* n:m - Ein Lehrer hat ''mehrere'' Schüler; ein Schüler hat ''mehrere'' Lehrer.
Das Beispiel oben hat ebenfalls alle drei Beziehungstypen - prüfe dies nach, indem du ähnliche Sätze bildest.
== n:m - Beziehungen ==
Im obigen Beispiel haben die Entitätenmengen ''Buch'' und ''Kunde'' eine n:m Beziehung.
Für eine Umsetzung bedeutet dies, dass hier eine weitere (nicht direkt eingezeichnete) Tabelle benötigt wird.
Tabelle ''Buch'' ist bereits oben abgebildet.
''Kunde:''
{| border=1
|-
|'''KuNr'''
|'''Name'''
|'''PLZ''' (...Ort, Straße, Hausnummer)
|-
|1024
|August Ausleiher
|09456
|-
|1025
|Damaris Dauerleser
|09456
|-
|1027
|Sindy Schmöker
|09123
|}
Zusatztabelle: ''Buchverleih'' (könnte auch "Buch_Kunde" heißen):
{| border=1
|-
|'''ISBN''' (Fremdschlüssel)
|'''KuNr''' (Fremdschlüssel)
|'''Ausleihdatum'''
|'''Laenge'''
|-
|1234567890123
|1024
|2012-11-01
|21
|-
|1234567890123
|1027
|2012-10-27
|14
|-
|2222222222222
|1027
|2012-10-28
|14
|}
Wie man sieht, kann man deshalb auch zusätzliche Attribute in die Beziehung anbringen (Ausleihdatum und Länge).
''Hinweis: Dieses Beispiel hat den Mangel, dass ein Kunde das gleiche Buch nicht nochmal ausleihen kann - Es sei denn, der vorherige Eintrag würde gelöscht. Der Einfachheit halber soll dies aber genügen.''
== rekursive Beziehungen ==
...