Mike: MYSQL Daten speichern

Hi,

Wie speichere ich in einer Datenbank am Besten Benutzereinstellungen, zB wie auf Facebook alle möglichen Einstellungen die man machen kann.
Mache ich in der Benutzer Tabelle für jede Einstellungen eine Spalte und schreibe dann 0 oder 1 hinein, oder auch andere Werte jenachdem..?

danke
mfg

  1. Hi!

    Wie speichere ich in einer Datenbank am Besten Benutzereinstellungen, zB wie auf Facebook alle möglichen Einstellungen die man machen kann.
    Mache ich in der Benutzer Tabelle für jede Einstellungen eine Spalte und schreibe dann 0 oder 1 hinein, oder auch andere Werte jenachdem..?

    Ja. Atomarisieren nennt man das. Jedes Datum steht separat. Bei Werten aus vorgegebenen Listen kommen auch die Typen ENUM und SET in Frage. Aber auch eine separate Tabelle mit 1:n-Beziehung wäre möglich. Diese solltest du auch bei frei vergebbaren Mehrfachnennungen verwenden, wie bei Hobbys. Es ist ungünstig, beispielsweise 5 Spalten für maximal 5 Hobbys zu nehmen, weil du dann darüber schlecht Statistiken erheben kannst.

    Lo!

  2. Mahlzeit Mike,

    Mache ich in der Benutzer Tabelle für jede Einstellungen eine Spalte und schreibe dann 0 oder 1 hinein, oder auch andere Werte jenachdem..?

    Und wenn irgendwann später eine neue Eigenschaft hinzukommt? Dann änderst Du die Benutzertabelle und *ALLE* Stellen, an denen darauf zugegriffen wird?

    Sinnvoller erscheint mir eine n:m-Zuordnungstabelle:

    Benutzer:
    ID | Name | ...
    ---+------+----
     1 | Foo  | ...
     2 | Bar  | ...
     3 | Baz  | ...

    Eigenschaft:
    ID | Name    | ...
    ---+---------+----
     7 | Größe   | ...
    23 | Fußball | ...
    42 | Telefon | ...

    BenutzerEigenschaften:
    BenutzerID | EigenschaftID | Wert        | ...
    -----------+---------------+-------------+----
             1 |            23 | ja          | ...
             1 |            42 | (0815) 4711 | ...
             3 |            42 | (0123) 9876 | ...
             2 |            23 | nein        | ...
             1 |             7 | 182         | ...

    Dies nur als Anregung - *genau so* wäre das natürlich suboptimal.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Mache ich in der Benutzer Tabelle für jede Einstellungen eine Spalte und schreibe dann 0 oder 1 hinein, oder auch andere Werte jenachdem..?

      Und wenn irgendwann später eine neue Eigenschaft hinzukommt? Dann änderst Du die Benutzertabelle und *ALLE* Stellen, an denen darauf zugegriffen wird?

      Wie meinst du, muss ich alle Stellen ändern wo darauf zugegriffen wird?

      Wenn ich zum Beispiel die Tabelle so anlege:

      Benutzer:
      ID | Name | Größe | Fußball | Telefon | ...
      ---+------+-------+---------+---------+----
       1 | Foo  | 156   | ja      | 1234    | ...
       2 | Bar  | 174   | nein    | 4567    | ...
       3 | Baz  | 169   | ja      | 1368    | ...

      und es kommt irgendwann eine Einstellung dazu, zum Beispiel Führerschein
      dann füge ich eine Spate hinzu, belege Sie mit einem Standardwert (kA) und lasse die Benutzer die neue Einstellung ausfüllen. (Baz hat schon ausgefüllt)

      Benutzer:
      ID | Name | Größe | Fußball | Telefon | Führerschein | ...
      ---+------+-------+---------+---------+--------------+----
       1 | Foo  | 156   | ja      | 1234    | kA           | ...
       2 | Bar  | 174   | nein    | 4567    | kA           | ...
       3 | Baz  | 169   | ja      | 1368    | ja           | ...

      Ist es so nicht einfacher, oder hab ich nicht genug Erfahrung/Nachgedacht, Denkfehler.. :)

      danke
      mfg Mike

      1. Hi!

        Mache ich in der Benutzer Tabelle für jede Einstellungen eine Spalte und schreibe dann 0 oder 1 hinein, oder auch andere Werte jenachdem..?
        Und wenn irgendwann später eine neue Eigenschaft hinzukommt? Dann änderst Du die Benutzertabelle und *ALLE* Stellen, an denen darauf zugegriffen wird?
        Wie meinst du, muss ich alle Stellen ändern wo darauf zugegriffen wird?

        Naja, das muss man sowieso machen. Die neu hinzugekommene Eigenschaft muss sich ja auch im Programm mit Eingabefeldern und -datenbehandlung widerspiegeln, da ist das Anlegen eines neuen Feldes nur noch ein kleiner zusätzlicher Aufwand zum großen Ganzen.

        Es kommt immer auf den konkreten Fall an. Für die Augenfarbe wäre ein neues Feld angebracht, denn dazu gibt es genau einen Wert und die Augenfarbe lässt sich auch nicht mit anderen Eigenschaften sinnvoll zusammenbringen. Für Hobby kann man ja viele verschiedene Werte einfügen. Da nimmt man nicht für jedes neue Hobby ein neues Ja/Nein-Feld, auch nicht drei Freitextfelder für maximal drei Hobbys, sondern eine eigene Tabelle mit 1:n-Beziehung zur Person.

        Lo!