Er-Modell erstellen.

Joseph100

Newbie
Dabei seit
Jan. 2021
Beiträge
6
Hallo zusammen,

ich habe eine kleine Frage zu Er-Modelle, und zwar ich muss den folgenden Satz ins Er-Modell umsetzen..

Ein Kunde kann sich beliebig viele Exemplare eines Artikels ausleihen. Dabei wird in der Datenbank zu jeder Ausleihe ein Zeitraum der Ausleihe mit Beginn und Ende gespeichert, sowie ein Vermerk darüber, ob die Ausleihe zurückgegeben wurde.
Eine Ausleihe bezieht sich auf ein Exemplar.
Der Kunde kann sich beliebig viele Exemplare ausleihen. Jede Ausleihe kann beliebig oft verlängert werden.


es ist nun so, dass man die Verlängerung durch Update der Beginn- und Ende-Zeit machen kann.
So meine Idee ist einfach ,dass man Ausleihe gar nicht als Entity in der Datenbank darstellt, Sondern alle Attribute an den Exemplar-Entity anhängt.
Also die Frage ist nun, OB man auf Ausleihe wirklich verzichten kann, indem man alle Attribute (wie Beginn, Ende, Ist-Zurück ) an Exemplar anhängt ?? oder wie würdet ihr sowas machen ??

ich hoffe, ihr könnt mir helfen.
Viele Grüße.
 
Zuletzt bearbeitet:

benneq

Fleet Admiral
Dabei seit
Juli 2010
Beiträge
11.476
Ich mach das grundsätzlich so: Niemals Daten überschreiben oder updaten, sonst verliert man Daten. Speicherplatz kostet nichts, aber Informationen sind Gold wert. Jede (Trans)Aktion wird in irgendeiner Form abgelegt, damit man später nachverfolgen kann was, wann, wie, wo passiert ist.
 

tollertyp

Commander
Dabei seit
Feb. 2020
Beiträge
2.680
Wenn du später nicht wissen willst, wer wann was geliehen hat, dann ja.
Aber selbst dann nicht, weil es einfach unschön modelliert ist.
 

Joseph100

Newbie
Ersteller dieses Themas
Dabei seit
Jan. 2021
Beiträge
6
Danke euch erstmal für die Antworten. Aber es werden keine Informationen Verloren gehen, da es immer noch eine Beziehung zwischen Kunde und Exemplar gibt. Also

Kunde (K-Id, Name, ...)
Exemplar (Ex-Id, Beginn, Ende, ... )
leiht aus (K-id , Ex-id )

Da es Redundanz vermieden werden soll.
 

FranzvonAssisi

Vice Admiral
Dabei seit
Dez. 2013
Beiträge
7.003
Und was wenn einer sein Exemplar zurückgibt und der nächste es ausleiht?

Dann hast Du K1 und K2, die beide 'leiht aus' zum selben Exemplar haben.

Wer von beiden hat denn nun das Exemplar?

Da geht ganz sicher Information verloren ;)

Lg
 

benneq

Fleet Admiral
Dabei seit
Juli 2010
Beiträge
11.476
Wenn du auf die Ausleihe Tabelle verzichtest, woher weißt du dann wer zuletzt (also davor) das Buch ausgeliehen hat? Oder wie lang das Buch durchschnittlich ausgeliehen wird, um dem nächsten Kunden ungefähr sagen zu können, wann es wieder verfügbar ist? Oder wie oft es schon ausgeliehen wurde? Oder ob derselbe Kunde es einfach immer wieder ausleiht, und man ihn mal auffordern sollte, es sich einfach zu kaufen? Oder ob man lieber ein zweites Exemplar noch anschaffen sollte, weil die Nachfrage so hoch ist?
 

Joseph100

Newbie
Ersteller dieses Themas
Dabei seit
Jan. 2021
Beiträge
6
:freak::freak::freak::freak::freak::freak:
würdet ihr dann das so machen ..

Kunde (K-Id, Name, ...)

Exemplar (Ex-Id , Ist-Zurück)
leiht aus (K-id , Ex-id )

Ausleihe (Ausleihe-id, , Beginn, Ende, )
verlängert (Ausleihe-Id, K-Id)

Aber wie soll ich nun beide Entitys Ausleihe und Exemplar miteinander verbinden??
 

FranzvonAssisi

Vice Admiral
Dabei seit
Dez. 2013
Beiträge
7.003
Nö, ein Kunde macht eine Ausleihe. Und die Ausleihe hat ein Exemplar (das ausgeliehen wird). Das Exemplar ist das Exemplar eines Artikels.

