Produktdatenbank - Welche Struktur wäre besser?

... komplette Frage anzeigen

4 Antworten

Ich glaube, du solltest dich grundlegend nochmal mit einer Datenbankstruktur auseinandersetzen. Ein gutes Tutorial: http://www.peterkropff.de/site/mysql/struktur.htm

Wenn du eine ordentliche Strukturierung hast, dann brauchst du auch keine 60 oder 100 Spalten. In deinem Fall brauchst du wahrscheinlich nicht mal mehr als 5.

Leg einfach eine Tabelle an, wo deine Produkte drinne stehen. Jedes Produkt bekommt eine eindeutige ID.
Die Tabelle könnte ungefähr so aussehen:

ID | ProduktName

Nun legst du eine neue Tabelle an, wo die Spezifikationen drinne stehen. Hier musst du die Spezifikation eben dem Produkt zuweisen.

Diese Tabelle könnte ungefähr so aussehen:

ID | ProduktID | SpezifikationsName | value

Nun trägst du in die erste Tabelle ein Produkt (meinetwegen Produkt A ein). Die Datenbank gibt dem Produkt eine eindeutige ID (Serial). Mit dieser ID machst du einen Eintrag in der 2. Tabelle. Das könnte dann ungefähr so aussehen:

Produkttabelle
ID | ProduktName
1 | A
2 | B

Spezifikationstabelle
ID | ProduktID | SpezifikationsName | value
1 | 1 | Prozessor | I7
2 | 1 | Grafikkarte | Nvidia
3 | 2 | Prozessor | I5
4 | 2 | Soundkarte | Realtek

Ich hoffe, dass das einigermaßen verständlich war.

Grüße

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Evergreen89
21.03.2016, 18:14

Hallo und danke erst einmal für deine umfassende Antwort.

Das meine Datenbankstruktur nicht das Beste ist, ist mir bewusst. Damals hatte ich eben noch nicht so viele Erkentnisse als Heute. Desshalb möchte ich es ja ändern.

Deine Lösung ähnelt ja der, die ich bereits vorgeschlagen habe. Nur eben, das es eine zusätzliche SpezifikationsNamen-Tabelle gibt die mit der Spezifikationstabelle verknüpft ist. Das würde dann so aussehen.

Produkttabelle
ID | ProduktName
1 | A
2 | B

Spezifikationstabelle
ID | ProduktID | SpezifikationsId | value
1 | 1 | 1 | I7
2 | 1 | 2 | Nvidia
3 | 2 | 1 | I5
4 | 2 | 3 | Realtek

Spezifikationstabelle
ID | SpezifikationsName
1 | Prozessor
2 | Grafikkarte
3 | Soundkarte
0

SQL und daten als objekt kann auch zusammenpassen.

da du auch PHP als tag hast, so als idee: 1 sql-tabelle, alle eigenschaften in 1 spalte - inhalt: ein JSON-string, der die geräteattribute als als objekt enthält:

{ "attribute1": "value1", "attribute2": "value2", ... }
(eventuell auch strukturiert)

diese könntest du bei der anzeige eines gerätes direkt in ein <script>-teil der webseite überführen. dortselbst dann dynamisch mit js ein anzeige/eingabe-formular erstellen. 

Antwort bewerten Vielen Dank für Deine Bewertung

Eine Tabelle mit 60 Spalten kann nicht richtig designt sein.

Lege eine Tabelle mit Features an und eine Verweistabelle, die einem Produkt einen Satz von Features zuordnet.

Zumindest wäre ohne Detailwissen das mein erster Ansatz.

Antwort bewerten Vielen Dank für Deine Bewertung

Solang du auf eine SQL Datenbank setzt ist das eine super Lösung!

Ohne SQL haust du einfach alles in ein Object was du brauchst und speicherst es.

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?