In verschiedenen Open-Source-CMS ist mir aufgefallen, dass es eine separate Tabelle zum Zuordnen von zwei relationalen Tabellen gibt. Wie für Kategorien und Produkte gibt es eine separate product_category_mapping
Tabelle. Diese Tabelle enthält nur einen Primärschlüssel und zwei Fremdschlüssel aus den Kategorien und Produkttabellen.
Meine Frage ist, was sind die Vorteile dieses Datenbankdesigns, anstatt nur die Tabellen direkt durch Definieren eines Fremdschlüssels in einer der Tabellen zu verknüpfen? Ist es nur eine Frage der Bequemlichkeit?
quelle
Dies ist eine einfache Möglichkeit, viele-zu-viele- Beziehungen zu implementieren .
Betrachten Sie diese beiden Tabellen:
Wenn Sie ein
categoryID
Feld hinzufügenproduct
, kann jedes Produkt nur eine Kategorie haben. Aber wenn wir so etwas habenproduct_category_mapping
:dann können wir haben:
Produkt 1 gehört also zur Kategorie 1 & 2 und Produkt 2 gehört zur Kategorie 3 & 1, so dass viele Produkte zu vielen Kategorien gehören und viele Kategorien viele Produkte haben.
Wie tdammers schreibt , wird diese Tabelle oft als Link-Tabelle oder Bridge-Tabelle bezeichnet, und ich habe sogar gesehen, dass sie als HABTM-Tabelle von HasAndBelongsToMany bezeichnet wird, die anscheinend Ruby on Rails ist und für viele bis viele spricht. Und Wikipedia nennt es eine Kreuzungstabelle und hat noch einige weitere Namen dafür.
quelle
mappingID
Schlüssel. Ein häufiges Szenario besteht darin, den massiven Import / Export besser zu verfolgen, wenn die Junction-Tabelle viele Fremdschlüssel enthält.Der Grund für die Verwendung einer Zuordnungstabelle besteht darin, Doppelarbeit zu vermeiden. Probieren Sie eine andere Mapping-Technik aus. Ohne diese Daten können Sie doppelte Daten nicht verhindern.
Und das bringt eine 2-CD-Frage. Warum sollten Sie sich die Mühe machen, Doppelarbeit zu vermeiden? Sie müssen die Daten also nur einmal an einem Ort bearbeiten. Manchmal gibt es Leistungseinbußen, um Doppelarbeit zu vermeiden. In anderen Fällen steigt die Leistung, um Doppelarbeit zu vermeiden. Zum Beispiel ist es schneller, eine Dropdown-Liste mit normalisierten Suchwerten zu füllen, als unterschiedliche doppelte Werte in einer großen Tabelle auszuwählen.
quelle