, , , 1 , , . :
_HISTORY ;- 2 ,
start_dt end_dt, ; start_dt NOT NULL, end_dt NULL, , ;- , ,
1/Jan-2013, end_dt 31/Dec-2012 23:59:59 start_dt of 1/Jan-2013 00:00:00; revision, .
RI , 2 . , Customer obejct :
customer (customer_id INTEGER, PRIMARY KEY (customer_id));
customer_history (customer_id INTEGER, start_dt TIMESTAMP, end_dt TIMESTAMP,
name VARCHAR(50), sex CHAR(1), ...,
PRIMARY KEY (customer_id, start_dt));
customer_bank_history (customer_id INTEGER, start_dt TIMESTAMP, end_dt TIMESTAMP,
bank_id INTEGER, iban VARCHAR(34));
customer(customer_id) . :
SELECT c.customer_id, ch.name, ch.sex
FROM customer c
JOIN customer_history ch ON c.customer_id = ch.customer_id
AND now() BETWEEN ch.start_dt AND coalesce(end_dt, now());
:
, .