Ihre erste Version zum Ausdruck bringt, dass die Bilder unabhängig von Produkten existieren können, und dass ein Bild mit mehr als einem Produkt verknüpft werden . Es erlaubt also viel Flexibilität.
Der einzige fragliche Teil der ersten Version ist die Galerietabelle. Eine Galerie ist mit nur einem Bild verknüpft. Ein Bild kann also in mehr als einer Galerie enthalten sein, aber eine Galerie besteht aus nicht mehr als einem Bild. Das ist nicht, was wir eine Galerie nennen würden, aber ich kenne Ihre spezifischen Anforderungen nicht.
Der gemeinsame Begriff der Galerie würde in
Gallery
id
name
Gallery_item
id
gallery_id
image_id
oder ausgedrückt werden, wenn ein Bild nur in einer Galerie enthalten sein können, Gallery_item
könnte weg gelassen werden, und die gallery_id
hinzugefügt Image
.
Die zweite Alternative verknüpft ein Bild mit höchstens einem Produkt. Abhängig von einer not null
Beschränkung auf product_id
müsste ein solches Bild mit einem Produkt verknüpft werden oder nicht. Das gleiche Bild wird jedoch nie mit mehr als einem Produkt verknüpft. Wenn Sie das benötigen, müssen Sie dasselbe Bild zweimal erstellen, was eine unerwünschte Redundanz bedeuten würde. Das ist also der richtige Weg, wenn Sie sicher sind, dass Sie nie dasselbe Bild für mehr als ein Produkt benötigen.
Die Galerie, in der zweiten Alternative, ist nicht mit den anderen beiden Tabellen verbunden. Natürlich könnten Sie img_url
als gemeinsamen Schlüssel verwenden, um die Produktbilder und das Galeriebild miteinander zu verknüpfen. Aber noch einmal, eine Galerie wird nicht mehr als ein Bild enthalten, deshalb bin ich verwirrt über ihren Zweck.
Err kann mir zumindest sagen, warum vorher diese Frage abstimmen? –
Abgesehen von einer anderen Tabelle (Bild) gibt es irgendwelche relationalen Unterschiede zwischen den beiden Schemas? Ich denke, die Antwort ist "benutze die, die für dich funktioniert". Würde es sich lohnen, einige Testdaten zu erstellen, damit Sie überprüfen können, ob jedes Schema die gewünschten Daten enthält? – halfer
Kann ein Bild nicht zu einem bestimmten Produkt gehören? –