Normalisierungs- / Verknüpfungsfrage
Nicolas
- datenbank
0 Andreas Dölling0 Nicolas0 Andreas Dölling0 Taste
0 Frank (no reg)0 fanelf.de0 Ilja
Hallo,
ich gerade etwas unsicher was mein Datenbankdesign angeht. Bestimmt könnt Ihr mir helfen.
Beispiel:
Ich habe eine Tabelle "Produkte". Dann habe ich eine weitere Tabelle "Produktgrundtypen". Um diese zu verknüpfen habe ich eine Zuordnungstabelle angelegt (m:n-Beziehung).
Nun habe ich den Produktgrundtypen wiederum in einer Tabelle "Produktvarianten" verschiedene Varianten zugeordnet, auch wieder durch eine einfache Zuordnungstabelle (m:n).
Nun ist meine Frage, ob ich die ID's der Varianten (Tabelle 3) auch noch mit den Produkten (Tabelle 1) verknüpfen muss, oder nicht.
Ist solch eine Dreiecksverbindung nötig, oder kann ich die selben Informationen auch so extrahieren?
Gruß,
Nicolas
Hallo,
kannst Du bitte mal ein konkretes Beispiel geben, insbesondere zu den Stichworten "Produktgrundtypen" und "Produktvarianten"?
Dann kann man sich besser vorstellen, worum es genau geht.
Ciao,
Andreas
Hallo,
kannst Du bitte mal ein konkretes Beispiel geben, insbesondere zu den Stichworten "Produktgrundtypen" und "Produktvarianten"?
Dann kann man sich besser vorstellen, worum es genau geht.
klar, kein Problem...
Also Produkte sind zum Beispiel Pumpen, Ventile, etc.
Grundtypen sind (für Ventile) dann z.B. Tankbodenventil, Absperrventil, Reinigungsventil...
Produktvarianten sind z.B. die Gehäuseformen (T,I,L,...).
Die Varianten gelten halt nur, wenn das Produkt ein Ventil ist und dann können es aber für die verschiedenen Grundtypen unterschiedliche Varianten sein.
Es gibt dann auch noch etwa 20 weitere Merkmale wie "Varianten", die ebenso abhängig sind (auch untereinander)...
Gruß,
Nicolas
Hallo,
noch eine Frage: besteht denn zwischen Produkten und Produkttypen tatsächlich eine n-n-Beziehung? Kann also ein konkretes Produkt tatsächlich zu mehreren Produkttypen gehören?
Und kann wiederum eine Produktvariante tatsächlich mehreren Produkttypen zugeordnet sein, also auch hier n-n?
Ciao,
Andreas
noch eine Frage: besteht denn zwischen Produkten und Produkttypen tatsächlich eine n-n-Beziehung? Kann also ein konkretes Produkt tatsächlich zu mehreren Produkttypen gehören?
Nein, da hast Du Recht, ein Produkt kann zwar mehrere Typen haben, aber ein Typ gehört nur zu einem Produkt.
Und kann wiederum eine Produktvariante tatsächlich mehreren Produkttypen zugeordnet sein, also auch hier n-n?
Hier ist es wirklich m:n!
Sali,
du sagst also:
jedes Produkt kann zu mehreren ProduktGrundTypen gehören
jeder ProduktGrundTyp kann mehrere Produkte haben
jeder ProduktGrundTyp kann zu mehreren ProduktVarianten gehören
jede ProduktVariante kann mehrere ProduktGrundTypen haben
Gegenfrage: Wieviele ProduktVarianten kann denn genau ein Produkt
haben? Ein Produkt mit 3 GrundTypen, die jeweils 3 Varianten haben,
hat dann selbst wieviele Varianten.
Der reale Zusammenhang zwischen Produkten, GrundTypen und Varianten
geht aus deiner Beschreibung nicht hervor. Du beschreibst lediglich
die bereits vorgenommene Implementierung (mittels M:N), die schon
mal nicht unbedingt der Realität entsprechen muss.
Adé
Frank
Hi,
du sagst also:
jedes Produkt kann zu mehreren ProduktGrundTypen gehören
jeder ProduktGrundTyp kann mehrere Produkte haben
jeder ProduktGrundTyp kann zu mehreren ProduktVarianten gehören
jede ProduktVariante kann mehrere ProduktGrundTypen haben
ja, soweit korrekt.
Gegenfrage: Wieviele ProduktVarianten kann denn genau ein Produkt
haben? Ein Produkt mit 3 GrundTypen, die jeweils 3 Varianten haben, hat dann selbst wieviele Varianten.
Das war ja genau meine Frage. Muss ich dies auch definieren, oder ergibt sich das irgendwie aus dem Zusammenhang? 3*3 = 9, oder? Wofür würde ich denn die Verbindung von Varianten zu Produkten brauchen?
Gruß,
Nicolas
Sali,
wie wäre es einfach mit
Tabelle ProduktVarianten
ProduktName | ProduktGrundTyp | ProduktVariante
----------------------------------------------------------
Glasschreibtisch 1 | Schreibtisch | L-Typ
Holzschreibtisch 1 | Schreibtisch | D-Typ
Couchtisch "Sven" | Beistelltisch | D-Typ
Esstisch "Ulf" | Esstische | U-Typ
Willst du alle D-Typ Varianten Produkte fragst du nur auf dieses Kriterium ab. Willst du nur Schreibtische als GrundTyp, dann selektierst du nur anhand dieses Kriteriums.
Das kannst du jetzt fröhlich Normalisieren.
Kompliziert, wenn du "Ulf" auch als Schreibtisch betrachtest, dann hast du eine M:N Beziehung, die du vom Produkt aus darstellen solltest.
Dito, falls "Sven" auch als L-Typ charakterisierbar wäre.
Eine M:N Relation zwischen Grundtyp und Variante empfiehlt sich,
wenn du beschränken willst, dass bestimmte GrundTypen nur zu bestimmten Varianten passen. Womit du dann vollständigerweise alle Beziehungen abgebildet hätttest.
Was sagt die Realität?
Ciao, Frank
Nun ist meine Frage, ob ich die ID's der Varianten (Tabelle 3) auch noch mit den Produkten (Tabelle 1) verknüpfen muss, oder nicht.
Ist solch eine Dreiecksverbindung nötig, oder kann ich die selben Informationen auch so extrahieren?
eine dreiecksverbindung deutet auf ein falsches design hin.
um ein design zu erstellen, mußt du erst einmal deine anforderung klären. wenn du eine hierarchische beziehung hast, ergeben sich gruppen in der höheren ebene. das sollte in einer 1:n beziehung stehen.
andererseits willst du vielleicht eine horizontale beziehung bearbeiten, oder die zusätzlichen merkmale befinden sich in einer flachen struktur.
solange du deine anforderung nicht klar gestellt hast, ist ein nachdenken über ein design (also umsetzung) nicht möglich.
male deine anforderung einfach mal visuell auf ein blatt papier. wahrscheinlich wird es dann klarer.
yo,
Ich habe eine Tabelle "Produkte". Dann habe ich eine weitere Tabelle "Produktgrundtypen". Um diese zu verknüpfen habe ich eine Zuordnungstabelle angelegt (m:n-Beziehung).
in den beiträgen ist noch nicht ganz klar, um was für eine art von beziehung es sich letzlich handelt. ich persönlich würde mal darauf tippen, das es eine 1:n beziehung ist aber anders als du geschrieben hast, nämlich das ein produkt nur einen grundtyp besitzt und ein grundtyp mehrere produkte haben kann. dann könnten zum beispiel mehrere ventile ein Tankbodenventil sein. aber ein ventil nicht gleichzeitig ein Tankbodenventil, Absperrventil oder Reinigungsventil, sondern nur eines von diesen. aber das ist spekulation von mir.
Nun habe ich den Produktgrundtypen wiederum in einer Tabelle "Produktvarianten" verschiedene Varianten zugeordnet, auch wieder durch eine einfache Zuordnungstabelle (m:n).
da steckt meiner meinung nach mehr als du uns verraten hast. da ist zum einen von gehäuseformen die reden und zum anderen von was ?
Nun ist meine Frage, ob ich die ID's der Varianten (Tabelle 3) auch noch mit den Produkten (Tabelle 1) verknüpfen muss, oder nicht.
Ist solch eine Dreiecksverbindung nötig, oder kann ich die selben Informationen auch so extrahieren?
meiner meinung nach nein. aber um eine besser aussage machen zu müssen, solltest du uns noch einmal "sehr ausführlich" deine abzubildene umgebung schildern und zwar am besten mit worten und weniger mit tabellen. dann gibt es hier sicherich viele leue, die dir ein paar sinnvolle tipps geben können. so ist einiges noch im unklare.
Ilja