Frage zu Datenbankdesign

baserider

Well-known member
ID: 174417
L
10 März 2007
682
23
Hi,

folgendes Problem:

es gibt Produkte und Tarife. Jede Kombination aus Produkt und Tarif hat einen Preis. Der Preis ist je nach Kategorie unterschiedlich.

Meine Tabelle sieht derzeit so aus:

id | produkt | tarif | preis | kategorie

wenn es nun mehrere (z.B. 5) Kategorien gibt, dann steht die kombination aus Produkt und Tarif auch mehrmals (also 5 mal) in der DB. (redundant?) Kann man da noch was verbessern an der Struktur oder wäre das so korrekt?
 
ich würde das so lösen:

Kategorie ist vom Produkt abhängig
+----+--------+----------+
|PID |Produkt | Kategorie |
+----+--------+----------+

Der Preis ist von Produkt und Tarif abhängig
+--+----+----+------+
|ID | PID| TID | Preis |
+--+----+----+------+

Alles was von Tarif abhängig ist hier rein:
+----+-------------+
|TID | Beschreibung|
+----+-------------+


Mein Vorschlag der mir spontan eingefallen ist, ist bestimmt noch verbesserungswürdig und nur ein Ideenanstoß.
 
hi,

danke für deinen Vorschlag. hat mir gut weitergeholfen.

also die kategorie ist eigentlich nicht vom produkt abhängig, da es immer eine kombination aus produkt und tarif gibt.

die kategorien sind hier neuvertrag und verlängerung.

wenn ich ein produkt mit einem tarif verlängere gibts nen anderen preis als wenn ich das gleiche produkt und gleichen tarif neu abschliesse.

jede kombination kann somit in mehreren kategorien vorkommen.

aber es würde doch dann passen wenn ich aus deiner ersten tabelle die kategorie entferne und in die mittlere Tabelle einfüge oder?

Es würde also noch ne Tabelle kategorien geben:
KID | Bezeichnung

also würde es dann so aussehen:

ID | PID | TID | KID | Preis

die Einträge:

1 | 200 | 10 | 1 | 5
2 | 200 | 10 | 2 | 10

Wenn es noch Verbesserungen gibt, bin immer offen dafür.
 
ich würde es so machen:

Verträge:
vertrag_id | product_id | category_id | price
1 | 2 | 3 | 56.00
2 | 2 | 1 | 78.00
3 | 1 | 1 | 40.76

Produkte:
product_id | name | whatever
1 | Nokia 6300 | muh123
2 | Iphone 3G | muh1234
3 | Sony Ericsson K700i | muh12345

Kategorie:
category_id | type | additional
1 | Neuvertrag | NULL
2 | Verlängerung | NULL
3 | Neuvertrag | abgeschlossen vor 06.2008
4 | Verlängerung | abgeschlossen vor 06.2008
 
ich würde es so machen:

Verträge:
vertrag_id | product_id | category_id | price
1 | 2 | 3 | 56.00
2 | 2 | 1 | 78.00
3 | 1 | 1 | 40.76

Produkte:
product_id | name | whatever
1 | Nokia 6300 | muh123
2 | Iphone 3G | muh1234
3 | Sony Ericsson K700i | muh12345

Kategorie:
category_id | type | additional
1 | Neuvertrag | NULL
2 | Verlängerung | NULL
3 | Neuvertrag | abgeschlossen vor 06.2008
4 | Verlängerung | abgeschlossen vor 06.2008

also die letzten beiden tabellen würd ich auch so machen.
Meinst du mit Verträgen die Tarife?... jeder Tarif kann aber mit jedem produkt kombiniert werden und nicht nur ein Tarif gehört zu einem Produkt
 
also die letzten beiden tabellen würd ich auch so machen.
Meinst du mit Verträgen die Tarife?... jeder Tarif kann aber mit jedem produkt kombiniert werden und nicht nur ein Tarif gehört zu einem Produkt

ich habe ka, was deine Beschreibung bedeuten soll :biggrin:

Verträge sind Tarife, also wenn ich einen Vertrag abschließe, ist das ja ein Tarif (Handy Prepaid, Handy Tarif A, Handy Tarif B).

In der Datenbank wird dann ein Produkt (Tabelle Produkte) mit einem Tarif (Tabelle Kategorie, da vorher noch von Kategorien die Rede war) verknüpft (Tabelle Verträge) und das ergibt dessen Preis, so habe ich das Problem verstanden, sollte es anders sein, solltest du es vllt besser erklären. :mrgreen:
 
ich habe ka, was deine Beschreibung bedeuten soll :biggrin:

Verträge sind Tarife, also wenn ich einen Vertrag abschließe, ist das ja ein Tarif (Handy Prepaid, Handy Tarif A, Handy Tarif B).

In der Datenbank wird dann ein Produkt (Tabelle Produkte) mit einem Tarif (Tabelle Kategorie, da vorher noch von Kategorien die Rede war) verknüpft (Tabelle Verträge) und das ergibt dessen Preis, so habe ich das Problem verstanden, sollte es anders sein, solltest du es vllt besser erklären. :mrgreen:

mit den letzten Tabellen meine ich deine Produkttabelle und kategorietabelle.

Aber Tarif ist ja nicht gleich Kategorie. Die Kategorien sind in dem Fall Neuvertrag und Verlängerung.

Tarife sind dann eben die Tarife der Anbieter. (Superflat, Zehnsation usw.)

Jedes Produkt hat nun in verbindung mit dem tarif und der kategorie nen anderen Preis.

Also Nokia N95 (Produkt) + Superflat(Tarif) von Vodafone als Neuvertrag(Kategorie)

hat nen anderen Preis als

Nokia N95 (Produkt) + Superflat(Tarif) von Vodafone mit Verlängerung(Kategorie)
 
Jedes Produkt hat nun in verbindung mit dem tarif und der kategorie nen anderen Preis.

Also Nokia N95 (Produkt) + Superflat(Tarif) von Vodafone als Neuvertrag(Kategorie)

hat nen anderen Preis als

Nokia N95 (Produkt) + Superflat(Tarif) von Vodafone mit Verlängerung(Kategorie)

wie definierst du Produktpreis?
Ich habe ja einmal den Preis für das Handy (bei Vertrag günstiger als Prepaid) und einmal die Vertragskosten (Grundgebühr, Mindestumsatz usw).

Weil das definiert schon wie das Tabellendesign aussehen muss.
Also noch mehr Infos über die Berechnung des Preises wären erforderlich.
 
wie definierst du Produktpreis?
Ich habe ja einmal den Preis für das Handy (bei Vertrag günstiger als Prepaid) und einmal die Vertragskosten (Grundgebühr, Mindestumsatz usw).

Weil das definiert schon wie das Tabellendesign aussehen muss.
Also noch mehr Infos über die Berechnung des Preises wären erforderlich.

Der Preis wird nicht berechnet, der wird einfach über ein Eingabeformular eingetragen. Er ist jedoch nach Produkt und Tarif unterschiedlich und eben auch nach gewählter Kategorie. Es wird nur die Kategorie ausgewählt, sowie Produkt und Tarif. Dazu wird der Preis eingetragen.

Ich hatte mich ja etwas an der Lösung von darklord orientiert und ich weiß nicht ob es noch ne bessere möglichkeit gibt als in meinem Posting danach.
 
Dann machst du einfach noch eine Tarif-Tabelle, und packst die tarif_id in meine Verträge-Tabelle.

Ich kann mir zwar nicht vorstellen, dass eine echte Preis<->Produkt,Kategorie,Tarif Verknüpfung sowas von unlogisch ist, aber neija.