<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta>
      <journal-title-group>
        <journal-title>GI-Workshop on Foundations of Databases (Grundlagen von Daten-
banken), September</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Der BACKCHASE zur Unterstützung von Data Provenance und Schema-Evolution</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Florian Rose</string-name>
          <email>Florian.Rose@uni-rostock.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Andreas Heuer</string-name>
          <email>Andreas.Heuer@uni-rostock.de</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Lehrstuhl für Datenbank- und, Informationssysteme, Institut für Informatik, Universität Rostock</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Lehrstuhl für Datenbank- und, Informationssysteme, Institut für Informatik, Universität Rostock</institution>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2021</year>
      </pub-date>
      <volume>0</volume>
      <fpage>1</fpage>
      <lpage>03</lpage>
      <abstract>
        <p>Der CHASE-Algorithmus ist ein Multifunktionswerkzeug der Datenbankforschung. Ursprunglich fur die Optimierung des Datenbankentwurfs genutzt, wird er heutzutage auch fur den Datenaustausch und Data-Cleaning verwendet und kann ebenfalls genutzt werden, um Anfragen zu optimieren. Fur einige Anwendungen reicht eine CHASE-Phase alleine jedoch nicht aus. Teilweise wird eine Nachbearbeitung, eine sogenannte BACKCHASE-Phase, benotigt. Dies ist beispielsweise der Fall, wenn Auswertungen zum Zweck der Ruckverfolgbarkeit (Provenance) invertiert werden sollen. In dieser Arbeit fassen wir zusammen, wie der Ansatz des CHASE und BACKCHASE verwendet werden kann, um die Why-Provenance von Anfragen unter Schema-Evolution zu gewahrleisten.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>KURZFASSUNG</title>
    </sec>
    <sec id="sec-2">
      <title>MOTIVATION</title>
      <p>2.
2.1</p>
    </sec>
    <sec id="sec-3">
      <title>STAND DER FORSCHUNG</title>
    </sec>
    <sec id="sec-4">
      <title>CHASE &amp; BACKCHASE</title>
      <p>
        Der CHASE-Algorithmus ging aus der Datenbankforschung
