Matthias Apsel: Tabellen umbenennen und wiedererkennen

Om nah hoo pez nyeetz, alle!

Ich plane eine Webanwendung in der die Benutzer auch Datenbanktabellen erstellen und umbenennen können sollen. Da aber u. U. die erstellten Tabellen Grundlagen für weitere Untersuchungen sind, muss die Zuordnung auch nach der Umbennung noch eindeutig sein.

Meine Idee ist, eine Tabelle "Tabellen" zu erstellen, in der ID und Name der Tabellen gespeichert werden: ID=1, name = foo.

Die Tabelle foo soll umbenannt werden. Ich würde dann also die Tabelle umbenennen und in der Tabelle "Tabellen" die entsprechende Zeile ändern. (ID=1, name = foobar) So kann ich die Tabelle trotzdem noch erkennen und richtig zuordnen, obwohl sie umbenannt wurde.

Das kommt mir allerdings ziemlich aufwändig vor. Gibt es da in mysql oder sqlite einen Automatismus?

Matthias

--
Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Grill und Grille.

  1. Tach!

    Ich plane eine Webanwendung in der die Benutzer auch Datenbanktabellen erstellen und umbenennen können sollen.

    Wie ist es mit Querys? Werden diese immer per Hand mit den aktuellen Tabellennamen eingegeben oder sind zumindest einige vorhanden, die irgendwo festgeklopft sind? Die müssten dann auch von der Namensänderung erfahren. Oder aber sie werden erst zur Laufzeit mit dem aktuellen Namen zusammengebaut.

    Die Tabelle foo soll umbenannt werden. Ich würde dann also die Tabelle umbenennen und in der Tabelle "Tabellen" die entsprechende Zeile ändern. (ID=1, name = foobar) So kann ich die Tabelle trotzdem noch erkennen und richtig zuordnen, obwohl sie umbenannt wurde.
    Das kommt mir allerdings ziemlich aufwändig vor. Gibt es da in mysql oder sqlite einen Automatismus?

    Glaub ich nicht. Tabellennamen sind Identifier. Wenn man einen solchen ändert, muss man alle Referenzen darauf anpassen, da diese ja nur über den Namen laufen. Sowas ist zu aufwendig, weswegen man das lieber vermeidet, wenn es nicht unbedingt erforderlich ist. Selbst wenn man innerhalb einer Query Tabellennamen stets mit Alias verwendet, und so bei Feldverweisen keine Änderungsarbeit hat, so hat man doch üblicherweise eine Menge Querys rumfliegen, bei denen der Name zu ändern ist. Mir ist auch kein Mechanismus in den DBMS bekannt, der quasi Alias-Namen zu physischen Tabellennamen pflegt.

    dedlfix.

    1. Hello,

      Mir ist auch kein Mechanismus in den DBMS bekannt, der quasi Alias-Namen zu physischen Tabellennamen pflegt.

      Mir momentan auch nicht, aber je nach Anwendungsszenario könnte man sich vielleicht mit einem Trick behelfen: Anstelle über die Indirektion einer ID zu gehen (die man ja jedes Mal auswerten müsste, gut, könnte man cachen...) könnte man eine "versteckte" Tabelle als eigentliche Datengrundlage verwenden und dem Benutzer eine View in die Hand geben. Die View kann er umbenennen, die physische Datenquelle bleibt allerdings dieselbe. Wie gesagt, hängt aber stark vom Anwendungsszenario ab...

      MfG
      Rouven

      --
      -------------------
      sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
      There's no such thing as a free lunch  --  Milton Friedman
  2. Him

    Ich plane eine Webanwendung in der die Benutzer auch Datenbanktabellen erstellen und umbenennen können sollen. Da aber u. U. die erstellten Tabellen Grundlagen für weitere Untersuchungen sind, muss die Zuordnung auch nach der Umbennung noch eindeutig sein.

    was hast du genau vor? Klingt irgendwie schräg auf den ersten Blick... kommt allerdings auf den Nutzerkreis drauf an. Na ja, ich hab ja eh keine Ahnung.

    1. Om nah hoo pez nyeetz, iopetos!

      was hast du genau vor? Klingt irgendwie schräg auf den ersten Blick... kommt allerdings auf den Nutzerkreis drauf an. Na ja, ich hab ja eh keine Ahnung.

      Es geht um die Auswertung von Arbeitsaufträgen. Die Arbeitsaufträge für einen Zeitraum von 4 Wochen sind in eine Tabelle. Davon gibt es mehrere. Es wurde an mich der Wunsch herangetragen, die Tabellennamen zu ändern.

      Matthias

      --
      Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Phi und Philosoph.

      1. Hi,

        Es geht um die Auswertung von Arbeitsaufträgen.

        Ok.

        Die Arbeitsaufträge für einen Zeitraum von 4 Wochen sind in eine Tabelle. Davon gibt es mehrere.

        Das klingt seltsam. Warum sind nicht alle Arbeitsaufträge in EINER Tabelle? Ändert sich nach vier Wochen die Datenstruktur so radikal, daß neue Aufträge nicht mehr in der bisherigen Tabelle erfaßt werden können?

        Es wurde an mich der Wunsch herangetragen, die Tabellennamen zu ändern.

        Wirklich den Tabellennamen? So daß alle SQL-Statements geändert werden müssen?

        Oder geht es darum, in irgendeiner Darstellung der Tabelle die Überschrift darüber zu verändern?

        Ändern des Tabellennamens:
        Funktioniert das überhaupt, wenn foreign keys mit im Spiel sind?

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
        1. Om nah hoo pez nyeetz, MudGuard!

          Das klingt seltsam. Warum sind nicht alle Arbeitsaufträge in EINER Tabelle? Ändert sich nach vier Wochen die Datenstruktur so radikal, daß neue Aufträge nicht mehr in der bisherigen Tabelle erfaßt werden können?

          Ich habe auf dem Weg zur Arbeit auch noch mal drüber nachgedacht und bin zu dem Ergebnis gekommen, dass sich das Problem gar nicht stellt, wenn ich das ganz klassisch mache. Also etwa eine Tabelle Aufgabenblock o.ä., eine Tabelle Aufgaben und dazwischen eine 1:n-Beziehung.

          Eure Antworten haben mich dahin geführt. Vielen Dank für die Anregungen.

          Matthias

          --
          Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Ventil und Ventilator.