/**************************************************************************************/
/* File:        demo02                                                                */
/* Project:     ATSQL2 : Views    		     				      */
/* Author:      Andreas Steiner                                                       */
/* Date:        07-04-1995                                                            */
/* Results:     Verified ?                                                            */
/**************************************************************************************/

set calendric system fiscal;

create table person(name char(32), address char(20), birthday timestamp) as valid;

nonsequenced valid period '1964/6/12-1992/3' 
	insert into person 
	values('Andreas', 'Pfaeffikon', timestamp '1964/12/6~12:30');
nonsequenced valid period '1992/3-forever'
	insert into person 
	values('Andreas', 'Rapperswil', timestamp '1964/12/6~12:30');
nonsequenced valid period '1969/2-1994/12'
	insert into person
	values('Maya', 'Wollerau', timestamp '1969/2/19') ;
nonsequenced valid period '1994/12 - forever'
	insert into person 
	values('Maya', 'Rapperswil', timestamp '1969/2/19');


/* Snapshot Views : */
/* ---------------- */

create view address as
	nonsequenced valid
	   select name, address 
	   from   person;

nonsequenced valid select * from address;

/*
                            name             address
 ------------------------------- -------------------
                         Andreas          Pfaeffikon
                         Andreas          Rapperswil
                            Maya            Wollerau
                            Maya          Rapperswil
*/


create view address1(n, a) as
	nonsequenced valid
	  select name, address 
	  from   person;

nonsequenced valid select * from address1;

/*
                               n                   a
 ------------------------------- -------------------
                         Andreas          Pfaeffikon
                         Andreas          Rapperswil
                            Maya            Wollerau
                            Maya          Rapperswil
*/


create view birthday as
	nonsequenced valid
	   select name, birthday 
	   from   person;

nonsequenced valid select * from birthday;

/*
                            name                 birthday
 ------------------------------- ------------------------
                         Andreas       |1964/12/06~12:30|
                         Andreas       |1964/12/06~12:30|
                            Maya             |1969/02/19|
                            Maya             |1969/02/19|
*/


create view older as
	nonsequenced valid
	   select o.name, o.birthday 
	   from   birthday y, birthday o
	   where  o.birthday precedes y.birthday;

nonsequenced valid select distinct * from older;

/*
                            name                 birthday
 ------------------------------- ------------------------
                         Andreas       |1964/12/06~12:30|
*/


drop view address;
drop view address1;
drop view birthday;
drop view older;



/* Valid Views : */
/* ------------- */

create view address as
	valid
	  select name, address 
	  from   person;

valid select * from address;

/*
                                        VALID                            name             address
 -------------------------------------------- ------------------------------- -------------------
                       [1964/06/12 - 1992/03)                         Andreas          Pfaeffikon
                          [1992/03 - forever)                         Andreas          Rapperswil
                          [1969/02 - 1994/12)                            Maya            Wollerau
                          [1994/12 - forever)                            Maya          Rapperswil
*/


create view address1(n, a) as
	valid 
           select name, address 
	   from   person;

valid select * from address1;

/*
                                        VALID                               n                   a
 -------------------------------------------- ------------------------------- -------------------
                       [1964/06/12 - 1992/03)                         Andreas          Pfaeffikon
                          [1992/03 - forever)                         Andreas          Rapperswil
                          [1969/02 - 1994/12)                            Maya            Wollerau
                          [1994/12 - forever)                            Maya          Rapperswil
*/


create view birthday as
	valid 
          select name, birthday 
	  from   person;

valid select * from birthday;

/*
                                        VALID                            name                 birthday
 -------------------------------------------- ------------------------------- ------------------------
                       [1964/06/12 - 1992/03)                         Andreas       |1964/12/06~12:30|
                          [1992/03 - forever)                         Andreas       |1964/12/06~12:30|
                          [1969/02 - 1994/12)                            Maya             |1969/02/19|
                          [1994/12 - forever)                            Maya             |1969/02/19|
*/


create view older as
	valid 
          select o.name, o.birthday 
	  from   birthday y, birthday o
	  where  o.birthday precedes y.birthday;


valid select distinct * from older;

/*
                                        VALID                            name                 birthday
 -------------------------------------------- ------------------------------- ------------------------
                          [1969/02 - 1992/03)                         Andreas       |1964/12/06~12:30|
                          [1992/03 - 1994/12)                         Andreas       |1964/12/06~12:30|
                          [1994/12 - forever)                         Andreas       |1964/12/06~12:30|
*/


drop view address;
drop view address1;
drop view birthday;
drop view older;

drop table person;

