Como rastrear dados com SQL: 2011 Quadros bitemporais
Às vezes você quer saber tanto quando ocorreu um evento no mundo real e quando o evento foi gravado no banco de dados SQL. Para casos como este, você pode usar uma tabela que é uma tabela de controle de versão do sistema e uma tabela de período de tempo de aplicação. Essas tabelas são conhecidos como mesas bitemporais.
Há uma série de casos em que uma tabela bitemporal pode ser chamado para. Suponha, por exemplo, que um de seus empregados move sua residência em toda a linha de estado de Oregon a Washington. Você deve ter em conta o fato de que seu estado de retenção de imposto de renda deve mudar a partir da data oficial do movimento.
No entanto, é improvável que a mudança para o banco de dados será feita exatamente sobre este mesmo dia. Ambas as vezes precisa ser registrado, e uma mesa de bitemporal pode fazer isso de gravação muito bem. Os registros de controle de versão do sistema O período de tempo quando a mudança se tornou conhecido ao banco de dados, e os registros do período de tempo de aplicação quando o movimento legalmente entrou em vigor. Aqui está um código de exemplo para criar tal tabela:
CRIAR employee_bt TABLE (EmpID INTEIRO, EmpStart DATA, EmpEnd DATA, EmpDept IntegerPERIOD PARA EmpPeriod (EmpStart, EmpEnd), Sys_Start TIMESTAMP (12) GERADOS ALWAYSAS linha inicial, Sys_End TIMESTAMP (12) GERADOS END ALWAYSAS ROW, EmpName VARCHAR (30), EmpStreet VARCHAR (40), EmpCity VARCHAR (30), EmpStateProv VARCHAR (2), EmpPostalCode VARCHAR (10), o prazo de SYSTEM_TIME (Sys_Start, Sys_End), PRIMARY KEY (EmpID, EPeriod SEM sobreposições), FOREIGN KEY (EDept, PERÍODO EPeriod) Referências Dept (DEPTID, PERÍODO dperiod)) com o sistema VERSIONING-
mesas bitemporais servir aos propósitos de ambas as tabelas de versão do sistema e tabelas de tempo de aplicação. O usuário fornece valores para o período de início e fim colunas de tempo de aplicação. A INSERIR operação de tal tabela define automaticamente o valor do período de tempo de sistema para o timestamp transacção. O valor da coluna final do período sistema de tempo é definido automaticamente para o valor mais alto permitido para o tipo de dados da coluna.
ATUALIZAR e EXCLUIR operações funcionam como fazem para tabelas de período de tempo de aplicação padrão. Como acontece com as tabelas de versão do sistema, ATUALIZAR e EXCLUIR operações afetam apenas linhas atuais, e com cada tal operação de uma linha histórica é automaticamente inserido.
Uma consulta feita em cima de uma mesa bitemporal pode especificar um período de tempo de aplicação, um período de versão do sistema, ou ambos. Aqui está um exemplo do Nº 147, tanto # 148- caso:
employee_bt EmpIDFROM SELECT FOR TEMPO sistema como OFTIMESTAMP '2013/07/15 00: 00: 00'WHERE EmpID = 314159 ANDEmpPeriod contém a data' 2013/06/20 00: 00: 00'-