COM COM: ein Script um Tarife zu vergleichen

Hallo,

wir haben ein Problem in der Firma. Wir haben mehrere Versender (POST, Hermes...) die uns Spezialtarife für bestimmte Versandarten anbieten.

Aufgabe ist nun für jedes Päckchen den speziell günstigsten Anbieter zu ermitteln. Soweit die Aufgabenstellung.

Ich habe nun versucht alle Anbieter auf ein Maß (vergleichbarkeit) zu bringen. Und es ist mir wohl auch gelungen. Auf folgende Faktoren konnte ich das ganze begrenzen

Länge (von XXX bis XXX) cm
Breite (von XXX bis XXX) cm
Höhe (von XXX bis XXX) cm
Gewicht (bis XXX) g
Ziel (Deutschland, USA ....)
Preis XX
Tarif XXX
Versender XXX

Wie bringe ich das in eine ordentliche MYSQL Datenbankstruktur? So dass man diesen Inhalt gezielt abrufen kann? Gerade das "von / bis" bereitet mir Kopfschmerzen.

  1. So dass man diesen Inhalt gezielt abrufen kann? Gerade das "von / bis" bereitet mir Kopfschmerzen.

    BETWEEN? ;)

    oder "> xxx AND < xxx"

    1. Das würde ja voraussetzten das ich für jede denkbare Größe eine Datenbank Eintrag habe oder?

      Ich glaube ich sehe die Struktur meiner Datenbank noch nicht vielleicht liegt es auch daran?

      Der Nutzer hat ja nur seine Packetgröße W Lang, X Hoch, Y Breit, Z Schwer das Script soll ihm dann ja sagen welchen Versender / Tarif er nutzen soll.

      So dass man diesen Inhalt gezielt abrufen kann? Gerade das "von / bis" bereitet mir Kopfschmerzen.

      BETWEEN? ;)

      oder "> xxx AND < xxx"

      1. Das würde ja voraussetzten das ich für jede denkbare Größe eine Datenbank Eintrag habe oder?

        Natürlich - alternativ kannst du die Geschichte ja auch auf ein minimales und ein maximales Volumen umrechnen.

        Ich glaube ich sehe die Struktur meiner Datenbank noch nicht vielleicht liegt es auch daran?

        Die gilt es natürlich erst mal zu entwerfen.

        Der Nutzer hat ja nur seine Packetgröße W Lang, X Hoch, Y Breit, Z Schwer das Script soll ihm dann ja sagen welchen Versender / Tarif er nutzen soll.

        Natürlich wird er noch Angaben machen müssen wie eben den Absendeort, den Zielort, versichert oder nicht, Expressendung oder nicht usw.

        1. Hi,

          Das würde ja voraussetzten das ich für jede denkbare Größe eine Datenbank Eintrag habe oder?

          Natürlich - alternativ kannst du die Geschichte ja auch auf ein minimales und ein maximales Volumen umrechnen.

          Nein, kannst du nicht.

          Bspw. hat das DHL-Päckchen Maximal-Maße von 60cm×30cm×15cm.
          Trotzdem werden sie dir vermutlich kein „Päckchen“ zum gleichen Tarif transportieren, das 1cm×1cm×27000cm misst.

          MfG ChrisB

          --
          “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
          1. Bspw. hat das DHL-Päckchen Maximal-Maße von 60cm×30cm×15cm.
            Trotzdem werden sie dir vermutlich kein „Päckchen“ zum gleichen Tarif transportieren, das 1cm×1cm×27000cm misst.

            Das ist richtig.

            Aber ggf. kann man so schneller eine Schnittmenge bilden indem man einfach pauschal alle Tarife ausschließt, die vom Volumen her schonmal garnicht passen.

            Etwa wie bei einer Kollisionsberechnung mittels Bounding-Volumes wo auch zuerst mit einer einfachen geometrischen Struktur berechnet wird und wenns ums "eingemachte" geht exakt verglichen wird.

            1. Hi,

              Bspw. hat das DHL-Päckchen Maximal-Maße von 60cm×30cm×15cm.
              Trotzdem werden sie dir vermutlich kein „Päckchen“ zum gleichen Tarif transportieren, das 1cm×1cm×27000cm misst.

              Das ist richtig.

              Aber ggf. kann man so schneller eine Schnittmenge bilden indem man einfach pauschal alle Tarife ausschließt, die vom Volumen her schonmal garnicht passen.

              Ich würde bei der vorliegenden Problemstellung keine derart grosse Anzahl an Datensätzen vermuten, dass die Datenbank eine Vergleich nach dem Volumen wesentlich schneller auswerten könnte, als drei Vergleichsoperationen bzgl. den einzelnen Maßen.

              Etwa wie bei einer Kollisionsberechnung mittels Bounding-Volumes wo auch zuerst mit einer einfachen geometrischen Struktur berechnet wird und wenns ums "eingemachte" geht exakt verglichen wird.

              Das (Kollisionsberechnung) ist aber ganz andere Grössenordnung von Problemkomplexität, wo solche Umwege aus Aufwands- und damit Performance-Gründen angebracht sind. Wir reden hier nicht von Paketmaß-Tripeln, die durch ein virtuelles Spielfeld fliegen, und wo wir in real-time abchecken müssen, ob unser Spielfigur-Paket mit diesen auf ihren jeweiligen Bewegungspfaden auf einer Raum-Zeit-Achse kollidiert und wenn ja, ob es ggf. hineinpasst ... ;-)

              MfG ChrisB

              --
              “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
              1. Wir reden hier nicht von Paketmaß-Tripeln, die durch ein virtuelles Spielfeld fliegen, und wo wir in real-time abchecken müssen, ob unser Spielfigur-Paket mit diesen auf ihren jeweiligen Bewegungspfaden auf einer Raum-Zeit-Achse kollidiert und wenn ja, ob es ggf. hineinpasst ... ;-)

                Das zeigt, dass du eigentlich keine Ahnung hast, wie Paketdienste heutzutage arbeiten :D

      2. Hi,

        Das würde ja voraussetzten das ich für jede denkbare Größe eine Datenbank Eintrag habe oder?

        Nein - sondern einen Eintrag für einen Tarif, der sowohl die Mindest- also auch die Maximalmaße enthält.

        Selektieren willst du von diesen Tarifen dann nur die jenigen, bei denen die Maße deines Päckchen über deren Mindest- und unter deren Höchstmaßen liegen, und das für alle drei Maße gleichzeitig. („Über“ und „unter“ natürlich unter Einbeziehung der Grenzwerte.)

        Der Nutzer hat ja nur seine Packetgröße W Lang, X Hoch, Y Breit, Z Schwer das Script soll ihm dann ja sagen welchen Versender / Tarif er nutzen soll.

        Na vermutlich den kleinsten von den Tarifen, der sowohl die Maße als auch das Gewicht erlaubt.

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
  2. Hello,

    Ich habe nun versucht alle Anbieter auf ein Maß (vergleichbarkeit) zu bringen. Und es ist mir wohl auch gelungen. Auf folgende Faktoren konnte ich das ganze begrenzen

    Länge (von XXX bis XXX) cm
    Breite (von XXX bis XXX) cm
    Höhe (von XXX bis XXX) cm
    Gewicht (bis XXX) g
    Ziel (Deutschland, USA ....)
    Preis XX
    Tarif XXX
    Versender XXX

    Wie bringe ich das in eine ordentliche MYSQL Datenbankstruktur? So dass man diesen Inhalt gezielt abrufen kann? Gerade das "von / bis" bereitet mir Kopfschmerzen.

    Indem Du eine Anbietertabelle, eine Angebotstabelle, eine Pakettabelle und eine Eigenschaften-Stammtabelle und eine Eigenschaften-Angebots-Positionstabelle und eine Eigenschaften-Paket-Positionstabelle baust.

    • In der Anbietertabelle stehen die Stammdaten des Anbiters
    • in der Angebotstabelle stehen die einzelnen Angebote der Anbieter,
        allerdings noch ohne Eigenschaften, aber mit Preis
    • in der Eigenschaften-Stammtabelle stehen alle Eigenschaften, die jemals
        auftreten dürfen oder zur Bedingung gemacht werden könnten
    • in der Eigenschaften-Angebots-Positionstabellestehen werden dann diejenigen
        Eigenschaften aus der Eigenschaften-Stammtabelle mit denen des Angebotes
        verknüpft, die für das Angebot relevant sind
    • in der Eigenschaften.Paket-Positionstabelle stehen die Eigenschaften des Paketes,
        die bekannt sind und für relevant gehalten werden.

    Nun müssen die Angebote durchducht werden, und diejenigen gefunden werden, deren Eigenschaften von denen des Paktes nicht gebrochen werden.

    Ggf, fehlt noch eine Tabelle für die Aufnahme der Beziehung zwischen den Paketeigenschaften und den Angebots-Eigenschaften, sodass das Programm weiß, mit welchen Eigenschaften aus Angebot es die aus Paket vergleichen musss, also eine Klassifizierung.

    Derartige Programme kosten, wenn sie gut gemacht sind und für sie auch regelmäßig neue Daten nachgeliefert werden, zwischen 5.000 und 8.000 Euro im Jahr.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de