2 Werte in einem Datenbankfeld

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 2 Werte in einem Datenbankfeld

    Hallo Leute,

    ich hab schon wieder mal eine Frage an Euch.

    Ich habe eine User-Tabelle. In dieser werden Name, Adresse etc. erfasst. Unter anderem hat jeder User einen Tarif. Da es verschiedene Tarife gibt hab ich eine eigene Tabelle gemacht (dort stehen auch noch weitere Informationen drinnen) und die id dieser Tabelle schreib ich in den User rein. Das funktioniert auch super.

    Jetzt kann jeder User aber noch bestimmte Zusatzpakete auswählen. 99% aller User haben nur ein Paket. Das ist auch kein Problem für mich. Aber was mache ich wenn jemand z.b. 2 oder 3 Pakete bucht.

    Soll ich in dieses Feld die Werte z.B. 1;4;5; eintragen? Dann ergeben sich 2 Fragen für mich?

    Wie kann ich diesen "Block (1;4;5" zerlegen und wie kann die select Abfrage dazu lauten?

    Danke
    Markus

  • #2
    Packe deine Werte in ein Array, welches du mit serialize() in die DB schreibst. Nach dem Auslesen wandelt unserialize() den String wieder in ein Array um.

    Gruß
    basisweb

    Kommentar


    • #3
      Hatte vor einigen Jahren das gleiche Problem wie Du...

      Ich habe das so gemacht:
      Es gab bei mir 7 Tarife.
      Also gabe es in der Tabelle "User" eine Spalte "Tarife" (Varchar).
      Diese Spalte hatte diesen Wert wenn kein Tarif gewählt war:
      0000000

      War Tarif "3" gewählt:
      0010000

      War Tarif 5 und 7 Gewählt:
      0000101

      Ich habe das damals nicht anders hinbekommen, arbeite aber heute immer noch damit.
      Selbst Abfragen wie "Zeige mir alle User die Tarif 4 haben" laufen sehr schnell.


      Heute würde ich aber (der Übersichtlichkeit wegen..) es entweder wie basis-web machen, oder eine extra Tabelle "tarife" mit den Spalten "id" , "user_id" und "tarif" aufsetzen und die dann bei Bedarf "Joinen".

      Kommentar


      • #4
        Ich würde mit einer Bindegliedtabelle arbeiten.
        Tabellen:

        user
        tarife
        user_tarife

        In der Tabelle user_tarife käme dann die Userid in ein Feld und Tarifid in ein weiteres. So kannst du unbegrenzt Tarif an jeden Benutzer knüpfen und alles mit einer einfachen Datenbankanfrage auslesen und der Programmieraufwand würde sich minimieren.

        Kommentar


        • #5
          Soll ich in dieses Feld die Werte z.B. 1;4;5; eintragen?
          Definitiv nein!
          Das wiederspricht den Normalisierungs Regeln
          http://ffm.junetz.de/members/reeg/DS...00000000000000
          Wir werden alle sterben

          Kommentar

          Lädt...
          X