Mipe: Datenbankvergleich (Struktur)

Hallo zusammen,

ich bin auf der Suche nach einer (realtiv) einfachen Methode, zwei Datenbanken zu vergleichen. Hier sollen jedoch nicht die Daten sondern vielmehr die Struktur der Datenbanken verglichen werden.

Dies beinhaltet:

  • Feldtypen
  • Primärschlüssel
    etc.

Kann mir vielleicht jemand sagen, wie ich sowas am besten angehen soll. Das habe ich nämlich noch nie gemacht und stehe deshalb ziemlich blöd da.

Danke schonmal im voraus,
Mipe

  1. Hi Mipe,

    ich bin auf der Suche nach einer (realtiv) einfachen Methode, zwei Datenbanken zu vergleichen. Hier sollen jedoch nicht die Daten sondern vielmehr die Struktur der Datenbanken verglichen werden.
    Dies beinhaltet:

    • Feldtypen
    • Primärschlüssel
      etc.

    hm - was genau ist mit "etc." gemeint? Davon hängt ab, wie kompliziert Deine Aufgabe ist.

    Und was soll das Ergebnis Deines "Vergleichs" sein?
    Reicht ein true/false? Oder willst Du eher ein "diff" nachbilden?

    Sind zwei Tabellen dann "gleich", wenn sie dieselben Datentypen, aber in unterschiedlicher Anordnung enthalten?

    Sind zwei Datenbanken dann "gleich", wenn sie "gleiche" Tabellen, aber mit unterschiedlichen Namen enthalten?

    Kann mir vielleicht jemand sagen, wie ich sowas am besten angehen soll. Das habe ich nämlich noch nie gemacht und stehe deshalb ziemlich blöd da.

    Tendentiell würde ich auf beiden Seiten die Tabellenstrukturen exportieren (DESCRIBE liefert Angaben zu jeweils einer Tabelle, aber wo die Informationen über alle definierten Tabellen gespeichert sind, das hängt von Deinem RDBMS ab), die Ergebnisse normalisieren und dann ... tja, Du hast weiter oben ein paar Fragen zu beantworten ...

    Aber tendentiell vermute ich, daß Du bei der Normalisierung einiges mit einer cleveren Codierung erledigen kannst - beispielsweise Tabellenspalten nach Typen sortieren, falls deren Anordnung egal ist, und Tabellenmengen wirklich als Mengen und nicht als Listen darstellen (in Perl beispielsweise über Hashes).

    Versuche, die Semantik einer Tabellenstruktur in einem normalisierten String zu codieren. Dies reduziert Dein Problem auf den Vergleich zweier Mengen von Strings.

    Viele Grüße
          Michael

    --
    T'Pol: I apologize if I acted inappropriately.
    V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
    (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
     => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
    Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.