Announcement

Collapse
No announcement yet.

Designfrage: wie individuelle Preisliste für Kunden mit variablen Produkten?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Designfrage: wie individuelle Preisliste für Kunden mit variablen Produkten?

    Hi ,

    vielleicht ist die Lösung ganz einfach aber irgendwie sind meine Lösungsansätze nicht sonderlich schön ... deswegen mal eine Frage an euch Profis. Wie setzt man am geschicktesten folgende Anforderung in ein Datenbankschema um:

    - es gibt Kunden , Produkte und Preise
    - die Produkte sind variabel - es kommen ständig neue dazu
    - die Preise sollen individuell pro Kunde und pro Produkt administrierbar sein

    Somit fällt also schon mal eine Lösung mit einer Preistabelle bei der es je Produkt eine Spalte gibt aus , denn es kommen ja ständig neue Produkte hinzu und dann müsste man diese Tabelle auch entsprechend dauernd um neue Spalten erweitern.
    Eine andere Lösung wäre eine Tabelle in der für jeden Kunden und für jedes Produkt ein Preis drin steht (also so in der Art KundenID, ProduktID , Preis). Nur wie erstellt man sich dann ein Statement um eine Kundenliste inkl. der Preise pro Kunde zu bekommen?

    Vielen Dank schon mal

  • #2
    Originally posted by amorph View Post
    Eine andere Lösung wäre eine Tabelle in der für jeden Kunden und für jedes Produkt ein Preis drin steht (also so in der Art KundenID, ProduktID , Preis).
    Genau so solltest Du es machen.

    Abhängig vom Workflow wäre dann zu entscheiden, ob für ein Produkt auch ein Standard-Preis gespeichert werden soll und wenn ja, wo. Wenn Du viele Kunden hast und viele Produkte, und jeder Kunde jedes Produkt kaufen kann, aber nur wenige Kunden einen speziellen Preis erhalten sollen, so ist das zwar problemlos in einer DB modellierbar, aber applikationsseitig ein Horror, wenn bei jedem neuen Produkt die Anwender in einer Eingabeorgie Standard- und Spezialpreise erfassen müssen.
    Dirk

    Comment


    • #3
      Hallo hgdorn ,

      danke für deine Antwort. Eine Frage die ich mir da stelle: wie ließe sich eine solche Preisliste dann in eine "flache" Tabelle abbilden - sprich wie müsste ein SQL-Statement aussehen um ein Ergebnis mit einem Preis pro Spalte zu bekommen?

      Gruß

      Comment


      • #4
        Originally posted by amorph View Post
        Hi ,

        vielleicht ist die Lösung ganz einfach aber irgendwie sind meine Lösungsansätze nicht sonderlich schön ... deswegen mal eine Frage an euch Profis. Wie setzt man am geschicktesten folgende Anforderung in ein Datenbankschema um:

        - es gibt Kunden , Produkte und Preise
        - die Produkte sind variabel - es kommen ständig neue dazu
        - die Preise sollen individuell pro Kunde und pro Produkt administrierbar sein

        Somit fällt also schon mal eine Lösung mit einer Preistabelle bei der es je Produkt eine Spalte gibt aus , denn es kommen ja ständig neue Produkte hinzu und dann müsste man diese Tabelle auch entsprechend dauernd um neue Spalten erweitern.
        Eine andere Lösung wäre eine Tabelle in der für jeden Kunden und für jedes Produkt ein Preis drin steht (also so in der Art KundenID, ProduktID , Preis). Nur wie erstellt man sich dann ein Statement um eine Kundenliste inkl. der Preise pro Kunde zu bekommen?

        Vielen Dank schon mal
        Hallo,

        ich denke, dass Du hier zwei Haupttabellen hast, die keine Beziehung zueinander haben. Dann hast Du eine n:n Tabelle, in der Du beides vereinst.

        tbl_Kunden.id (PK) (+Columns) tbl_Produkte.id (PK) (+Columns)

        => tbl_Preise.id (PK), customer_id, product_id, price

        Das SQL könnte dann so aussehen

        SELECT tbl_Kunden.*, tbl_Produkte.*, tbl_Preise.price
        FROM tbl_Kunden, tbl_Produkte, tbl_Preise.price
        WHERE tbl_Kunden.id = tbl_Preise.customer_id
        AND tbl_Produkte.id = tbl_Preise.product_id

        Kann man auch mit LEFT JOINS machen, die Variante oben geht aber unter MS SQL, Access, Oracle, etc. gleich.

        Damit das Ganze dann auch performant bleibt solltest Du einen Index auf customer_id und product_id setzen (UNIQUE, NONCLUSTERED)
        Freundliche Grüße
        Yves Rausch

        Comment

        Working...
        X