2012-03-29 17 views
0

Ein Benutzer hat eine Liste von Büchern, aber nur ein Buch kann auf seinem Profil angezeigt werden, da er es als sein Lieblingsbuch auswählen sollte. Wie entwerfe ich mein Schema, um ein Buch als "das Buch" zu definieren?Datenbankentwurf zum Auswählen eines Hauptelements aus einer Liste

Wenn ich ein Feld IsFavourite in der Buch-Entität habe, dann können alle Bücher als Favoriten markiert werden. Wenn ich einen Favoriten auf 1 setze, muss ich sein Lieblingsbuch abrufen und die Markierung als Favorit entfernen (3 Datenbankanrufe).

Wenn ich eine Präferenzeinheit habe, die einen Bezug zu einem Buch hat, kann ich dieses Buch einfach als Favorit festlegen;

User -<Preferences>- Book >- User 
User -< Book 

Wie erreichen Sie solche Dinge? Gibt es eine andere Methode, die mir fehlt? Welches ist das Beste? Ich verwende Code-First-Entity-Framework, also kodiere ich meine Modelle.

Antwort

0

Drei Tische/Modelle

Users 
Books 
UserBooks (join table, user id and book id, and favorite flag) 

Es gibt eine Eins-zu-viele Assoziations zwischen den Nutzern und Bücher.

Anstelle der Lieblingsflagge in der dritten Tabelle könnten Sie ein Präferenzmodell mit Bezug auf Benutzer (und ihr Lieblingsbuch) haben, aber es hängt davon ab, welche anderen Dinge Sie dort setzen möchten, ob das ratsam ist oder wie würde aussehen.

Verwandte Themen