2016-11-09 4 views
1

Wie wird eine dynamische Selbstreferenzierung der Viele-zu-Viele-Beziehung aufgebaut?Dynamische Selbstreferenzierung von Viele-zu-Viele-Beziehung

Ich habe ein Problem, das ich nicht überwinden kann.

Ich habe Tabellen:

Types: 
id 
name 

Products: 
id 
name 
type_id 

product_products 
parent_id 
child_id 

Nehmen wir an, dass wir mehrere Produkte in der Produkttabelle haben. Einige von ihnen sind:
(Name nicht relevant ist)

CB1234 - products.type_id -> cardboard 
CBB999 - products.type_id -> cardboardbox 
CBP321 - products.type_id -> paper 

TSH123 - products.type_id -> tshirt 
FAB321 - products.type_id -> fabric 
THR321 - products.type_id -> thread 

Jetzt möchte ich, dass product_product Beziehung sagen, dass ich cardboardbox haben, die aus Pappe und Papier Arten von Produkten hergestellt wird. In Pappkarton-Karton und Pappkarton-Papier-Beziehung möchte ich definieren, wie viel Prozent des Produkts verwendet wird (Konsistenz), um Pappkarton Produkt zu machen (sagen wir 80/20, nicht relevant)

Ich habe verschiedene Fälle für verschiedene Produkte. Jetzt möchte ich die Beziehung zwischen T-Shirt-Stoff und T-Shirt-Faden definieren, aber statt Konsistenz möchte ich Stoff- und Fadenkosten für dieses Produkt definieren.

Die Anzahl der Produkte und Produktparameter ist nicht festgelegt. Es könnte 500 verschiedene Produkte und verschiedene Beziehungen zwischen ihnen geben. Was sind gute Praktiken für dieses Problem? Es gibt nur wenige Möglichkeiten, die ich kam mit

  1. Viele handgemachte many-to-many-Beziehung Tabellen
  2. Viele, viele Spalten Tabelle product_product

In beiden Fällen gibt es Dinge, die ich don Ich mag das Design nicht, aber vielleicht sind das die richtigen Methoden, und vielleicht habe ich meine Datenbank von Anfang an falsch gemacht.

Antwort

0

1) wäre der Weg zu gehen - nicht sicher, ob es wirklich „viel“ wäre, wenn Sie alles geklappt Sie von

product_product_consistency product_product_cost (könnte dies stattdessen dargestellt werden, wie product_cost, dann berechnet speichern wollte product_product_consistency oder so etwas?)

Was ist die endgültige Verwendung, welche Art von Fragen möchten Sie die Daten fragen?

+0

Vielen Dank für Ihren Kommentar. Ich denke, dass Sie Recht haben könnten. "Was ist die endgültige Verwendung, welche Art von Fragen möchten Sie die Daten fragen?" - Antwort ist alle von ihnen. Ich weiß nicht, wie viel oder welche Art von Fragen in Zukunft kommen könnte. Deshalb muss es so dynamisch wie möglich sein. –

+0

Eine sehr generische Option wäre etwa eine product_relationship-Tabelle mit einem relationation_type, aber ich denke, dass die Verwendung einer Tabelle für viele Beziehungen der Funktionsweise relationaler Datenbanken entgegensteht und nur Probleme aufhält. Ein klarer Zweck für jede Tabelle (entweder ein "Objekt" oder eine Beziehung zwischen Objekten) ist die Art, Dinge zu tun. –

Verwandte Themen