![]() |
Developing |
![]() |
There are three kinds of constraints one can specify for a temporal table: current, sequenced and nonsequenced. The nonsequenced constraints are the easiest to specify yet the least useful. A similar situation exists for queries and modifications applied to temporal tables.
Here we will examine how to setup temporal tables, setup constraints and some basic referential integrity for the temporal tables, then execute common queries over the temporal tables, from extracting the current state, to extracting previous states, to evaluating several kinds of sequenced queries. The modifications are also dealt similarly.
Defining State Tables
Querying State Tables
Modifying State Tables
Snapshot tables: EMPLOYEES, INCUMBENTS, POSITIONS, JOB_TITLES
Temporal tables: INCUMBENTS, POSITIONS, SAL_HISTORY
The INCUMBENTS table has no current duplicates, no sequenced duplicates, and no nonsequenced duplicates. It does contain a pair of value-equivalent rows. All histories are contiguous. It is not coalesced.
The SAL_HISTORY table contains contiguous histories, and should exercise all four cases for the temporal join with INCUMBENTS.
Coalesce with Duplicates (Employee Table)
SSN Char(11) |
StartDate DATE |
EndDate DATE |
Coalesce without Duplicates, TJOIN(Employee Table)
Name Char(30) |
Salary Integer |
Title Char(30) |
DateOfBirth DATE |
StartDate DATE |
Stop DATE |
TJOIN (EmpSalary and EmpTitle Tables)
Name Char(30) |
Salary Char(30) |
StartDate DATE |
Stop DATE |
Name Char(30) |
Title Char(30) |
StartDate DATE |
Stop DATE |
Microsoft Access 2000
IBM DB2 Universal Server
Microsoft SQL Server
Oracle8 Server
Sybase SQL Server
UniSQL
Microsoft Access 2000
IBM DB2 Universal Server
Microsoft SQL Server
Oracle8 Server
Sybase SQL Server
UniSQL
Microsoft Access 2000
IBM DB2 Universal Server
Microsoft SQL Server
Oracle8 Server
Sybase SQL Server
UniSQL
Microsoft Access 2000
IBM DB2 Universal Server
Microsoft SQL Server
Oracle8 Server
Sybase SQL Server
UniSQL
Microsoft Access 2000
IBM DB2 Universal Server
Microsoft SQL Server
Oracle8 Server
Sybase SQL Server
UniSQL
Microsoft Access 2000
IBM DB2 Universal Server
Microsoft SQL Server
Oracle8 Server
Sybase SQL Server
UniSQL
IBM DB2 Universal Server
Microsoft SQL Server
Oracle8 Server
Sybase SQL Server
UniSQL
Temporal Join
Union - Use of UNION to extract all employees who have salaries greater than their manager.
Microsoft Access 2000
IBM DB2 Universal Server
Microsoft SQL Server
Oracle8 Server
Sybase SQL Server
UniSQL
Union All - Use of UNIONAll to extract all employees who have salaries greater than their manager.
Microsoft Access 2000
IBM DB2 Universal Server
Microsoft SQL Server
Oracle8 Server
Sybase SQL Server
UniSQL
Greatest/Least - Use of the Greatest and Least SQL auxilliary functions to extract all employees who have salaries greater than their manager.
Microsoft Access 2000
IBM DB2 Universal Server
Microsoft SQL Server
Oracle8 Server
Sybase SQL Server
UniSQL
Microsoft Access 2000
IBM DB2 Universal Server
Microsoft SQL Server
Oracle8 Server
Sybase SQL Server
UniSQL
Easy Duplicate Elimination
Microsoft Access 2000
IBM DB2 Universal Server
Microsoft SQL Server
Oracle8 Server
Sybase SQL Server
UniSQL
Coalescing (General Discussion)
Microsoft Access 2000
IBM DB2 Universal Server
Microsoft SQL Server
Oracle8 Server
Sybase SQL Server
UniSQL
Coalescing While Removing Duplicates
Coalescing with Duplicate Elimination
Looping SQL Version (with Repeat-Until construct) - Update periods in table which can be extended, and loop until no more extend-able periods are found.
Microsoft Access 2000
IBM DB2 Universal Server
Microsoft SQL Server
Oracle8 Server
Sybase SQL Server
UniSQL
Pure SQL Version - Use a complicated series (nifty) of "Not Exists" clauses to come up with a coalesced table.
Microsoft Access 2000
IBM DB2 Universal Server
Microsoft SQL Server
Oracle8 Server
Sybase SQL Server
UniSQL
Coalesce via a Cursor - Straightforward iteration on the database, inserting into result table whenever a gap is found.
Microsoft Access 2000
IBM DB2 Universal Server
Microsoft SQL Server
Oracle8 Server
Sybase SQL Server
UniSQL
Coalescing Without Removing Duplicates
Coalescing With Duplicate Retention
Microsoft Access 2000
IBM DB2 Universal Server
Microsoft SQL Server
Oracle8 Server
Sybase SQL Server
UniSQL
Microsoft Access 2000
IBM DB2 Universal Server
Microsoft SQL Server
Oracle8 Server
Sybase SQL Server
UniSQL
Microsoft Access 2000
IBM DB2 Universal Server
Microsoft SQL Server
Oracle8 Server
Sybase SQL Server
UniSQL
Microsoft Access 2000
IBM DB2 Universal Server
Microsoft SQL Server
Oracle8 Server
Sybase SQL Server
UniSQL
Microsoft Access 2000
IBM DB2 Universal Server
Microsoft SQL Server
Oracle8 Server
Sybase SQL Server
UniSQL
HTML Credits
Jose Alvin G. Gendrano, Department of Computer Science,
University of Arizona (jag@cs.arizona.edu)
Rachana R. Shah, Department of Computer Science,
University of Arizona (rachana@cs.arizona.edu)
Bruce C. Huang, Department of Computer Science, University
of Arizona (bchuang@cs.arizona.edu)
Jian Yang, Department of Computer Science, University of
Arizona (yangjian@cs.arizona.edu)
April 28, 1999 (Last Update)