Irrelevanz der impliziten Zeilenreihenfolge ◦ ?

In einem relationalen Datenbanksystem kann der Benutzer nicht von einer gleichbleibenden Reihenfolge der Tabellenzeilen und -spalten ausgehen. Access gibt zum Beispiel die Zeilen einer SQL-Abfrage ohne ORDER BY-Klausel nicht immer in der gleichen Reihenfolge zurück. Wir veranschaulichen dies an der Ergebnistabelle eines Verbunds der TESTS-Tabellen MEHRFACH_ALTERNATIVEN und SCORESMC der Datenbank TESTVERWALTUNG_BACKEND.

### Ausgangstabellen

Die Tabellen MEHRFACH_ALTERNATIVEN und SCORESMC seien aus den folgenden Attributen zusammengesetzt:

> MEHRFACH_ALTERNATIVEN
> Fragenschlüssel
> Alternativentext
> Musterlösung

> SCORESMC
> Testschlüssel
> Matrikelnummer
> Fragenschlüssel
> Alternativenschlüssel 'Nummer der laufenden Alternative (1 bis 4)
> Teilnehmerlösung

Schlüsselattribute sind unterstrichen und Verbundattribute grün. MEHRFACH_ALTERNATIVEN enthält für jede Mehrfachwahlaufgabe der vier Alternativen, und SCORESMC nimmt für jede Mehrfachwahlaufgabe die Antworten aller Testteilnehmer auf. Ziel sei es, die Leistung jedes Teilnehmers zu ermitteln. Dazu müssen wir für jede Mehrfachalternative die Teilnehmerlösung mit der Musterlösung vergleichen. Es liegt nahe, durch einen Verbund von MEHRFACH_ALTERNATIVEN und SCORESMC die folgende Verbundtabelle zu bilden:

> LÖSUNGSVERGLEICH
> Testschlüssel
> Matrikelnummer
> Fragenschlüssel
> Alternativenschlüssel
> Teilnehmerlösung
> Musterlösung

Wir zeigen im nächsten Abschnitt, dass diese drei Tabellen nicht zum Ziel führen.

### Implizite Zeilenreihenfolge

Wenn wir die Werte der Attribute Musterlösung und Teilnehmerlösung so eingeben, dass die Reihenfolge der Mehrfachalternativen gleiche bleibt, dann erhalten wir die folgenden Tabellen:

> MEHRFACH_ALTERNATIVEN

> SCORESMC

In einem Datenbanksystem, welches diese Eingabereihenfolge beibehält, liesse sich die Leistung eines Testteilnehmers durch einen zeilenweisen Vergleich der Werte von Musterlösung und Teilnehmerlösung ermitteln. Wenn zum Beispiel die Alternativenreihenfolge der Musterlösung [0,-1,0,0] gleich ist wie jene der Teilnehmerlösung [-1,0,0,0], dann hat der Teilnehmer 100 des Tests 10 die MC-Aufgabe 1 falsch beantwortet ([0, -1, 0, 0] <> [-1, 0, 0,0]).

### Zeilenreihenfolge im relationale Datenmodell

Wenn Sie die Musterlösung und Teilnehmerlösung nach dem Vorbild des letzten Abschnitts vergleichen wollen, dann bilden Sie die folgende Verbundtabelle:

> Bilde aus den Attributen Testschlüssel, Matrikelnummer, Fragenschlüssel, Alternativenschlüssel, Teilnehmerlösung und Musterlösung von MEHRFACH_ALTERNATIVEN und SCORESMC eine Verbundtabelle, indem Du Ergebniszeilen aus jenen Ausgangszeilen bildest, die den gleichen Fragenschlüssel besitzen.

Wenn Sie diese Spezifikation in Access formulieren, dann erhalten Sie die folgende QBE-Abfrage:

Ergebnistabelle

Man stellt leicht fest, dass die Ergebnistabelle die Reihenfolge der Mehrfachalternativen "durcheinander gebracht" hat. Der Benutzer eines relationalen Datenbanksystems kann also nicht davon ausgehen, dass eine Tabellenoperation die Zeilenreihenfolge unverändert lässt. Die obige Verbundoperation bringt nicht nur die Zeilenreihenfolge durcheinander, sondern verdoppelt sogar die Zeilenzahl. Die Ergebnistabelle enthält zwar alle eindeutigen Kombinationen jener Ausgangszeilen, deren Fragenschlüssel gleich sind. Sie ermöglicht aber keinen Vergleich von Benutzer- und Musterlösung.

### Ein explizites Reihenfolgeattribut belässt die Zeilenreihenfolge

Eine Abfrage, die den gewünschten Vergleich der Benutzer- und Musterlösungen ermöglicht, muss die Reihenfolge der Zeilen von MEHRFACH_ALTERNATIVEN mit der Reihenfolge der Zeilen von SCORESMC explizit vergleichen können. Wir sind deshalb gezwungen, MEHRFACH_ALTERNATIVEN mit einem Attribut Alternativenschlüssel zu erweitern, das zusammen mit Fragenschlüssel jede Zeile von MEHRFACH_ALTERNATIVEN identifiziert und jede Musterlösung explizit ordnet:

> MEHRFACH_ALTERNATIVEN_mitAlternativenschlüssel

> SCORESMC

Das zusätzliche Attribut Alternativenschlüssel erlaubt einen Vergleich von Muster- und Teilnehmerlösung, der unabhängig von der impliziten Zeilenreihenfolge ist:

### Fazit

Tabellenoperationen, deren Ergebnis von der Eingabereihenfolge der beteiligten Tabellen abhängen soll, müssen die Reihenfolge explizit in einem Reihenfolgeattribut festhalten. Ein relationales Datenbanksystem kann nicht auf die implizite Zeilenreihenfolge zurückgreifen.