Databases Reference
In-Depth Information
a temporal update or delete transaction to be valid, the tar-
get table must already contain at least one episode for the
same object whose effective time period does [ intersect ]
the time period designated by the transaction.
(ii) The [ fills ] relationship is important because violations of
the temporal analog of referential integrity always involve
the failure of a child time period to [fill] a parent time
period. We will be frequently discussing this relationship
from the parent side, and we would like to avoid having to
say things like “. . . . . failure of a parent time period to be
filled by a child time period”. So we will use the term
“includes” as a synonym for “is filled by”, i.e. as a synonym
for [fills 1 ]. Now we can say “. . . . . failure of a parent time
period to include a child time period”.
(iii) The [before] relationship is important because it
distinguishes episodes from one another. Every episode of
an object is non-contiguous with every other episode of
the same object, and so for each pair of them, one of them
must be [before] the other.
(iv) The [meets] relationship is important because it groups
versions for the same object into episodes. A series of vers-
ions for the same object that are all contiguous, i.e. that all
[meet], fall within the same episode of that object.
Advanced Indexing Strategies
Indexes are one way to improve performance. And it should
be clear that it would be a serious performance handicap if we
could not define indexes over either or both of the two time per-
iods of a bi-temporal table. But this proves to be more complex
than it might at first sight appear to be.
The issue is that traditional indexes contain pointers to rows,
pointers which are based on discrete values, while the two time
periods of rows in bi-temporal tables are not discrete values,
but rather an unbroken and non-overlapping sequence of such
values. Such rows occupy points in effective (valid) time or in
assertion (transaction) time only as a limit case. What they really
occupy are intervals along those two timelines. That's the reason
we need two dates to describe each of them. Traditional
balanced-tree indexes work well with discrete values, including
such discrete values as dates. But they don't work well with
intervals of time, i.e. with time periods.
But indexing methods which manage intervals are being
developed. Specifically, some bi-temporal indexing methods
manage the two intervals for a bi-temporal object as a single
 
Search WWH ::




Custom Search