Sven: MySQL - Viele Tabellen?

Hallo,

arbeite gerade an einer Community Webseite, nun wird bei jeder Registrierung 2 neue Tabellen angelegt für den User. Eine für die Profil-Kommentare und eine für die Private-Mitteilungen. Nun Frage ich mich ob das wirklich sinnvoll wäre?

Oder ist es besser wenn ich 2 Tabellen habe für alle Mitglieder? Soll auf jedenfall stabil laufen auch wenn 10 000 Mitglieder drauf sind. Klar kommt es auch auf Server an, aber mir gehts erstmal um das System selber wie man das ganze am besten Aufbaut.

Vielen Dank!

MfG
Sven

  1. Hi!

    arbeite gerade an einer Community Webseite, nun wird bei jeder Registrierung 2 neue Tabellen angelegt für den User. [...] Nun Frage ich mich ob das wirklich sinnvoll wäre?

    Ungefähr so sinnvoll, wie für jede Famile eine eigenen Stadt gründen zu wollen.

    Oder ist es besser wenn ich 2 Tabellen habe für alle Mitglieder? Soll auf jedenfall stabil laufen auch wenn 10 000 Mitglieder drauf sind. Klar kommt es auch auf Server an, aber mir gehts erstmal um das System selber wie man das ganze am besten Aufbaut.

    Ein DBMS hat kein Problem viele Datensätze in einer Tabelle zu verwalten. Für schnelles Finden können Indexe angelegt werden. Du bekommst aber ein Problem, wenn du mal für mehrere/viele User eine administrative Handlung vornehmen willst. Es ist einfacher WHERE user_id IN (x,y,z) zu notieren statt tausende einzelne Tabellen ansprechen zu müssen.

    Lo!

    1. Danke für die Antworten. Dann werde ich das mal umändern und den rest fertig machen damit die Online gehen kann.

  2. Hello,

    arbeite gerade an einer Community Webseite, nun wird bei jeder Registrierung 2 neue Tabellen angelegt für den User. Eine für die Profil-Kommentare und eine für die Private-Mitteilungen. Nun Frage ich mich ob das wirklich sinnvoll wäre?

    Das wäre nur dann sinnvoll, wenn jeder User eine eigene Tabellendefinition bekommen würde. Das wäre zwar ungewöhnlich, aber nicht undenkbar.

    Wenn aber für die User einheitliche Daten erhoben werden, dann kann man das in (hier vermutlich zwei) gemeinsamen Tabellen ablegen, indem man einfach eine Spalte "ID_user" (vermutlich nicht Unique) hinzufügt und über diese selektiert.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

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

      arbeite gerade an einer Community Webseite, nun wird bei jeder Registrierung 2 neue Tabellen angelegt für den User. Eine für die Profil-Kommentare und eine für die Private-Mitteilungen. Nun Frage ich mich ob das wirklich sinnvoll wäre?

      Das wäre nur dann sinnvoll, wenn jeder User eine eigene Tabellendefinition bekommen würde. Das wäre zwar ungewöhnlich, aber nicht undenkbar.

      man soll ja nie nie sagen, aber ich kann mir keinen sinnvollen fall vorstellen, wo die vorteile eienr solchen aufteilung die nachteile überwiegen.

      Ilja

      1. Hello,

        arbeite gerade an einer Community Webseite, nun wird bei jeder Registrierung 2 neue Tabellen angelegt für den User. Eine für die Profil-Kommentare und eine für die Private-Mitteilungen. Nun Frage ich mich ob das wirklich sinnvoll wäre?

        Das wäre nur dann sinnvoll, wenn jeder User eine eigene Tabellendefinition bekommen würde. Das wäre zwar ungewöhnlich, aber nicht undenkbar.

        man soll ja nie nie sagen, aber ich kann mir keinen sinnvollen fall vorstellen, wo die vorteile eienr solchen aufteilung die nachteile überwiegen.

        Ganz einfach: Z.B. Wenn der User selber eine Tabellendefinition bestimmen darf. Was er darin speichert, ist ihm überlassen.

        Das könnte man zwar auch wieder hochkomplex auf streng typisierte Tabellen verteilen, aber darin würde ich dann zuviel Aufwand sehen...

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

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

          Ganz einfach: Z.B. Wenn der User selber eine Tabellendefinition bestimmen darf. Was er darin speichert, ist ihm überlassen.

          Das könnte man zwar auch wieder hochkomplex auf streng typisierte Tabellen verteilen, aber darin würde ich dann zuviel Aufwand sehen...

          Dann würde ich entweder die Daten in einem anderen Format speichern (z.B. JSON) oder die horizontale Tabellendefinition in eine vertikale umwandeln. Das würde ich aber nicht als "hochkomplex" bezeichnen, im Gegenteil: das gehört doch zum Handwerkszeugs eines jeden, der sich mit der Materie beschäftigt.

          Eine Grundregel, die ich befolge: komme ich in die Verlegenheit, irgendwo "dynamische Spalten" zu sehen, dann generiere ich eine Tabelle (genaugenommen zwei, eine Kreuztabelle und eine "Definitionstabelle"), in der die Werte der dynamischen Spalte reingehören, und zwar jede Spalte als eine Spalte in der (Kreuz-) Tabelle.

          Bis die Tage,
          Matti

        2. @@Tom:

          nuqneH

          Ganz einfach: Z.B. Wenn der User selber eine Tabellendefinition bestimmen darf. Was er darin speichert, ist ihm überlassen.

          Dann wäre wohl eine andere Datenbank als eine relationale angesagt.

          Qapla'

          --
          Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
          (Mark Twain)
          1. Hello,

            Ganz einfach: Z.B. Wenn der User selber eine Tabellendefinition bestimmen darf. Was er darin speichert, ist ihm überlassen.

            Dann wäre wohl eine andere Datenbank als eine relationale angesagt.

            Und wenn man für das übrige Projekt aber eine relationale Datenbank für sinnvoll hält?
            Soll man dann mit zwei Datenbankservern herumhantieren?

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

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

          Ganz einfach: Z.B. Wenn der User selber eine Tabellendefinition bestimmen darf. Was er darin speichert, ist ihm überlassen.

          Denke ich auch. Wobei man User noch definieren muesste. Bei normalen Usern einer Community duerfte das eher nicht der Fall sein. Wenn der User aber z.B. eine Abteilung innerhalb einer Organisation ist, liegt das doch nahe. Ich wuerde ganz sicher nicht eine eigentlich 120 Felder umfassende Tabelle in Kreuztabellen unterbringen wollen. Entweder ich bekomme meine eigene oder wir lassens.

          --
          Vergesst Chuck Norris.
          Sponge Bob kann unter Wasser grillen!