Database Reference
In-Depth Information
terne Kursleiter gibt, welche nicht zur Tabelle „Personen“ ge-
hören. Die Tabelle „Kursleiter“ hat folgenden Aufbau:
Kursleiter ( KLNr , Status, PNr, Name, Vorname, Firma,
Kurserfahrung)
Bei der Eingabe eines neuen Kursleiters werden nur noch die
notwendigen Felder der Tabelle ausgefüllt. Bei einem internen
Kursleiter müssen Status, Personalnummer, Name, Vorname
und die Kurserfahrung angegeben werden, während bei einem
externen Kursleiter Status, Name, Vorname und Firma genü-
gen. Es werden also bewusst Nullwerte akzeptiert, obwohl die-
se gemäß konzeptionellem Datenmodell zu vermeiden sind.
Das Attribut „Status“ wird beibehalten, weil man anhand dieses
Attributes einen Plausibilitätstest (siehe Abschnitt 4.7.1) durch-
führen kann. Wenn nämlich eine Personalnummer eingegeben
wird, obwohl im Statusfeld ein „E“ steht, dann ist die Eingabe
mit Sicherheit falsch. Die Gewährleistung der Datenkonsistenz
liegt in diesem Falle ganz beim Programmierer und wird durch
das Datenbanksystem nicht mehr unterstützt.
Das Generieren unserer Liste der Kursbesuche vereinfacht sich
nun sehr stark. Es wird keine Hilfstabelle oder UNION-
Operator mehr benötigt, weil die Transaktion E mit einer einzi-
gen SQL-Anweisung realisiert werden kann. Das SQL-
Kommandofile sieht dann folgendermassen aus:
Bild 3.75:
SQL-Komman-
dofile für die
Kursbesuchs-
liste nach der
Optimierung
SELECT A.Nr, Kursbezeichnung, Datum, B.PNr, Name,
Firma
FROM Kurse A, Kursleiter B, Kursbesuche C
WHERE B.KLNr=C.KLNr
AND A.KNr=C.KNr
AND C.PNr=&1;
Man braucht nicht unbedingt SQL zu verstehen, um zu erken-
nen, dass die Transaktion E mit diesem Aufbau wesentlich effi-
zienter sein wird. Messungen der Transaktionsdauer ergaben,
dass die Abarbeitung dieses Kommandofiles durchschnittlich
um 72% schneller erfolgte, als dies beim ursprünglichen Kom-
mandofile der Fall war.
Search WWH ::




Custom Search