2016-07-17 28 views
0

Ich habe eine Tabelle mit dem Namen Book und eine Tabelle mit dem Namen Author. Um Autoren mit Büchern zu verknüpfen, habe ich eine andere Tabelle mit dem Namen AuthorOfBook erstellt, wobei Priority ein ganzzahliger Wert ist, der hilft, Autoren jedes Buches in die richtige Reihenfolge zu bringen (1, 2, 3, ...).Was ist der beste Weg, Autoren von Büchern in der Datenbank zu speichern?

Before

Ist es gute Lösung? Zuerst dachte ich, dass das Speichern von mehr Zahlen als ganze Strings helfen würde, Platz zu sparen, aber dann habe ich ein Binärfeld mit dem Titelbild des Buches hinzugefügt, so dass es jetzt keine Rolle spielt. Sollte ich AuthorOfBook Tabelle entfernen und Fremdschlüssel BookId zu Author Tabelle hinzufügen? Wenn ich es tue, werden meine Abfragen einfacher aussehen und ich werde nicht so viele Tabellen brauchen, aber es wird schwieriger sein, die Autoren zu verwalten.

After

Und was ist mit meiner Priority Spalte? Gibt es einen Kodierungsstandard dafür?

+0

Die erste Lösung ist richtig. Bleib dabei. – Renzo

+0

Sie können zweite Lösung nur in dem Fall verwenden - wo Sie sicher sind, dass das Buch nur einen Autor haben kann. Aber fügen FK des Autors zu der Buch-Tabelle hinzu – Fabio

+0

AuthorOfBook Tabelle ist, was Ihre Design-Unterstützung für Fall hinzufügt "Ein Buch kann von mehr als einem Autor geschrieben werden". Wenn Sie es fallen lassen, werden Sie diese Viele-zu-Viele-Beziehung verlieren. – x82

Antwort

1

Ich denke, die erste Option ist definitiv die beste und korrekteste, wenn Sie Priorität haben müssen. Priorität ist eine Eigenschaft der Beziehung, nicht der Autor, also sollte es nicht auf dem Autor sein. Was ist, wenn ein Autor Priorität 1 für ein Buch und 5 für ein anderes Buch hat? :)

+0

Wenn ich die zweite Methode verwendet habe, könnte es mehr als einen Datensatz in der Author-Tabelle mit den gleichen Autorennamen geben. –