Phil: Richtiges speichern in Datenbank?

Hallo zusammen

Ich arbeite zurzeit an einem eigenen auf MySQL und PHP basierten CMS. Meine Frage lautet nun, wie Ihr das Speichern in die Datenbank organisieren würdet?

Soll ich Strings zusammengefasst abspeichern und beim auslesen in ein Array aufteilen (serialize oder explode) oder soll ich jeden Text jeweils einzeln eintragen, auch wenn dieser nur ein paar Worte lang ist?

Danke und Gruss, Phil

  1. Soll ich Strings zusammengefasst abspeichern und beim auslesen in ein Array aufteilen (serialize oder explode) oder soll ich jeden Text jeweils einzeln eintragen, auch wenn dieser nur ein paar Worte lang ist?

    Was heißt "jeder" Text und was glaubst du durch Aerialisierung zu gewinnen - außer, dass das lesen/schreiben umständlicher und langsamer und die Datenmenge größer wird?

    1. danke für deine Antwort.

      Mit "jeder" Text meine ich längere Textabschnitte (Blogs) als auch Texte mit 1-2 Worten wie "Jetzt registrieren".

      Irgendwie finde ich es seltsam, einen Datenbankeintrag nur für "Jetzt registrieren" anzulegen... ich dachte man könnte die Text zusammenfassen und diese dann in einen einzigen Eintrag abspeichern.

      Aber du hast recht, umständlicher wird das Lesen/Schreiben so ganz sicher.

      1. Hi!

        Du sprichst hier evtl. von zwei voellig unterschiedlichen Tabellen. Bei einer Lokalisierungstabelle (Buttonbeschriftungem Ueberschriften, ...) kann man durchaus drueber nachdenken, zusammengehoerige Bloecke von Beschriftungen serialisiert abzuspeichern. Wenn Du Sicher bist, dass Deine Datenbank niemals problemlos die englische Beschriftung fuer 'jetzt registrieren' auslesen koennen muss, kannst Du das machen. Besser pflegbar ist es dadurch allerdings nicht. Ich hab keine Lust eine rechtschreibkorrektur an einem String zu machen, den nich erstmal finden muss.

        Ich wuerds nicht machen. Einen echten Grund dafuer kann ich bei deinem Projekt grad nicht finden.

        --
        Signaturen sind blöd!

        1. Vielen Dank für eure Hinweise.

          Wenn ich das richtig verstanden habe, wäre es vermutlich am Besten, wenn ich Überschriften, Titel usw. in einer seperaten Tabelle abspeichere?

          Ich werde wohl die Texte "direkt" und unverändert abspeichern, dachte ich spare etwas Platz dadurch. Scheint mir aber etwas umständlich zu sein.

          Danke!

          1. Hello,

            Ich werde wohl die Texte "direkt" und unverändert abspeichern, dachte ich spare etwas Platz dadurch. Scheint mir aber etwas umständlich zu sein.

            Was bedeutet bei Dir CMS?
            Was bedeutet bei Dir "die Texte"?

            Texte bestehen i.d.R. aus mehreren Sinneinheiten. So kann im Text z.B. der Kontakt zu einer PERSON genannt werden. Diese PERSON hat einen VORNAMEN und einen NACHNAMEN. Bei Heirat ändert der sich z.B. auch mal. Die PERSON hat eine FUNKTION. Die PERSON hat in der FUNKTION an einem ORT diverse KOMMUNIKATIONSDATEN.

            Wenn Dein "CMS" nicht nur genauso ein dämliches "ich-lasse-mein-HTML-generieren-System" werden soll, sondern wirklich INHALTE und ZUSAMMENHÄNGE verwalten können soll, denk mal als erstes über das Datenmodell nach.

            Bestimmte Objekte des wahren Lebens werden aus diveresen Einzelobjekten zusammengesetzt. Das will verwaltet sein. Die Abbildung dieser Objekte soll dann später vielleicht durch bestimmte wiederkehrende Muster (Bild, Text mit Bild, Adresse, ...) in HTML erfolgen. Dafür benötigt man erstmal die Definitionen der Muster und dann jeweils eine (ggf. diverse) Abbildungsvorschriften.

            Und wenn Herr X das Unternehmen verlässt, muss man nicht lange suchen, sondern kann sich auflisten lassen, wo überall im Verwaltungssystem er erwähnt wurde und entscheiden, ob er dort nur durch Frau Y ersetzt werden muss, oder ob umorganisiert wird...

            Das ist zugegeben ein etwas hoher Anspruch an ein CMS, aber es ist mal ein Denkansatz, der sich zu lohnt, verfolgt zu werden. Zusammenstreichen kannst Du deine Überlegungen dann immer noch. Aber die Andockstellen für die Weiterentwicklung sind dann schon da!

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

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

            1. Bestimmte Objekte des wahren Lebens werden aus diveresen Einzelobjekten zusammengesetzt.

              Einige davon sind Pflicht, andere nicht.

              Ich habe heute z.B. festgestellt, dass es bei Großbetrieben in Österreich nicht selten ist, dass die gar keine Hausnummer besitzen.

              Gegeben ist als System ein OXID-Shop - die Hausnummer ist bei der Registrierung ein Pflichtfeld. Was gibtst du also ein, wenn es gar keine gibt? :)

              1. Hello,

                Bestimmte Objekte des wahren Lebens werden aus diveresen Einzelobjekten zusammengesetzt.

                Einige davon sind Pflicht, andere nicht.

                Ich habe heute z.B. festgestellt, dass es bei Großbetrieben in Österreich nicht selten ist, dass die gar keine Hausnummer besitzen.

                Gegeben ist als System ein OXID-Shop - die Hausnummer ist bei der Registrierung ein Pflichtfeld. Was gibtst du also ein, wenn es gar keine gibt? :)

                Gute Frage.

                Aber meine Anregung war ja auch anders herum gemeint. Eine Adresse ist kein einfacher Textblock, sondern hat sowohl semantische Bedeutung als auch eine übliche Formatierung und sie besteht aus mehreren Elementen, die ebensolche besitzen können.

                HTML versucht das ja nachher in der semantischen Auszeichnung auch abzubilden.

                Liebe Grüße aus dem schönen Oberharz

                Tom vom Berg

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

              2. Hi suit!

                Gegeben ist als System ein OXID-Shop - die Hausnummer ist bei der Registrierung ein Pflichtfeld. Was gibtst du also ein, wenn es gar keine gibt? :)

                Das geht ja noch. Das Paket kommt dann ja trotzdem noch an.
                Viel schlimmer finde ich die Shops, bei denen ich keinen Adresszusatz angeben kann, in meinem Fall eine Zimmernummer.

                Noch blöder fand ich aber den Shop, bei dem ich mich vor kurzem registrierte. Ich gab bei der Registrierung meine Hauptadresse an, wollte das Paket aber zu einem 500 Kilometer entfernten Ort schicken lassen, was mir das System beim Bestellvorgang aber mit der Meldung, dass die erste Bestellung an die Registrierungsadresse gehen müsse, vermasselte.

                MfG H☼psel

                Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)

                -- "Es gibt Augenblicke, in denen eine Rose wichtiger ist als ein Stück Brot."
                Rainer Maria Rilke
          2. Wenn ich das richtig verstanden habe, wäre es vermutlich am Besten, wenn ich Überschriften, Titel usw. in einer seperaten Tabelle abspeichere?

            Wenn die Überschrift oder der Titel ein essentieller Bestandteil des Blogeintrags ist (Post) dann gehört er selbstverständlich genau dort hin - aber in ein eigenes Feld und nicht in eine eigene Tabelle.

            id | titel | text ...

          3. Beim Sparen geht es nicht nur um Platz in der Datenbank, sondern auch um Zeit (beim wieder Auslesen und Verarbeiten) und Nerven (wenn du deinen Quellcode oder die Einträge in der DB verstehen musst). Damit verglichen sind die paar Bytes an Platz zu vernachlässigen.

            Wenn ich das richtig verstanden habe, wäre es vermutlich am Besten, wenn ich Überschriften, Titel usw. in einer seperaten Tabelle abspeichere?

            Wie würdest du sonst danach suchen, wenn alles in einer Tabelle steht?
            Der eine Text gehört fest zum System, der andere gehört zu einem Blog und hat Verweise auf vorhergehenden Eintrag und so. Das würde ein riesen Chaos geben.

    2. Hi,

      und was glaubst du durch Aerialisierung zu gewinnen

      na daß sich das Zeug in Luft auflöst ;-)

      cu,
      Andreas

      Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.

      -- Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
  2. hi Phil,

    Ich arbeite zurzeit an einem eigenen auf MySQL und PHP basierten CMS. Meine Frage lautet nun, wie Ihr das Speichern in die Datenbank organisieren würdet?

    So,,, dass notwendige Anfragen in indizierte Felder greifen wegen der Performance. Im Detail kommt es darauf an, inwieweit der Content modelliert und in Komponenten zerlegt ist. In meinem CMS habe ich das so gemacht, dass über einem selbstgebauten, ebenfalls kleinen Framework (Templatesystem mit Ajaxerweiterung) ein Objectmanager steht, der aufgrund des requested URL das Responseobjekt zusammenbaut, wobei der primary Key schlicht und einfach der Locator selbst ist (z.B. '/impressum.html') und alles Weitere wie title, body, author, css-Links, js-Links, descr, Kurztitel sind die Attribute des Response-Objects. Weitere Attribute steuern die Zugriffsrechte und laden einen entsprechenden Handler wenn Parameter erlaubt und zu verarbeiten sind.

    Das lässt sich ganz gut in einer Tabelle abbilden, wobei darüber hinaus natürlich auch Detailtabellen gejoint werden können.

    Hotti

    1. Ich arbeite zurzeit an einem eigenen auf MySQL und PHP basierten CMS. Meine Frage lautet nun, wie Ihr das Speichern in die Datenbank organisieren würdet?

      So,,, dass notwendige Anfragen in indizierte Felder greifen wegen der Performance. Im Detail kommt es darauf an, inwieweit der Content modelliert und in Komponenten zerlegt ist. In meinem CMS habe ich das so gemacht, dass über einem selbstgebauten, ebenfalls kleinen Framework (Templatesystem mit Ajaxerweiterung) ein Objectmanager steht, der aufgrund des requested URL das Responseobjekt zusammenbaut, wobei der primary Key schlicht und einfach der Locator selbst ist (z.B. '/impressum.html') und alles Weitere wie title, body, author, css-Links, js-Links, descr, Kurztitel sind die Attribute des Response-Objects. Weitere Attribute steuern die Zugriffsrechte und laden einen entsprechenden Handler wenn Parameter erlaubt und zu verarbeiten sind.

      Eine (wirklich ernst gemeinte!) Frage: Hast Du schonmal darüber nachgedacht, in die Politik zu gehen?

      1. Hi;

        Eine (wirklich ernst gemeinte!) Frage: Hast Du schonmal darüber nachgedacht, in die Politik zu gehen?

        Widersprüche sind Triebkräfte der Entwicklung. Politiker treiben auch die Entwicklung voran, indem sie Widersprüche erzeugen. Politiker überlassen jedoch das Lösen der Widersprüche anderen Personengruppen. Und ist nicht meine Art ;)

        Schönes Wochenende,
        Hotti