johanoa: Listen in MySql-Datenbank

Hallo,

ich überlege gerade, wie ich eine Liste von Ids am Besten in einer MySql-Tabelle speichere.

Im Moment verwenden ich ein Varchar(100) und speichere die Ids mit / abgetrennt.

So kann ich mit &/id/% überprüfen, ob die Id in der Spalte vorhanden ist.

Gibt es einen schöneren Weg?

Gruß

  1. Gibt es einen schöneren Weg?

    Was spricht gegen den Spaltentyp BIGINT(20) UNSIGNED? Das mit dem ID's mit / abgetrennt habe ich jetzt nicht ganz verstanden.

    gruß Stefan

    1. Hallo,

      es sollen mehrere Ids gespeichert werden.

      Also meinetwegen 12 15 und 98.

      Bisjetzt speichere ich so /12//15//98/

      So kann ich mit %/15/% überprüfen, ob die id auch in der Spalte steht.

      gruß

      1. Bisjetzt speichere ich so /12//15//98/

        mhmm... da würde mir auch keine Elegantere Lösung einfallen als VARCHAR. Ich würde jetzt auch behaupten das es keine Elegantere Lösung gibt, aber ich lasse mich auch gerne vom Gegenteil überzeugen.

        gruß Stefan

      2. Hallo,

        Also meinetwegen 12 15 und 98.
        Bisjetzt speichere ich so /12//15//98/


        das ist keine gute Idee
        . Speichere jede id in einer eigenen Zeile.

        Freundliche Grüße

        Vinzenz

        1. Hallo,

          heißt ich muss in dem Fall jede der ids 12 15 und 18 in eine eigene Zeile speichern.

          Um dennoch nicht die komplette Zeile, die ja identisch wäre zu speichern müsste ich also eine Schicht dazwischen schieben. Also 12 15 und 18 einer eindeutigen id zurodnen, die auch gleich sein kann und diese dann aus der anderen Tabelle holen?

          Gruß

          1. Hallo,

            heißt ich muss in dem Fall jede der ids 12 15 und 18 in eine eigene Zeile speichern.

            Du solltest. Es ist gute Praxis.

            Um dennoch nicht die komplette Zeile, die ja identisch wäre zu speichern müsste ich also eine Schicht dazwischen schieben. Also 12 15 und 18 einer eindeutigen id zurodnen, die auch gleich sein kann und diese dann aus der anderen Tabelle holen?

            So etwas in der Art dürfte sinnvoll sein, um die entsprechende Verknüpfung zu realisieren.

            Freundliche Grüße

            Vinzenz

  2. echo $begrüßung;

    ich überlege gerade, wie ich eine Liste von Ids am Besten in einer MySql-Tabelle speichere.
    Im Moment verwenden ich ein Varchar(100) und speichere die Ids mit / abgetrennt.
    So kann ich mit &/id/% überprüfen, ob die Id in der Spalte vorhanden ist.
    Gibt es einen schöneren Weg?

    FIND_IN_SET() ist zwar "schöner", um die IDs wiederzufinden, allerdings muss das DBMS bei nichtnormalisierter Datenspeicherung einen Full-Table-Scan machen, um Inhalte zu finden (Fulltext-Index ist in deinem Fall nicht anwendbar). In den meisten Fällen dürfte wohl die schon vorgeschlagene Normalisierung vorzuziehen sein.

    echo "$verabschiedung $name";