0

OK hier ist das Szenario. Ich habe Tische wie Filme, Bücher, TV_SHOWS. Alle diese Tabellen können viele Genres haben, und jedes Genre kann viele verschiedene Dateien aus jeder Tabelle haben. Das Problem, mit dem ich konfrontiert bin, ist folgendes:Mehrere viele zu viele für Genre

In diesem Szenario beziehe ich mich auf die Filme MOVIE, TV_SHOWS und BOOKS TABLES als Kategorien.

Sollte ich MOVIES GENRE, BOOKS GENRE und TV_SHOWS GENRE-Tabellen, eine für jede Tabelle machen? Oder gibt es eine Möglichkeit, alle Tabellen mit der einzelnen GENRE-Tabelle in einer Beziehung zwischen vielen und vielen Stilen zu verknüpfen, ohne die Einheitlichkeit der Tabelle GENEID IN THE GENRE zu opfern?

Jetzt habe ich die anderen Fragen, die auf diese berühren, und sie haben alle ein klares NEIN. Anscheinend gibt es keine Datenbank, die diesen Stil von vielen zu (vielen) vielen Beziehungen aufnehmen kann. Aber ich versuche herauszufinden, ob es eine Alternative dazu gibt, oder soll ich einfach mehrere GENRE-Tabellen erstellen?

Die einzige Sache, die ich denke, dass das funktionieren könnte, ist, eine fremde GenreID Spalte in jeder Kategorietabelle zu haben. Und dann haben Sie eine Beziehung von vielen zu vielen mit der GENRE-Tabelle für jede der Kategorietabellen. Alle Kategorietabellen werden über eine Join-Tabelle mit dem Namen CATEGORY_GENRE verknüpft, die einen zusammengesetzten Primärschlüssel aus den Gene- ID-Spalten des Fremdschlüssels aus allen Kategorietabellen und den Primärschlüssel GENERID aus der GENRE-Tabelle enthält. Das einzige Problem dabei ist, dass ich nicht denke, dass eine Seite einer Viele-zu-Viele-Beziehung mit einem Fremdschlüssel verknüpft werden kann, beide Seiten der Beziehung müssen durch ihre Primärseiten verknüpft sein.

Diese ganze Sache einfacher wäre, wenn die Kategorie Tische auf der vielen Seite eines one to many Beziehung waren aber leider manchmal ein Film oder Buch hat mehr als ein Genre wie Fantasy, Science Fiction usw.

Leider Ich denke, der einzige Weg, dies zu tun, ist, mehrere GENRE-Tabellen zu erstellen, aber ich möchte nur einige Meinungen, bevor ich weitermachen und es tun werde.

+1

Können Sie erklären, welche Kategorien in Ihrem Beispiel bedeutet, bitte? –

+0

@BobSalmon siehe meine Bearbeitung. Die Kategorien sind die Filme MOVIE, TV_SHOWS und BOOKS TABLES. – Christopher

Antwort

1

sollten Sie erwägen, eine polymorph Assoziation mit, eine speziell Tabelle zwischen verschiedenen „Medien“ join (books, tv_shows und movies) und Ihren genres Tisch. Diese media_genres Verbindungstabelle muss sowohl die genre_id, die media_id, als auch die media_type (z.B. "Buch", "tv_show", "Film") beschreiben.

Hier sind einige alternative Ansätze: https://stackoverflow.com/a/441111/3390061

+0

Das ist ein genialer Link nathanallen. Ich schätze das sehr, weil ich diesen Beitrag mit den von mir verwendeten Suchbegriffen nicht gefunden habe. Ich denke, ich werde den Ansatz mit einer Genre-Tabelle versuchen, die für jede Kategorie-Tabelle eine Spalte enthält, die alle Nullen zulässt. Dann wird in mindestens einer Spalte der Fremdschlüssel benötigt. – Christopher