Fronk: mysql Vorgehensweise

Hallo.

Wie geht Ihr bei folgendem Problem vor.

Ihr habt ein fertiges System aus php und mysql.

Durch eine neue Anforderung an Euer System benötigt Ihr 2 Spalten in einer Tabelle mehr. Diese würden wunderschön inmitten die Tabelle passen, aber hierfür müsstet Ihr sämtliche Scripte und Abfragen entsprechend anpassen.

Oder füt Ihr die beiden Spalten einfach hinten an, auch wenn sie thematisch besser in die Mitte der Tabelle gehörten?

Grüße, Fronk

  1. Hallo,

    Durch eine neue Anforderung an Euer System benötigt Ihr 2 Spalten in einer Tabelle mehr. Diese würden wunderschön inmitten die Tabelle passen,

    die Position einer Spalte in einer Tabelle spielt im Normalfall überhaupt keine Rolle.

    aber hierfür müsstet Ihr sämtliche Scripte und Abfragen entsprechend anpassen.

    was nur passieren kann, wenn die Scripte die Spalten über ihre Position ansprechen, was ich für eine denkbar schlechte Strategie halte.

    Oder füt Ihr die beiden Spalten einfach hinten an, auch wenn sie thematisch besser in die Mitte der Tabelle gehörten?

    Die Position einer Spalte innerhalb einer Tabelle hat bei meinen Datenbankanwendungen noch nie Auswirkungen gehabt.

    Freundliche Grüße

    Vinzenz

  2. Hello,

    2 Spalten [...] mehr. Diese würden wunderschön inmitten die Tabelle passen

    hier liegt ein kapitaler Irrtum in der Handhabung von Datenbanken vor. Tabellen sollten keine Mitte haben, genauso wie Datensätze in einer Tabelle keine Reihenfolge haben. Reihenfolgen entstehen durch Abfragen, d.h. SELECT a, b, c und ORDER BY a, b, c. Deine Problemstellung lässt bis hier hin auf die Verwendung von SELECT * schließen - hier gibt es zwar verschiedene Meinungen, aber viele vertreten die Meinung, dass dies nur für Testzwecke oder in eingeschränkten Anwendungsszenarien zu verwenden ist.

    aber hierfür müsstet Ihr sämtliche Scripte und Abfragen entsprechend anpassen.

    Ja, das ist in der Tat richtig. Es gilt das Paradigma "Daten sind stabiler als Funktionen", damit ist ein Eingriff in die Daten etwas ziemlich tiefgreifendes.

    MfG
    Rouven

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    "I wish it need not have happened in my time" - "So do I, and so do all who live to see such times. But that is not for them to decide. All we have to decide is what to do with the time that is given us."  --  J.R.R. Tolkien: "The Lord Of The Rings: The Fellowship Of The Ring"
  3. Hallo.

    Durch eine neue Anforderung an Euer System benötigt Ihr 2 Spalten in einer Tabelle mehr. Diese würden wunderschön inmitten die Tabelle passen, aber hierfür müsstet Ihr sämtliche Scripte und Abfragen entsprechend anpassen.

    Wenn solche selbstgemachten Abhängigkeiten bestehen, ist die Zeit gekommen, über eine Zentralisierung aller Datenbankzugriffe in einer eigenen Library nachzudenken. Und dafür lassen sich mit Sicherheit auch weitere Gründe finden.

    Hotte

    --
    Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
    1. Eure Antworten haben mir eine Unsicherheit genommen, die ich schon seit graumer Zeit mit mir herumschleppe :-)

      Wenn solche selbstgemachten Abhängigkeiten bestehen, ist die Zeit gekommen, über eine Zentralisierung aller Datenbankzugriffe in einer eigenen Library nachzudenken. Und dafür lassen sich mit Sicherheit auch weitere Gründe finden.

      Hotte

      Und das hier hab ich nicht wirklich verstanden. Hört sich aber interessant an. Worum gehts?

      Grüße, Fronk

      1. hi,

        Und das hier hab ich nicht wirklich verstanden. Hört sich aber interessant an. Worum gehts?

        Naja, das ist bei mir auch so, dass ich ab und zu mal an meinen Tabellen was ändern muss. Und dann geht die Sucherei los, wenn der ganze Kram nicht mehr so richtig läuft. Sucherei in mehreren Sripts.... damit werde ich demnächst Schluss machen:

        Alle Funktionen, die in zahllosen Scripts verstreut sind, werde ich zusammenfassen in eine kleine Library, somit habe ich nur noch eine Datei, wo ich anpacken muss. Diese Datei wird bei mir ein Perl-Modul sein, schön locker aufgegliedert nach den Tabellen, die im meiner Webdatenbank so rumschwirren. Diese Modulchen wird auch alle aktuellen Create-Statements enthalten, so dass ich nur noch auf einen Knopf drücken muss, falls mal wieder ein Serverumzug ins Haus steht...

        Schönen Sonntag,
        Hotte

        --
        Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
  4. Ergänzend zu den bisherigen Antworten, ich baue Tabellen gerne so auf.
    Am Anfang ein Identitätswert und sonstige Sortierkriterien wie Einfügedatum oder so. Dann der Reihe nach alles was ich beim Debuggen und Testen mit SELECT * am Anfang sehen will. Zum Beispiel Vorname/Nachname, da machts dann schon Sinn wenn das hintereinander erscheint.
    Fremdschlüssel, lange Strings und sonstiges was mich beim schnellen Reinschauen in die Tabelle erst mal nicht interessiert, landet dann eher am Ende der Tabelle.

    Im Code gibt es kein SELECT *, da wird jede Spalte aufgeführt und der Zugriff auf Felder erfolgt nicht über einen Index sondern über den Namen.