Die Verlängerung könnte man dann modellieren als ‚verlängert(K-Id, Ausleihe-Id, Enddatum)

Lg

PS: So würde ich es machen. Gibt bestimmt andere Möglichkeiten. Grundsätzlich werden die auch bestimmt alle akzeptiert, solange du die bei euch besprochenen Sachen einhältst.
 

Joseph100

Newbie
Ersteller dieses Themas
Dabei seit
Jan. 2021
Beiträge
6
ich glaube ich verstehe das langsam :)
Im Anhang steht jetzt mein kleines Er-Modell, ich hoffe es ist nun richtig geworden.
würde mich freuen wenn ihr mir noch mal etwas dazu sagt. Lg
Screenshot.jpg
 

Anhänge

  • Er-M.pdf
    47 KB · Aufrufe: 7
Zuletzt bearbeitet:

FranzvonAssisi

Vice Admiral
Dabei seit
Dez. 2013
Beiträge
7.003
Ja, sieht schon ganz gut aus.

Im Text oben steht „sowie ein Vermerk darüber, ob die Ausleihe zurückgegeben wurde“

du hast modelliert: „ein Vermerk darüber, ob das Exemplar zurückgegeben wurde“

ansonsten könnte man halt noch den Artikel modellieren (ist oben im Text auch fettgeschrieben)

Und ich bin mir nicht sicher, ob die Kardinalitäten stimmen (aber da bin ich mir wirklich nicht sicher) - gab ja soweit ich weiß auch noch verschiedene Notationen...

lg
 

Joseph100

Newbie
Ersteller dieses Themas
Dabei seit
Jan. 2021
Beiträge
6
Ja, an die Kardinalitäten müssen noch arbeiten, da das nur ein Teil des Modells war.

und ich habe es so gemacht mit dem Vermerk, weil eine Ausleihe ja von vielen Exemplaren bestehen kann. ich meine, wenn ich den Vermark an die Ausleihe hängen würde, dann würde das heißen dass der Kunde alle Exemplare auf einmal zurückgeben sollte, oder ist das nicht richtig??
 

benneq

Fleet Admiral
Dabei seit
Juli 2010
Beiträge
11.476
Kommt halt darauf an wie fein granular es werden soll:
Kann ein Kunde immer nur eine Sache ausleihen?
Kann ein Kunde mehrere Sachen gebündelt ausleihen? Will man das dann als eine Ausleihe modellieren? (Quasi wie ein Warenkorb bei Amazon, in dem mehrere Artikel sind)
Kann man nur die gesamte Ausleihe wieder zurückgeben? Oder auch nur Teile davon?
Kann man nur alles zusammen verlängern? Oder auch nur Teile davon?

Ich finde die Analogie zu einem Warenkorb im Online Shop eigentlich ziemlich gut, vor allem wenn man das Retour System mit einbezieht. Bei Amazon kannst du ja auch 5 Produkte in einer Bestellung haben, aber dann nur 2 davon zurückgeben. (Nur das Thema "Verlängerung" ist da natürlich nicht enthalten)

Das wäre dann grob so zu formulieren:
Ein "Kunde" (id, name) kann beliebig viele "Ausleihen" machen
Eine "Ausleihe" (id, kunde_id, zeitstempel) besteht aus beliebig vielen "Ausgeliehenen Exemplaren"
Ein "Ausgeliehenes Exemplar" (id, ausleihe_id, exemplar_id, von, bis, zurückgegeben) ist einem "Exemplar" zugeordnet
Ein "Exemplar" (id, name) entspricht einem realen Produkt
Ein "Exemplar" ist verfügbar, wenn es kein "Ausgeliehenes Exemplar" davon gibt, dessen "zurückgegeben" Feld nicht gesetzt ist.

"Ausleihe" ist dann quasi das Gegenstück zum Warenkorb (bzw. Bestellung) im Online Shop.

Im Prinzip könnte man auch auf "Ausleihe" verzichten, weil alle nötigen Daten auch in "Ausgeliehenes Exemplar" vorhanden sind. Aber ich würde die Tabelle trotzdem behalten, der logischen Struktur wegen. Und vielleicht will man irgendwann dort noch zusätzliche Informationen hinterlegen, die sich auf die Ausleihe selbst, aber eben nicht auf die einzelnen Exemplare beziehen.

Das Thema "Verlängerung" lässt sich dann zusätzlich noch anfügen als eigene Tabelle, die mit den "Ausgeliehenen Exemplaren" verknüpft ist. Damit man jedes Exemplar separat verlängern kann.
 
Zuletzt bearbeitet:
Top