Mysql Dvd Verleih

tee5

Grünschnabel
Hallo,

ich möchte eine Client-Server DVD-Verleih in C# schreiben, dazu benötige ich eine SQL-Datenbank. Da ich mit Relationalen-Datenbanken noch nicht so fit bin, wollte ich fragen ob mir jemand vielleicht ein paar Tips geben könnte wie man es besser macht.

Es soll einen Adminstrationsteil und einen Kundenteil haben. Es können maximal 3 DVDs gleichzeitig ausgeliehen werden. DVD's /Kunden/Administratoren können angelegt, inaktiv, gesperrt werden. etc.

Hier mal mein bisheriger Datenbankentwurf, wäre nett wenn mir jemand damit weiterhelfen könnte. z.B. weiß ich nicht ob das mit den Benutzern aus denen sich Administratoren und Kunden ableiten gut ist oder ob man die Tabelle Benutzer nicht einfach weglassen kann und Kunden und Administratoren einfach so auf AUSLEIHE eine Verbindung bekommen. Desweiteren bin ich mir nicht so sicher ob überall die 3. Normalisierung eingehalten wird. Ab auch schon öfters gelesen, dass man es damit auch übertreiben kann.

Hier das Diagramm:
http://www.foruni.de/upload/save/p_1198251557.png
 

Anhänge

  • dvd-verleih.jpg
    dvd-verleih.jpg
    42,2 KB · Aufrufe: 117
Hallo,

dein Fall klingt nach dem Klassiker aus der Uni ;) (Erinnerungen werden wach).

Zu deiner Frage ob es in der 3. NF ist: Aus meiner Sicht Nein.

Ich würde folgende Tabellen zur Lösung vorschlagen:

T_DVD (ID_DVD, DVD_TITEL,DVD_NAME,DVD_KAUFDATE .... )
in dieser Tabelle sollte jede DVD eindeutig sein

T_KUNDE(ID_KUNDE,NAME,ANSCHRIFT, etc)
in dieser Tabelle sollten alle Kunden eindeutig sein

T_AUSLEIHE (ID_KUNDE,ID_DVD, AUSLEIH_AM, AUSLEIHBIS ...)
hier werden je Kunde die DVD gespeichert die er geliehen hat.
Gibt es für einen Kunden 3 Zeilen in der Tabelle dann hat er schon 3 DVDs geliehen.

Für die Fremdschlüssel :
T_KUNDE <--- T_AUSLEIHE ---> T_DVD

Den Admin würde ich mit in die Tabelle Kunden packen und über ein Flag steuern "isadmin" yes/no. Sparst Du eine Tabelle. Und die Rechte steuerst Du ja in der Anwendung.

Zur 3. NF gern wird es hier gesehen, dass wie du es bei der Tabelle GENRE gemacht hast alles in extra Tabellen kommen. Dann kann man auch die Anschrift so auslagern Bankverbindungen etc.

Hier ist die Kunst das wichtige vom unwichtigen zu trennen: Wenn der Kunde zB nur eine Anschrift haben darf dann würde ich die immer mit am Kunden schreiben.

Wenn er aber 2 oder mehr haben darf macht es sein einen Anschriftenstamm aufzubauen. Gleiches gilt für Bankverbindungen.

Die Tabelle Benutzer verstehe ich nicht wenn die Benutzerdaten teile vom Kunden sind, dann sollten Sie auch an den Kunden (also Logindaten etc)

Vielleicht hilft dir das ja weiter
 
Zurück