Modelle, Datenbeschaffung und Vergleichsregeln auseinanderhalten.
Ein Schema beschreibt die Struktur von Daten. Ein Spaltenmodell kann Name, Typ und Nullability enthalten; ein Tabellenmodell sammelt solche Spalten. Ein Loader beschafft diese Beschreibung, ein Comparator wendet Regeln darauf an, ein Bericht stellt die gefundenen Unterschiede dar. Keine dieser Rollen ersetzt die anderen. Für unsere erfundene Bibliothek vergleichen wir Python-Objekte, ohne eine Datenbank zu verbinden. Fehlende Elemente sind Quelle minus Ziel, zusätzliche Elemente Ziel minus Quelle, gemeinsame Elemente die Schnittmenge. Gemeinsame Tabellen brauchen anschließend eine Prüfung ihrer Spalten und aktivierten weiteren Dimensionen. Eine richtige Tabellenmenge beweist noch keine Gleichheit ihrer Details.
Ein Beispiel
Quelle={BOOK,AUTHOR}, Ziel={BOOK,REVIEW}. AUTHOR fehlt, REVIEW ist zusätzlich, BOOK ist gemeinsam. Der Bericht kann REVIEW nur dann auslassen, wenn die gewählte Politik zusätzliche Tabellen bewusst ignoriert und diese Grenze im Bericht nennt. Das ist eine andere Aussage als dass REVIEW nicht existiere.
Python 3.11 · Lehrbeispiel
source = {"BOOK", "AUTHOR"}
target = {"BOOK", "REVIEW"}
print(sorted(source - target))
print(sorted(target - source))
print(sorted(source & target))
Erwartete Ausgabe
['AUTHOR']
['REVIEW']
['BOOK']