als Werkzeug zum Schlussfolgern mit
Integritatsbedingungen hervor. Dabei wird eine Menge von Abhangigkeiten ,
der CHASE-Parameter, auf ein CHASE-Objekt d angewandt
und erweitert dies durch Forward-Chaining so, dass d dem
CHASE-Parameter genugt [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Grundlegend werden zwei
Arten von Abhangigkeiten, die equality-generating
dependencies (EGDs) und tuple-generating dependencies (TGDs),
unterschieden [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. Eine EGD stellt die Gleichheit
bestimmter Werte sicher und ist eine Formel der Form
      </p>
      <p>8~x : F (~x) ! x1 = x2:
Hierbei ist ~x ein Variablenvektor mit x1; :::; xn als
Komponenten. F ist eine Konjunktion von Pradikaten der Form
Ri(~x), wobei Ri Relationenschemata des Datenbankschemas
sind. TGDs hingegen rufen die Generierung neuer Tupel
hervor und sind Formeln der Form
8~x : F1(~x) ! 9~y : F2(~x; ~y):
Hierbei muss in F1 jede Komponente aus ~x mindestens
einmal vorkommen. Eine besondere Form von TGDs sind
sourceto-target-TGDs (s-t-TGDs). Bei ihnen ist der Rumpf
(linke Seite der Abhangigkeit) uber einem Quellschema S und
der Kopf (rechte Seite) uber einem Zielschema S0 de niert.
Durch die Beschrankung auf Konjunktionen von
Pradikaten, betrachten wir im Folgenden nur Anfragen und
Evolutionsoperationen, die ausschlie lich als Konjunktionen
darstellbar sind. Disjunktionen lassen sich spatestens in der
BACKCHASE-Phase nach der Invertierung nicht ohne
Zusatzinformationen (Zeugenbasis einzelner Tupel)
verarbeiten. Bei der Anwendung des CHASE (siehe Algorithmus 1)
wird dann im CHASE-Objekt nach Mustern des Rumpfes
jeder Abhangigkeit gesucht. Ein solcher Trigger ist aktiv, falls
der Kopf seiner entsprechenden Abhangigkeit noch nicht im
CHASE-Objekt erfullt ist. Da sich diverse Bedingungen als
Algorithmus 1: Standard-CHASE auf CHASE-Objekt d
if
ist aktiv then
if hat Form 8~x : F1(~x) ! 9~y : F2(~x; ~y) then</p>
      <p>Nimm Kopf von in d auf
else if hat Form 8~x : F (~x) ! x1 = x2 then
if x1; x2 sind Konstanten und x1 6= x2 then</p>
      <p>CHASE schlagt fehl
else if x2 ist Konstante then</p>
      <p>x1 x2
else
x2</p>
      <p>
        x1
EGDs bzw. TGDs formulieren lassen und die Berechnung
deren Implikation auf Instanzen oder Anfragen
verschiedene Ziele erfullen kann, ist der CHASE vielseitig einsetzbar.
So lassen sich unter anderem (1) Datenmigrationen als
s-tTGDs fur den CHASE auf einer Datenbankinstanz
formulieren [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], (2) Data-Cleaning-Probleme durch Anwendung des
CHASE auf einer Datenbankinstanz mit bestimmten EGDs
zur Bereinigung losen [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], (3) Anfragen durch Sichten
beantworten, indem man den CHASE mit den Sichtde
nitionen auf der Anfrage als CHASE-Objekt ausfuhrt [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], sowie
(4) Anfragen semantisch optimieren, indem man
Integritatsbedingungen als CHASE-Parameter in die Anfrage
einarbeitet [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ].
      </p>
      <p>
        Fur die Anwendungsfalle (3) und (4) reicht eine einzelne
CHASE-Phase jedoch nicht aus. Die CHASE-Phase
berechnet hier ein Zwischenergebnis, welches fur die
BACKCHASEPhase, in diesem Fall eine zweite Anwendung des CHASE
mit modi zierten Abhangigkeiten, verwendet wird [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Die
BACKCHASE-Phase muss aber nicht zwingend eine
zweite CHASE-Phase sein [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Je nach Anwendungsfall konnen
auch hier verschiedene Techniken Ansatz nden.
      </p>
      <p>
        In Abbildung 1 zeigen wir schematisch den Einsatz des
BACKCHASE fur die Anwendungsfalle (3) und (4): Im
Anwendungsfall (3) wird eine Anfrage Q an Basisrelationen
einer Datenbanken um Zugri e auf verwendbare Sichten
angereichert, die CHASE-Parameter enthalten dann die
Sichtde nitionen. Die BACKCHASE-Phase minimiert nun
diese erweiterte Anfrage und schrankt sie (falls moglich)
ausschlie lich auf Zugri e uber die Sichtrelationen ein (Anfrage
Q0). In der BACKCHASE-Phase wird der CHASE mit
inversen Sichtde nitionen angewendet [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Im Anwendungsfall
4 werden Integritatsbedingungen als CHASE-Parameter in
Q'
      </p>
      <p>CHASE
BACKCHASE</p>
      <p>CHASE-Ergebnis</p>
      <p>CHASE(Q)</p>
      <p>
        Abbildung 1: CHASE und BACKCHASE
die Anfrage Q eingearbeitet. Die BACKCHASE-Phase
minimiert dann diese Anfrage, indem sie uber ussige
Operationen (etwa Verbunde) eliminiert. In diesem Anwendungsfall
ist die BACKCHASE-Phase ein durch homomorphe
Abbildungen der Anfrage gesteuerter, aquivalenzerhaltender
Reduktionsprozess [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. Die BACKCHASE-Phase wurde fur
die Anwendungsfalle (1) und (2) bisher nicht benotigt. Wir
werden sie in Abschnitt 3 aber einfuhren. Hier wollen wir
das Anfrageergebnis einer Anfrage, verstanden als
Datenbanktransformation wie in (1), mit Hilfe der
Why-Provenance auf die minimale Zeugenbasis, also die relevanten
Originaltupel aus der Datenbank, zuruckfuhren. Der Schritt der
Why-Provenance wird durch eine erweiterte inverse
Anfrage dargestellt, die wir als BACKCHASE-Phase verstehen.
Analog werden wir eine Schema-Evolution als eine
Datenbanktransformation wie in (1) verstehen. Um die neue
Datenbank nach der Evolution in die alte Darstellung vor der
Evolution ruckrechnen zu konnen, mussen wir auch hier die
Evolution in einer BACKCHASE-Phase invertieren.
2.2
      </p>
    </sec>
    <sec id="sec-5">
      <title>Data Provenance</title>
      <p>
        Die Provenance beschaftigt sich mit der Frage nach dem
Ursprung von Daten. Insbesondere ist dies fur die
Nachvollziehbarkeit von wissenschaftlichen Auswertungen
interessant. Hauptsachlich unterscheidet man drei
Abstraktionsstufen der Provenance, Where-, Why- und How-Provenance.
Diese beschreiben in unterschiedlichem Detailgrad, woher
die Ergebnisdaten stammen. Dies reicht von der Benennung
der Datenquellen (Where), also den Relationen und
Datenbankschemata [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], uber die Angabe der beteiligten Tupel
(Why), einer sogenannten Zeugenbasis [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], bis zu
ProvenancePolynomen (How) [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], welche aussagen, wie die beteiligten
Tupel kombiniert wurden.
      </p>
      <p>
        Der CHASE kann genutzt werden, um ein
Anfrageergebnis zu berechnen. Hierzu formuliert man die Anfrage als
s-t-TGD und wendet sie mittels des CHASE auf die
entsprechende Datenbankinstanz an. Aus dem Anfrageergebnis
lassen sich die beteiligten Tupel errechnen, indem man die
Inverse der Auswertung bildet. Hierzu fuhrt man den
CHASE auf der Ergebnisrelation mit der invertierten s-t-TGD
der Anfrage aus. Je nach Art der Anfrage konnen sich
unterschiedliche Arten von Inversen ergeben, welche mittels
zusatzlicher Provenance-Annotationen noch verbessert werden
konnen [
        <xref ref-type="bibr" rid="ref11 ref2">2, 11</xref>
        ]. Ziel ist es, eine moglichst genaue
CHASEInverse zu erhalten, auch wenn Anfragen in der Regel
verlustbehaftet sind und sich somit nicht jede Information
rekonstruieren lasst.
2.3
      </p>
    </sec>
    <sec id="sec-6">
      <title>Schema-Evolution</title>
      <p>
        Die Evolution eines Datenbankschemas ist der U bergang
von einer Schemaversion in eine neue. Diese sind durch A
nderungen im Anwendungsgebiet begrundet, z. B. neue
relevante Informationen, die zuvor nicht erhoben wurden, oder
neue Anforderungen an die Anwendung [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. Deshalb
reichen die moglichen Operationen wahrend einer Evolution
vom simplen Hinzufugen eines neuen Attributs bis hin zu
komplexen Berechnungen neuer Werte. Auch
Evolutionsoperationen lassen sich als s-t-TGDs und EGDs
darstellen. Hierbei ist das Quellschema die aktuelle
Schemaversion und das Zielschema die Folgeversion. Sowohl Anfragen
als auch Schema-Evolution liegen die Basisoperationen
Selektion (Attribut gleich Attribut und Attribut gleich
Konstante), Projektion, Verbund und die Umbenennung von
Relationen und Attributen zugrunde. In beiden Fallen
interessieren uns die CHASE-Inversen [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Diese drucken den
Grad des Informationsverlustes aus, wenn wir versuchen,
die Originalinstanz aus dem CHASE-Ergebnis durch
Invertierung der Abhangigkeiten zu rekonstruieren. Dies ist fur
unseren Anwendungsfall von gro er Relevanz, da die
Berechnung der an der Anfrage beteiligten Tupel und ihrer
Attribute Grundlage des in Abschnitt 3 vorgestellten
Ansatzes ist. Dafur rekonstruieren wir die Teilinstanz unserer
Originaldatenbank, mussen dabei aber darauf achten, dass
keines der fur die Anfrage bzw. Evolution relevanten Tupel
bei der Rekonstruktion verloren geht. Daher benotigen wir
bezuglich der an einer Anfrage bzw. Evolution beteiligten
Tupel eine tupelerhaltend-relaxierte Inverse, d. h., dass die
durch den BACKCHASE gewonnene Datenbankinstanz auf
die Originalinstanz abbildbar ist und die gleiche Tupelzahl
besitzt [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
    </sec>
    <sec id="sec-7">
      <title>NUTZUNG DES BACKCHASE</title>
      <p>Zunachst zeigen wir in Unterabschnitt 3.1, wie die oben
genannten Basisoperatoren und komplexere Operationen fur
Anfragen und Evolutionen als Abhangigkeiten (s-t-TGDs),
und somit als Parameter fur den CHASE-Algorithmus,
formuliert werden konnen. Wir verwenden hierbei eine
Kurzschreibweise, bei der nur existenzquanti zierte Variablen
explizit als solche angegeben werden. Die Namen der Variablen
entsprechen den Namen der Attribute.</p>
      <p>
        Danach werden wir in Unterabschnitt 3.2 dann die Basis
fur den BACKCHASE-Prozess legen, indem wir die
Provenance- und Evolutionsschritte uber mehrere Stufen hin
invertieren und komponieren. Hierbei mussen wir
insbesondere berucksichtigen, dass wir bei der Komposition
verschiedener Schritte wertvolle Zwischeninformationen nicht
verlieren. Die s-t-TGDs werden hier als Transformationssprache
nicht mehr ausreichen, wir mussen auf Konstrukte der
Pradikatenlogik zweiter Ordnung (so-TGDs, second-order TGDs)
ausweichen [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
3.1
      </p>
    </sec>
    <sec id="sec-8">
      <title>Anfragen und Schema-Evolution als s-t</title>
    </sec>
    <sec id="sec-9">
      <title>TGDs</title>
      <p>
        Im Nachfolgenden zeigen wir am Beispiel der Projektion,
wie sich Operatoren fur Anfragen und Schema-Evolutionen
als s-t-TGDs darstellen lassen. Weitere Details und
Operatoren nden sich in [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ].
      </p>
      <p>Die Projektion lasst sich als s-t-TGD formulieren, indem
nur die Attribute, auf welche projiziert werden soll, im Kopf
der Abhangigkeit vorkommen, z. B.</p>
      <p>
        R(A1; A2; A3; :::; An) ! R0(A1; A2):
Da der Standard-CHASE jedoch nur fur aktive Trigger den
Kopf der Abhangigkeit in das Ergebnis der Anfrage bzw.
Evolution aufnimmt, wird hier eine Duplikateliminierung
vorgenommen, die nur eine relaxierte CHASE-Inverse bedeutet
[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. In Bezug auf die an der Anfrage beteiligten Tupel genugt
dies jedoch einer tupel-erhaltend relaxierten Inverse, da
Tupel, fur die kein aktiver Trigger existiert, keinen Ein uss auf
das Anfrageergebnis haben [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. Die Inverse der obigen
s-tTGD lautet dann
      </p>
      <p>R0(A1; A2) ! 9A3; :::An : R(A1; A2; A3; :::; An)
Im Gegensatz zu Anfragen kann bei der Evolution jedoch
noch ein Spezialfall auftreten. Da bei einer Schema-Evolution
auch neue Attribute hinzukommen konnen, kann dort auch
auf Attribute projiziert werden, die nicht im ursprunglichen
Schema vorkommen. Fur die Invertierung sind solche neu
hinzugefugten Attribute jedoch unproblematisch, da sie
keinen Ein uss auf die aus der Ursprungsrelation stammenden
Informationen haben.</p>
      <p>
        Die in [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] beschriebenen, grundlegenden Operatoren
werden in Anfragen und Evolutionsoperationen hau g verknupft
und bieten somit die Grundlage der meisten bekannten
Operationen zur Schema-Modi kation, die in [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] vorgestellt
wurden. Dabei gilt, dass der weniger genaue Inversentyp
dominiert [
        <xref ref-type="bibr" rid="ref11 ref2">2, 11</xref>
        ]. Hierbei muss jedoch in einem Fall besonders auf
die Projektion geachtet werden. Fur die Auswertung
relevante Attribute, z. B. Verbundbedingungen, die nicht im Kopf
der TGD vorkommen, mussen besonders markiert werden.
Darauf gehen wir spater in diesem Abschnitt genauer ein. Es
konnen aber auch komplexere Auswertungen vorkommen,
die z. B. Aggregate berechnen oder vollig neue Werte
generieren. In diesen Fallen ist der Standard-CHASE nicht
ausreichend, um die CHASE- oder BACKCHASE-Phase
abzuschlie en. Solche Auswertungen, lassen sich jedoch mit Hilfe
von second-order-Abhangigkeiten umsetzen [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Hier
konnen Funktionen de niert werden, welche die Generierung
neuer Konstanten erlauben. Sind diese selbst nicht
invertierbar, werden an den entsprechenden Stellen in der
BACKCHASE-Phase Nullwerte generiert.
3.2
      </p>
    </sec>
    <sec id="sec-10">
      <title>Komposition von Provenance- und Evolutionsschritten</title>
      <p>Im Folgenden stellen wir einen Ansatz vor, welcher die
Berechnung derjenigen Tupel erlaubt, welche nach einer
Evolution nicht mehr ausreichend in der nachsten Schemaversion
abgebildet werden, um bestimmte Anfragen zu
reproduzieren. Hierzu setzen wir voraus, dass alle Tupel eine eindeutig
ID (TID) besitzen und die Evolutionsschritte und Anfragen,
die reproduzierbar bleiben sollen, gespeichert werden. Beim
U bergang wird die Menge der Tupel berechnet, die nach
der Evolution nicht mehr fur die Beantwortung der
ausgewahlten Anfragen ausreichen. Diese Menge nennen wir im
Folgenden IP rov und muss nach der Schema-Evolution
zusatzlich aufbewahrt werden.</p>
      <p>
        Dieser Prozess lauft in drei Teilschritten ab. Zunachst
berechnen wir mittels des CHASE und BACKCHASE fur jede
Anfrage, jeweils durch eine s-t-TGD abgebildet, ihr Ergebnis
und die Menge der Tupel, die tatsachlich an der Auswertung
beteiligt waren. Diese Mengen nennen wir I0(S).
Anschlieend berechnen wir analog die Datenbank in der nachsten
Schemaversion (I(S0)), basierend auf den
Evolutionsoperationen, die ebenfalls als s-t-TGDs dargestellt werden, sowie
die Menge der Tupel J, die nach der Evolution durch
Invertierung abbildbar sind. Im letzten Teilschritt suchen wir
Abbildungen von Tupeln aus I0(S) in J. Existiert eine
solche Abbildung fur ein Tupel, ist es in der nachfolgenden
Schemaversion ausreichend abgebildet, um fur die Anfragen
verwendet zu werden. Ist dies nicht der Fall, muss es zum
Zweck der Reproduzierbarkeit aufbewahrt werden.
Provenance der Anfragen. In [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] wurde vorgestellt, wie
eine Anfrage Q0 auf der nachsten Schemaversion S0 nach der
Evolution E aussehen muss, um das Ergebnis der
ursprunglichen Anfrage Q auf der alten Schemaversion S zu
produzieren. Hierzu muss Q0 der Ausfuhrung von Q auf dem alten
Datenbestand entsprechen. Es gilt also
      </p>
      <p>Q0(S0) = Q(E 1(S0)):
Da CHASEE 1 (S0) jedoch nicht zwangslau g alle Tupel
ausreichend wiederherstellt, um die Anfrage Q zu
beantworten, mussen dem Ergebnis noch die eingefrorenen Tupel
IP rov hinzugefugt werden. So ergibt sich fur den allgemeinen
Fall</p>
      <p>Q0(S0) = Q(E 1(S0) [ IP rov):
Die erste Phase der Berechnung von IP rov identi ziert die
beteiligten Tupel fur alle ausgewahlten Anfragen Qi.
i=1
n
I0(S) = [ CHASEQ 1 (CHASEQi (I))
i
Da bei Anfragen oder Evolutionsschritten Attribute, die fur
die Berechnung dieser relevant sind, herausprojiziert werden
konnen, muss abgesichert werden, dass diese Attribute
spater erkannt werden konnen. Da Konstanten bei der
Invertierung einer s-t-TGD weiter erhalten bleiben, ist die Selektion
A = c unproblematisch. Verbundattribute bzw.
Attributvergleiche Ai = Aj, bei denen diese Attribute nicht im Kopf
der TGD auftauchen, beein ussen die Auswertung, werden
aber nach dem BACKCHASE mit Nullwerten in den
entsprechenden Tupeln besetzt. Um diese von Attributen
abzuheben, die nicht fur die Auswertung relevant sind, markieren
wir Variablen, die im Kopf der invertierten s-t-TGD
mehrfach vorkommen aber existenzquanti ziert sind, als
besondere Variablen AiP rov. Diese generieren beim CHASE spezielle
Nullwerte (Provenance-Nullwerte) jP rov.</p>
      <sec id="sec-10-1">
        <title>Provenance der Schema-Evolution. Anschlie end fuhren wir</title>
        <p>die gleiche Berechnung fur die Evolution E durch, um
herauszu nden, welche Tupel sich nach der Evolution
rekonstruieren lassen.</p>
        <p>J = CHASEE 1 (CHASEE(I)) = CHASEE 1 (I(S0))
Hierbei mussen wir Provenance-Nullwerten keine Beachtung
schenken, da wir uns nur dafur interessieren, welche
Informationen des alten Schemas im neuen erhalten bleiben. Da
hier die Evolution berechnet werden soll, bedeutet dies
allerdings auch die Berechnung neuer TIDs, falls Tupel nach
der Evolution zusammenfallen oder aufgesplittet werden. Im
allgemeinen Fall reicht der Standard-CHASE hier nicht aus.
Betrachten wir zur Veranschaulichung folgende Beispiele.
Das Attribut Z der Relation R auf der Datenbankinstanz
I(S) soll nach der Evolution E ebenfalls durch das
Attribut Y abgedeckt werden. In diesem Fall werden Tupel aus
R aufgesplittet, sodass potenziell neue TIDs notig werden.
Berechnet man nun CHASEE(I), ergibt sich die folgende
Relation R auf der Datenbankinstanz I(S0).</p>
        <p>E : R(tid; x; y; z) ! 9T id2; T id3 : R(T id2; x; y) ^ R(T id3; x; z)
Diese Nullwerte mussen nun durch entsprechende
Konstanten fur neue TIDs ersetzt werden. Im Falle des Aufsplittens
TID
1
2
(b) Relation R auf I(S0)
Tabelle 1: Relation R vor und nach Anwendung des CHASE
TID
1
2</p>
        <p>X
1
1</p>
        <p>Y
1
2
(a) Relation R2</p>
        <p>TID
1</p>
        <p>X
1
(b) Relation Rx</p>
        <p>TID
von Tupeln kann dies direkt uber second-order-TGDs
passieren, die statt Nullwerten uber eine Funktion neue,
eindeutige IDs berechnen, z. B. UUIDs. Fallen jedoch auch Tupel
zusammen, z. B. weil ein Attribut durch die Evolution
entfernt wird, funktioniert dies nicht. Hier konnten redundante
Tupel mit unterschiedlichen IDs entstehen. Betrachten wir
hierzu folgendes Beispiel der Relation R2 und der Evolution
E2.</p>
        <p>E2 : R2(tid; x; y) ! 9T id2; T id3 : Rx(T id2; x) ^ Ry(T id3; y)
Berechnet man nun CHASEE(I), ergeben sich die in
Tabelle 2 dargestellten Relationen Rx und Ry in der nachsten
Schemaversion. Hier konnen nicht direkt neue TIDs durch
die s-t-TGD der Evolution vergeben werden, da sonst ein
zusatzliches Tupel in Rx generiert wird, welches jedoch den
gleichen X-Wert tragt. Solche Redundanzen sind nicht
erwunscht, sodass in einem Zwischenschritt die Nullwerte durch
entsprechende Konstanten ersetzt werden mussen. Des
weiteren muss diese Vergabe neuer Konstanten invertierbar sein,
damit bei der Invertierung der Evolution auch alte TIDs
errechnet werden konnen. Daher bietet es sich an, ein
Verzeichnis uber die Provenance der TIDs zu fuhren, aus dem
abgelesen werden kann, aus welchen Tupeln (TIDs) der vorherigen
Schemaversion die Tupel der neuen Schemaversion gebildet
wurden. Dies kann uber eine Hilfstabelle T ID(tidS; tidS0 )
realisiert werden, um welche die Abhangigkeiten fur die
Evolution erweitert werden mussen. Erweitern wir E2 um die
Nutzung dieser Hilfsrelation, ergibt sich folgende s-t-TGD
E3 : R2(tid; x; y) ! 9T id2; T id3 : Rx(T id2; x) ^ Ry(T id3; y)
^T ID(tid; T id2) ^ T ID(tid; T id3):
Bevor die Invertierung des Evolutionsschrittes statt ndet,
muss nun noch die Cleaning-EGD angewandt werden.
Hierfur verwenden wir second-order-EGDs der Form</p>
        <p>T ID(tid; tid2) ! tid2 = f (tid2):
Dabei ist f eine Funktion, die bei Eingabe eines Nullwertes
eine neue TID (z. B. eine UUID), bei Eingabe einer
Konstante jedoch diese selbst zuruckgibt. Dies muss fur alle TIDs
durchgefuhrt werden. Besonders muss dabei darauf geachtet
werden, dass die nummerierten Nullwerte global durch die
Konstanten uberschrieben werden.</p>
        <p>
          Berechnung der zu speichernden Tupel. Im nalen Schritt
berechnen wir nun IP rov. Hierzu suchen wir die Menge
derjenigen Tupel aus I0(S), die sich auf Tupel in J abbilden
lassen. Diese Menge nennen wir JM . Ein normaler Nullwert
in einem Tupel in I0(S) bedeutet, dass die Auswertung, aus
deren BACKCHASE-Phase dieses Tupel stammt, jenes
Attribut nicht benotigt. Diese Nullwerte konnen daher beliebig
auf Konstanten oder Nullwerte in J abgebildet werden.
Anders verhalt sich dies jedoch bei den Provenance-Nullwerten.
Da sie an der Auswertung beteiligt sind, durfen diese nur
auf Konstanten abgebildet werden. Sonst gehen z. B.
Verbundkriterien und damit auch die Reproduzierbarkeit der
Anfrage verloren. IP rov ergibt sich dann aus denjenigen
Tupeln, die an der Anfrage beteiligt waren, aber nicht in JM
sind. Diese Tupel konnen dann in extra Tabellen
"eingefroren" werden, sodass sie fur die entsprechenden Anfragen
genutzt werden konnen. Weiter muss dazu bekannt sein, welche
Anfragen auf welcher Schemaversion gestellt wurden, damit
man wei , auf welche Schemaversion zuruckgerechnet
werden muss. Zudem mussen auch alle Evolutionsschritte, die
Schema S zu S0 transformieren, aufbewahrt werden, damit
das Zuruckrechnen auf alte Versionen gelingt. Es ist auch
moglich, die Evolutionsschritte zu komponieren und statt
mehrerer Evolutionen nur die Kompositionen dieser zu
speichern [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]. Dies verhindert jedoch das Berechnen der
zwischenzeitigen Schemaversionen. Im allgemeinen Fall kann
auf jeder Schemaversion Si mindestens eine Anfrage gestellt
werden, fur welche wir die Reproduzierbarkeit voraussetzen
wollen. Speichert man nur die s-t-TGD Ekomp, welche die
Evolution von Si 1 uber Si nach Si+1 beschreibt, so ist
es nicht mehr moglich Si selbst zu berechnen. Damit kann
die Reproduzierbarkeit der Anfrage auf ihrer ursprunglichen
Schemaversion nicht mehr gewahrleistet werden. Kommen
jedoch Falle vor, bei denen zwischen zwei Schema-Evolution
keine derartigen Auswertungen stattfanden, kann die
Komposition der Evolutionsoperationen eingesetzt werden, um
Zwischenschritte bei zukunftigen Berechnungen
einzusparen.
        </p>
        <p>Beispiel. Betrachten wir zur Veranschaulichung folgendes
Anwendungsbeispiel. Gegeben sei die folgende Relation in
Tabelle 3, sowie die Anfrage</p>
        <p>P erson(vo; na; 18; an) ! Q(na; an):
Aus Datenschutzgrunden soll das Alter in der nachsten
Schemaversion in Altersbereiche eingeteilt werden. Dies geschehe
durch folgende Evolutionsoperation</p>
        <p>P erson(vo; na; al; an) ! P ersonAnon(vo; na; f (al); an):
Der Altersbereich wird durch eine Funktion f bestimmt,
welche das Alter in den entsprechenden Bereich (0 5; 6 10; :::)
einteilt. Wir vernachlassigen hier die TIDs, da keine der</p>
      </sec>
      <sec id="sec-10-2">
        <title>Vorname</title>
        <p>Max
Erika
Paul</p>
      </sec>
      <sec id="sec-10-3">
        <title>Name</title>
        <p>Mustermann
Musterfrau
Muller</p>
      </sec>
      <sec id="sec-10-4">
        <title>Alter</title>
        <p>30
18
18</p>
      </sec>
      <sec id="sec-10-5">
        <title>Anschrift</title>
        <p>Parkstra e 3
Schlossallee 7
Hafenstra e 12</p>
        <sec id="sec-10-5-1">
          <title>Tabelle 3: Person (I(S))</title>
          <p>s-t-TGDs zu einem Zusammenfallen oder Aufsplitten von
Tupel fuhrt und diese somit nie verandert werden. Zunachst
berechnen wir durch den CHASE das Anfrageergebnis Q,
welches uns Namen und Anschriften der Personen liefert,
die 18 Jahre alt sind (Tabelle 4). Anschlie end fuhren wir
den CHASE mit der invertierten Anfrage</p>
          <p>Q(na; an) ! 9V o : P erson(V o; na; 18; an)</p>
        </sec>
      </sec>
      <sec id="sec-10-6">
        <title>Name</title>
        <p>Musterfrau
Muller</p>
      </sec>
      <sec id="sec-10-7">
        <title>Anschrift</title>
        <p>Schlossallee 7
Hafenstra e 12</p>
        <sec id="sec-10-7-1">
          <title>Tabelle 4: Anfrageergebnis Q</title>
          <p>auf dem Anfrageergebnis aus und erhalten somit die Menge
derjenigen Tupel, die an der Anfrage beteiligt waren
(abgebildet in Tabelle 5). Danach berechnen wir I(S0). Hierfur</p>
        </sec>
      </sec>
      <sec id="sec-10-8">
        <title>Vorname</title>
        <p>Der hier vorgestellte Ansatz verwendet den
CHASE-Algorithmus zur Sicherstellung der Reproduzierbarkeit von
Anfragen unter Schema-Evolution. Bekannterweise terminiert
der CHASE-Algorithmus im allgemeinem Fall nicht
zwingend, wird aber an zwei stellen der Berechnung eingesetzt.
Im hier gezeigten Anwendungsfall ist die Terminierung
allerdings garantiert. Grund dafur ist, dass in diesen
CHASEPhasen Ziel- und Quellschemata strikt getrennt sind,
sodass auch neu generierte Werte nicht wahrend der selben
CHASE-Anwendung gelesen werden und somit niemals
Zyklen entstehen konnen.</p>
        <p>Die Berechnung der nachfolgenden Schemaversion schlie t
die Berechnung neuer TIDs ein. Da diese stets eindeutig sein
mussen, und nachfolgend bei der Ruckrechnung in alte
Schemaversionen rekonstruiert werden mussen, schlagen wir vor
dies uber eine s-o-Abhangigkeit zu losen, die neue
eindeutige Werte (z. B. in Form von UUIDs) liefert. Diese wiederum
werden in einer Hilfstabelle abgelegt, um die Invertierung
von Abhangigkeiten zu unterstutzen. Dies stellt eine
Erweiterung des Standard-CHASE da, welche es erlaubt zur
Laufzeit neue Konstanten zu generieren. In unserem Fall ist dies
vergleichbar mit einer EGD, deren Kopf neben einer
Variable auch eine Konstante enthalt. Diese wird durch eine
gesonderte Methode im Programm berechnet und uberpruft
die Eingabe auf ihren Typ bezuglich des CHASE. Handelt
es sich um eine Konstante, soll diese selbst zuruckgegeben
werden (TID bereits generiert). Bei einem Nullwert wird
eine neue TID zuruckgegeben, welche fortan in allen Tupeln
den entsprechenden Nullwert ersetzt.</p>
      </sec>
    </sec>
    <sec id="sec-11">
      <title>AUSBLICK</title>
      <p>In diesem Beitrag haben wir einen Ansatz vorgestellt, um
mit Hilfe des CHASE Daten zu identi zieren, die durch
eine Schema-Evolution nicht ausreichend abgebildet werden,
um bestimmte Anfragen zu reproduzieren. Die hier
gezeigte Vorgehensweise lie e sich in den Evolutionsprozess
einbinden, um nur diejenigen Daten aufzubewahren, welche fur
die Reproduzierbarkeit ausgewahlter Anfragen relevant sind.
Hierbei haben wir jedoch nur die Schema- und keine
Datenevolution betrachtet, sodass der hier vorgestellte Ansatz A
nderungen der Daten au erhalb von Schema-Evolution nicht
berucksichtigt.</p>
      <p>Eine o ene Frage ist weiter, wie mit mehreren
SchemaEvolution umgegangen werden kann. Tupel der
Schemaversion Si+1, die fur eine ausgewahlte Anfrage Q des Schemas
Si relevant sind, mussen auch beim U bergang in die
Schemaversion Si+2 ausreichend abgebildet werden, sodass Q immer
noch reproduzierbar ist. Der hier vorgestellte Algorithmus
bietet dafur keine U berprufung. Die Komposition der
Evolutionsoperationen von Schema Si zu Si+2 kann genutzt
werden, um dies zu erreichen. Allerdings ist die Berechnung der
Kompositionen uber alle Schemaversionen und das U
berprufen fur jede gewahlte Anfrage vorheriger Schemaversionen
ein gro er Aufwand, welcher bei jeder Evolution betrieben
werden muss. Wunschenswert ist eine Variante, welcher das
aktuelle Schema genugt, um diese U berprufung der
nachsten Evolution durchzufuhren, z. B. durch Annotation
entsprechender Tupel und Attribute.</p>
      <p>
        Eine weitergehende Fragestellung ist, wie wir den hier fur
einen Anwendungsfall vorgestellten BACKCHASE-Prozess
fur verschiedene Anwendungsfalle (in Abschnitt 2
Anwendungsfalle 1 bis 4) vereinheitlichen konnen, da wir alle
Anwendungen mit einem einheitlichen
CHASE&amp;BACKCHASETool (ChaTEAU, [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]) unterstutzen wollen.
      </p>
    </sec>
    <sec id="sec-12">
      <title>LITERATUR</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>T.</given-names>
            <surname>Auge</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Heuer</surname>
          </string-name>
          .
          <article-title>Combining Provenance Management and Schema Evolution</article-title>
          . In IPAW, volume
          <volume>11017</volume>
          of Lecture Notes in Computer Science, pages
          <volume>222</volume>
          {
          <fpage>225</fpage>
          . Springer,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>T.</given-names>
            <surname>Auge</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Heuer</surname>
          </string-name>
          .
          <article-title>The Theory behind Minimizing Research Data: Result equivalent CHASE-inverse Mappings</article-title>
          .
          <source>In LWDA</source>
          , volume
          <volume>2191</volume>
          <source>of CEUR Workshop Proceedings</source>
          , pages
          <fpage>1</fpage>
          <lpage>{</lpage>
          12. CEUR-WS.org,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>T.</given-names>
            <surname>Auge</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Heuer</surname>
          </string-name>
          .
          <article-title>ProSA - using the CHASE for provenance management</article-title>
          .
          <source>In ADBIS</source>
          , volume
          <volume>11695</volume>
          of Lecture Notes in Computer Science, pages
          <volume>357</volume>
          {
          <fpage>372</fpage>
          . Springer,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>T.</given-names>
            <surname>Auge</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Manthey</surname>
          </string-name>
          ,
          <string-name>
            <surname>S.</surname>
          </string-name>
          <article-title>Jurgensmann, S. Feistel, and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Heuer</surname>
          </string-name>
          .
          <article-title>Schema evolution and reproducibility of long-term hydrographic data sets at the IOW</article-title>
          .
          <string-name>
            <surname>In</surname>
            <given-names>LWDA</given-names>
          </string-name>
          , volume
          <volume>2738</volume>
          <source>of CEUR Workshop Proceedings</source>
          , pages
          <volume>258</volume>
          {
          <fpage>269</fpage>
          . CEUR-WS.org,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>M.</given-names>
            <surname>Benedikt</surname>
          </string-name>
          , G. Konstantinidis,
          <string-name>
            <given-names>G.</given-names>
            <surname>Mecca</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Motik</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Papotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Santoro</surname>
          </string-name>
          , and
          <string-name>
            <given-names>E.</given-names>
            <surname>Tsamoura</surname>
          </string-name>
          .
          <article-title>Benchmarking the Chase</article-title>
          .
          <source>In PODS</source>
          , pages
          <volume>37</volume>
          {
          <fpage>52</fpage>
          . ACM,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>P.</given-names>
            <surname>Buneman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Khanna</surname>
          </string-name>
          , and
          <string-name>
            <given-names>W. C.</given-names>
            <surname>Tan</surname>
          </string-name>
          .
          <article-title>Why and Where: A Characterization of Data Provenance</article-title>
          .
          <source>In ICDT</source>
          , volume
          <volume>1973</volume>
          <source>of Lecture Notes in Computer Science</source>
          , pages
          <volume>316</volume>
          {
          <fpage>330</fpage>
          . Springer,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>J.</given-names>
            <surname>Cheney</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Chiticariu</surname>
          </string-name>
          , and
          <string-name>
            <given-names>W. C.</given-names>
            <surname>Tan</surname>
          </string-name>
          . Provenance in Databases: Why, How, and
          <string-name>
            <surname>Where</surname>
          </string-name>
          .
          <source>Found. Trends Databases</source>
          ,
          <volume>1</volume>
          (
          <issue>4</issue>
          ):
          <volume>379</volume>
          {
          <fpage>474</fpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>C.</given-names>
            <surname>Curino</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. J.</given-names>
            <surname>Moon</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Zaniolo</surname>
          </string-name>
          .
          <article-title>Graceful database schema evolution: the PRISM workbench</article-title>
          .
          <source>Proc. VLDB Endow</source>
          .,
          <volume>1</volume>
          (
          <issue>1</issue>
          ):
          <volume>761</volume>
          {
          <fpage>772</fpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>A.</given-names>
            <surname>Deutsch</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Hull</surname>
          </string-name>
          .
          <string-name>
            <surname>Provenance-Directed</surname>
            <given-names>Chase</given-names>
          </string-name>
          &amp;
          <article-title>Backchase</article-title>
          . In In Search of Elegance in
          <source>the Theory and Practice of Computation</source>
          , volume
          <volume>8000</volume>
          of Lecture Notes in Computer Science, pages
          <volume>227</volume>
          {
          <fpage>236</fpage>
          . Springer,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>R.</given-names>
            <surname>Fagin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. G.</given-names>
            <surname>Kolaitis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. J.</given-names>
            <surname>Miller</surname>
          </string-name>
          , and
          <string-name>
            <given-names>L.</given-names>
            <surname>Popa</surname>
          </string-name>
          .
          <article-title>Data exchange: semantics and query answering</article-title>
          .
          <source>Theor. Comput. Sci.</source>
          ,
          <volume>336</volume>
          (
          <issue>1</issue>
          ):
          <volume>89</volume>
          {
          <fpage>124</fpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>R.</given-names>
            <surname>Fagin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. G.</given-names>
            <surname>Kolaitis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Popa</surname>
          </string-name>
          , and
          <string-name>
            <given-names>W. C.</given-names>
            <surname>Tan</surname>
          </string-name>
          .
          <article-title>Schema Mapping Evolution Through Composition and Inversion</article-title>
          .
          <source>In Schema Matching and Mapping, Data-Centric Systems and Applications</source>
          , pages
          <volume>191</volume>
          {
          <fpage>222</fpage>
          . Springer,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>F.</given-names>
            <surname>Geerts</surname>
          </string-name>
          , G. Mecca,
          <string-name>
            <given-names>P.</given-names>
            <surname>Papotti</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Santoro</surname>
          </string-name>
          .
          <article-title>Mapping and cleaning</article-title>
          .
          <source>In ICDE</source>
          , pages
          <volume>232</volume>
          {
          <fpage>243</fpage>
          . IEEE Computer Society,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>S.</given-names>
            <surname>Greco</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Molinaro</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Spezzano</surname>
          </string-name>
          .
          <article-title>Incomplete Data and Data Dependencies in Relational Databases</article-title>
          .
          <source>Synthesis Lectures on Data Management</source>
          . Morgan &amp; Claypool Publishers,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>T. J.</given-names>
            <surname>Green</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Karvounarakis</surname>
          </string-name>
          , and
          <string-name>
            <given-names>V.</given-names>
            <surname>Tannen</surname>
          </string-name>
          .
          <article-title>Provenance semirings</article-title>
          .
          <source>In PODS</source>
          , pages
          <volume>31</volume>
          {
          <fpage>40</fpage>
          . ACM,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>A.</given-names>
            <surname>Heuer</surname>
          </string-name>
          , G. Saake, and
          <string-name>
            <given-names>K.</given-names>
            <surname>Sattler</surname>
          </string-name>
          . Datenbanken - Implementierungstechniken, 4. Au age.
          <source>MITP</source>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>M.</given-names>
            <surname>Meier</surname>
          </string-name>
          .
          <article-title>The backchase revisited</article-title>
          .
          <source>VLDB J</source>
          .,
          <volume>23</volume>
          (
          <issue>3</issue>
          ):
          <volume>495</volume>
          {
          <fpage>516</fpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>M. L. Mo</surname>
            ller, S. Scherzinger,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Klettke</surname>
            , and
            <given-names>U.</given-names>
          </string-name>
          <string-name>
            <surname>Sto</surname>
          </string-name>
          <article-title>rl. Why It Is Time for Yet Another Schema Evolution Benchmark - Visionary Paper</article-title>
          .
          <source>In CAiSE Forum</source>
          , volume
          <volume>386</volume>
          <source>of Lecture Notes in Business Information Processing</source>
          , pages
          <volume>113</volume>
          {
          <fpage>125</fpage>
          . Springer,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>F.</given-names>
            <surname>Rose</surname>
          </string-name>
          .
          <article-title>Erweiterung des CHASE-Werkzeugs ChaTEAU um eine BACKCHASE-Phase</article-title>
          . Masterarbeit, Universitat Rostock, DBIS,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>F.</given-names>
            <surname>Rose</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Heuer</surname>
          </string-name>
          .
          <article-title>Der BACKCHASE zur Unterstutzung von Data Provenance und Schema-Evolution</article-title>
          .
          <source>Technical Report CS 02-21</source>
          , Institut fur Informatik,
          <source>Universitat Rostock</source>
          ,
          <year>2021</year>
          . Langfassung dieses Artikels.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>