Database book by Korth explains validation protocol as follows :
To perform the validation test, we need to know when the various phases of transactions took place. We shall, therefore, associate three different timestamps with each transaction Ti:
Start(Ti),thetimewhenTi started its execution.
Validation(Ti), the time when Ti finished its read phase and started its validation phase.
Finish(Ti),the time when Ti finished its write phase.
The validation test for transaction Ti requires that, for all transactions Tk with TS(Tk) < TS(Ti), one of the following two conditions must hold:
Finish(Tk) < Start(Ti). Since Tk completes its execution before Ti started, the serializability order is indeed maintained.
The set of data items written by Tk does not intersect with the set of data items read by Ti,andTk completes its write phase before Ti starts its validation phase (Start(Ti) < Finish(Tk) < Validation(Ti)). This condition ensures that the writes of Tk and Ti do not overlap.Since the writes of Tk do not affect the read of Ti, and since Ti cannot affect the read of Tk, the serializability order is indeed maintained.
How second point says "writes of Tk do not affect the read of Ti"?
Start(Ti) is the timestamp when Ti started its execution.
Validation (Ti): is the timestamp when Ti finishes its read phase and starts its validation phase.
I believe that mean read phase start at Start(Ti) and ends at Validation(Ti) ?
Also Finish(Tk) is timestamp when Tk finished its write phase.
So, I believe Start(Ti) < Finish(Tk) < Validation(Ti) means write of Tk ovelaps with read of Ti and hence write of Tk can affect read of Ti.