FB18 - Das Forum für Informatik

fb18.de / Bachelorstudieng / PM Praktische Informatik

Übungsblatt 6, Aufgabe 4

Übungsblatt 6, Aufgabe 4 2009-02-12 21:55
Anonymer User
Übungsblatt 6, Aufgabe 4:

Wieso haben wir in Zeile 7 ein NRR beim Update?
Hat ein NRR nicht das Muster: T1 -> read(A), T2 -> write(A), T1 -> read(A) ?
Hier lesen wir zwar in Zeile 4 von Personal und lesen in Zeile 7 auch wieder von Personal, aber in der zwischenzeit schreibt doch keine andere Transaktion auf Personal (zumindest nicht auf den Eintrag mit id=1)

Wieso haben wir in Zeile 8 ein DR?
Gibt es ein DR nicht nur, wenn z.B. T1 -> read(A), T1 -> write(A) und dann ein abort stattfindet, sodass T1 zurückgesetzt werden muss. Alle die in der Zeit den veränderten Wert A gelesen haben, haben jetzt einen falschen Wert gelesen.
Doch in Zeile 8 lesen wir doch den veränderten Wert von T2 -> Zeile 6 und T2 hat kein abort.

Wieso haben wir in Zeile 9 ein LU?
Das abziehen der 500 von gehalt geht hier ja nicht verloren, sondern wird erweitert, sodass nocheinmal 2500 abgezogen werden. Hier geht doch nichts verloren ?

Wieso haben wir in Zeile 11 kein NRR ?
Wir hatten in Zeile 7 und 10 ein NRR, wieso hier plötzlich nicht mehr ? Wir lesen doch immer noch personal

würd mich über eine antwort freuen

RE: Übungsblatt 6, Aufgabe 4 2009-02-12 23:22
Anonymer User
WT (unholy) F ¿ xDD

RE: Übungsblatt 6, Aufgabe 4 2009-02-12 23:29
DualJ
Übungsblatt 6, Aufgabe 4:

Es wäre nett, wenn du noch dazu schreiben könntest um welche Vorlesung es sich handelt (und vielleicht noch einen Link auf das Aufgabenblatt), dann können sicher auch ältere Semester mal drüberschauen ob sie helfen können [25]

RE: Übungsblatt 6, Aufgabe 4 2009-02-13 07:32
Anonymer User
Kein Problem:
Handelt sich um GDB, das Aufgaben blatt gibt es hier:
http://vsis-www.informatik.uni-hamburg.de/teaching/ws-08.09/gdb/aufgaben/aufgabenblatt6-V3.pdf

Die Musterlösung gibt es hier:
http://vsis-www.informatik.uni-hamburg.de/teaching/ws-08.09/gdb/aufgaben/aufgabenblatt6Lsg.pdf

RE: Übungsblatt 6, Aufgabe 4 2009-02-13 10:49
Loom
Wieso haben wir in Zeile 7 ein NRR beim Update?
Hat ein NRR nicht das Muster: T1 -> read(A), T2 -> write(A), T1 -> read(A) ?
Das NRR gibt es bereits nach dem T2 -> write(A), denn dann kann das von dir geschilderte T1 -> read(A) nicht mehr erfolgen. Es geht hier darum, dass es nicht möglich ist. Ob sich das tatsächlich auswirkt sollte ja extra angegeben werden.
Hier lesen wir zwar in Zeile 4 von Personal und lesen in Zeile 7 auch wieder von Personal, aber in der zwischenzeit schreibt doch keine andere Transaktion auf Personal (zumindest nicht auf den Eintrag mit id=1)
In Zeile 7 wird (auch) geschrieben!
Wieso haben wir in Zeile 8 ein DR?
Gibt es ein DR nicht nur, wenn z.B. T1 -> read(A), T1 -> write(A) und  dann ein abort stattfindet, sodass T1 zurückgesetzt werden muss. Alle  die in der Zeit den veränderten Wert A gelesen haben, haben jetzt  einen falschen Wert gelesen.
Doch in Zeile 8 lesen wir doch den veränderten Wert von T2 -> Zeile 6  und T2 hat kein abort.
Das ist falsch: Ein DR ist ein T1 -> write(A), T2 -> read(A), welches sich erst nach einem Rollback (Abort) auswirkt (wie beschrieben). Genau dies ist hier der Fall, wirkt sich aber nicht aus, deshalb ist auch kein AW in Zeile 8!
Wieso haben wir in Zeile 9 ein LU?
Das abziehen der 500 von gehalt geht hier ja nicht verloren, sondern  wird erweitert, sodass nocheinmal 2500 abgezogen werden. Hier geht  doch nichts verloren ?
Grad durch das "erweitern" geht es verloren. Denn nachher weiß man nicht mehr was vorher war. Nur das Ergebnis von -3000. Die DB merkt sich nicht wie dieser Wert entstanden ist!
Wieso haben wir in Zeile 11 kein NRR ?
Wir hatten in Zeile 7 und 10 ein NRR, wieso hier plötzlich nicht mehr  ? Wir lesen doch immer noch personal
Wie erwähnt braucht ein NRR ein write (update)!