Frage

Ich habe derzeit eine Datenbank mit zwei Tabellen bezeichnet, die Artikel und Tags genannt werden. Damit Artikel in mehreren Kategorien enthalten sind, habe ich viele bis viele Beziehung. Ist es ein Fehler, ein solches Design in Bezug auf die Leistung zu haben? Oder sollte ich die Beziehung zwischen diesen beiden Tabellen entfernen und eine dritte Tabelle als Brücke (Articlestags) hinzufügen?

War es hilfreich?

Lösung

Es ist von Natur aus nichts falsch daran, eine viel zu viele Beziehung zu haben, Sie müssen nur eine erstellen Übergangstabelle (Wie es sich anhört, worauf Sie sich beziehen articlesTags) um diese Beziehung zu erleichtern.

Andere Tipps

Sie sehen den Unterschied zwischen einem konzeptionellen Datenbankdesign (der N: n -Beziehung) und ihrer physischen Realisierung. Egal wie Sie Ihre N: n -Beziehung modellieren, Sie benötigen die oben genannte Junction -Tabelle, damit sie funktioniert.

Es ist nichts Falsches daran, eine reale Beziehung zu modellieren, die der realen Welt so nahe wie möglich ist wie eine allgemeine Aussage. Klarheit ist König.

Wenn es um eine Leistungsfrage in jedem System geht, läuft die Antwort normalerweise auf "es hängt davon ab" ab.

Wenn Ihr Leistungsproblem mit Schreibvorgängen zusammenhängt, ist eine hoch normalisierte Struktur am besten und Sie möchten diese Verbindungstabelle. Am Ende schreiben Sie viel weniger Daten, und das kann die Dinge erheblich beschleunigen (obwohl Sie diesen Vorteil verbrennen können, indem Sie nach dem Erstellen der Einsätze suchen müssen). Das Lesen der einzelnen normalisierten Tabellen kann auch sehr schnell sein.

Wenn Ihr Problem mit analytischen Lesevorgängen zusammenhängt, ist eine Denormalisierte Struktur am besten. Verbindungen können sehr leistungssintensiv sein, wenn die Tische groß sind und die Indizes ausbreiten. Sie werden viel Platz opfern, um viel Zeit zu gewinnen.

Im Allgemeinen möchten Sie die Besonderheiten Ihrer Situation untersuchen und die Vor- und Nachteile jedes Ansatzes abwägen, bevor Sie sich für eine Lösung entscheiden. Persönlich habe ich es immer besser gefunden, mich in den Anfangsphasen auf Klarheit zu konzentrieren und die Leistung zu refaktor, wenn ich später ein Problem entdecke.

In einem Beziehungsmodell existiert eine Viele-zu-Viele-Beziehung, es ist nur eine Abstraktion des Geistes. Wenn Sie es implementieren, gibt es eine Tabelle von Articles_to_Tags, in der Sie haben:

fk_article (Integer) fk_tag (Integer)

vglhttp://en.wikipedia.org/wiki/Many-to-many_(data_model)

Es gibt kein Problem, viele zu vielen Beziehungen zu verwenden. Es ist oft erforderlich.

Und ja, es ist nicht möglich, viele bis viele Beziehungen zu erstellen, ohne eine dritte Tabelle zu verwenden.

Es gibt kein Problem damit, dass die Daten eine viel zu viele Beziehung haben, aber Sie möchten, dass eine dritte Tabelle sie darstellt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top