2016-06-26 15 views
0

Ich bin kein MySQL-Experte und muss ein ziemlich komplexes db für mein Level entwerfen.Lieferanten-Kunden-Beziehung in der gleichen Tabelle

Das Problem, das ich jetzt eine Lieferanten-Kunden-Beziehung in Sitz in der gleichen Tabelle (Makro Kategorien von Unternehmen) bestehen gegenüber bin:

id name   mega_id macro_customer_id 
------------------------------------------ 
1  Furniture  2   2,4,5,35 

Ich mag die repräsentieren

Macro Tisch Tatsache, dass Makroeintrag mit ID 1 andere Makrofirmen (die ihre Kunden sind) in derselben Tabelle beschrieben werden.

Welcher ist der beste Weg, dies darzustellen?

Danke!

+2

[** Wird eine begrenzte Liste in einer Datenbankspalte wirklich so schlecht gespeichert? **] (http://stackoverflow.com/questions/3653462/is-storing-a-limited-list-in-a-database -column-really-that-bad) – 1000111

+1

Sie hätten eine separate Tabelle macro_customers, deren Zeile aus der ID des Makros und der ID seines Kunden besteht. – Strawberry

+2

Nun, nicht die Art und Weise, wie sie angezeigt wird. Shoot für Assoziationstabelle oder Junction-Tabellen http://StackOverflow.com/A/32620163 – Drew

Antwort

0

Es hängt davon ab: Wir alle Normalisierungsformen zu verwenden, verwenden, über die Verwendung der Daten jedoch (wie @ 1000111 angegeben) abhängig, können Sie bei bestimmten Teilen dieser Normalisierung Diskussion anders aussehen wählen:

Der normale Modell hierfür wäre:

Table userData(id,name) 
    - 1:N table linkTable(id,macro_customer_id) 
     - N:1 table metaData(macro_customer_id,value) 

Oder:

Table userData(id,name) 
    - 1:N table linkTable(macro_customer_id,id) 

die große Frage ist jedoch, wie die Daten verwendet werden. Wenn Daten nur für diesen Benutzer bestimmt sind und nicht auf andere Weise abgefragt werden (kein wo oder eine Gruppe), ist die Speicherung als serialisierter String ein vollständig gültiger Ansatz.

0

Die Beziehung zwischen Entitäten in einem RDBMS sollte relational gespeichert werden. Fragen Sie sich, ob Ihnen diese Beziehung in Ihrer Datenbank wichtig ist - müssen Sie Abfragen schreiben, die macro.id mit einer Tabelle/Zeilen verknüpfen, die durch IDs in macro.macro_customer_id dargestellt werden? Wenn ja, dann müssen Sie diese Beziehung in einer separaten Tabelle (Eins-zu-Viele oder Viele-zu-Viele) speichern.