Hilfe bei Umsetzung von Abhängigkeiten

qsrs

Erfahrenes Mitglied
Hallo,

schreibe gerade an einem kleinen Script, welches primär Lizenzen verwalten soll. Es gibt zwei MySQL-Tabellen. Eine mit den Kunden welche auch die dazugehörige Lizenznummer beinhaltet, die andere mit den Produkten.

Ich möchte dem Kunden die Möglichkeit zur Verfügung stellen, sein erworbenes Produkt jederzeit herunter zu laden. Der Kunde gibt also die Lizenznummer ein, und es sollen ihm alle erworbenen Produkte, die er auch herunterladen kann, angezeigt werden.

Das Problem:
Ich bin mir nicht sicher, wie ich dem Kunden zuordnen soll, dass er mehrere Produkte erworben hat. Im Moment habe ich in der Tabelle der Kunden eine Spalte "produkte", in welcher alle Produkte stehen, die der Kunde erworben hat. Da steht u.a. auch die Tabellen-ID des Produktes. Wenn ich nun eine Abfrage starte, z.B.

SELECT * FROM `produkte` WHERE `produkt_name` LIKE \"%".$array[produkte]."%\" ...

und in [produkte] mehrere Einträge stehen, schlägt es deshalb schon fehl, weil nicht alle Produkte abgefragt werden.

Meine zweite Überlegung war, in der Tabelle "produkte" einfach für jeden Kunden eine Spalte zu erstellen und darin einfach einen Wert true bzw. false abzulegen. Danach kann ich relativ einfach abfragen ob der Kunden das Produkt erworben hat oder nicht. Dann bekommt diese Tabelle jedoch sehr viele Spalten, wird unübersichtlich und ich bin mir nicht sicher, ob das so üblich ist und es nicht doch eine effektivere Lösung gibt.

Für Antworten bin ich dankbar.
 
Schonmal was von Normalformen beim Datenbank-Design gehört? Solltest du dir mal anschaun.
Denn dein jetziges Datenbank-Design verstößt nämlich schon gegen die 1. Normalform.
Man fasst nicht mehrere Datensätze zusammen, so wie du es mit den Produkten in der Kundentabelle handhabst (zumindest habe ich das jetzt so verstanden).

Ich würde es wie folgt machen:

[tblProdukte]
produkt_id
produkt_name
...

[tblKunden]
kunden_id
kunden_name

[tblProKu]
kunden_id
produkt_id

In der Tabelle [tblProKu] wird nun gespeichert, welche Produkte ein Kunde hat.
 
Dass das mit mehreren Werten pro Zelle nicht das Wahre sein kann, dachte ich mir fast schon. Dein Vorschlag ist genau das, was mir gefehlt hatte. Danke.
 
Hallo,

ich habe jetzt eine Tabelle, in welcher die User-ID und die Produkt-Id sowie die Tabellen-Id abgelegt sind. Jetzt möchte ich mit einer Abfrage realisieren, dass alle Produkte angezeigt werden, die dem Kunden zugeordnet sind. Wenn ich nur die Tabelle [tblProKu] abfrage, dann bekomme ich ja nur die Ids. Bis zu dieser Abfrage ist noch alles klar. Wie kann ich jedoch mit diesen IDs gleichzeitig die Ids in der Tabelle, der Produkte abfragen? Sollte das über eine Schleife realisiert werden? Meine bisherige Abfrage wie folgt:

PHP:
 $sql = "SELECT * FROM `kunden_produkte` WHERE `id` = '$kunden_id'"; 
$query1 = mysql_query ($sql, $dbconnect);
...und dann noch der Rest zur Darstellung.
 
Vielen Dank für deine Hilfe. Das hat mich wirklich einen großen Schritt weitergebracht. Da wäre ich alleine wohl nicht darauf gekommen.
 
Zurück