Como usar o SQL: 2011 Times e Períodos

Embora versões do padrão SQL antes de SQL: 2011 prevista ENCONTRO, TEMPO, TIMESTAMP, e INTERVALO tipos de dados, eles não abordou a idéia de um período de tempo com um tempo de início definido e um tempo final definido.

Uma forma de abordar esta necessidade é para definir um novo PERÍODO tipo de dados. SQL: 2011 no entanto, não faz isso. Para introduzir um novo tipo de dados em SQL nesta fase final do seu desenvolvimento iria causar estragos com o ecossistema que construiu-se em torno de SQL. cirurgia de grande porte para praticamente todos os produtos de banco de dados existentes seria necessário para adicionar um novo tipo de dados.

SQL: 2011 resolve o problema adicionando definições de época como metadados para as tabelas. Uma definição período é um componente tabela chamada, identificando um par de colunas que capturar o início do período eo tempo final do período. o CREATE TABLE e ALTERAR A TABELA declarações utilizadas para criar e modificar tabelas foram atualizados com nova sintaxe para criar ou destruir os períodos criados por estas novas definições de época.

UMA PERÍODO é determinada por duas colunas: a coluna de partida e uma coluna final. Estas colunas são convencionais, assim como as colunas dos tipos de dados data existentes, cada um com seu próprio nome. Como mencionado anteriormente, um período de definição é uma tabela denominada componente. Ele ocupa o mesmo espaço de nomes como nomes de coluna, por isso não deve duplicar qualquer nome de coluna existente.

SQL segue um modelo fechado-aberto para períodos, o que significa que um período inclui o tempo de início, mas não o tempo do fim. Para qualquer linha da tabela, um tempo final do período deve ser maior do que a sua hora de início. Esta é uma restrição que é imposta pelo DBMS.

Há duas dimensões de tempo que são importantes quando se lida com dados temporais:

  • hora válida é o período de tempo durante o qual uma linha em uma tabela corretamente reflete a realidade.

  • tempo de transação é o período de tempo durante o qual uma linha é comprometida com ou registados num banco de dados.

O tempo válido e o tempo de transação para uma linha em uma tabela não precisa ser o mesmo. Por exemplo, em um banco de dados de negócios que registra o período durante o qual um contrato está em vigor, as informações sobre o contrato pode ser (e provavelmente é) inserido antes da hora de início do contrato.

Em SQL: 2011, mesas separadas podem ser criadas e mantidas para acomodar os dois tipos diferentes de tempo, ou um único, mesa bitemporal pode servir ao propósito. informação de tempo da transacção são armazenados em tabelas de versão do sistema, que contêm o sistema de período de tempo, indicado pela palavra-chave SYSTEM_TIME.

informação de tempo válido, por outro lado, é mantida em tabelas que contêm um período de tempo de aplicação. Você pode dar um período de tempo de aplicação o nome que quiser, desde que o nome não é já utilizado para outra coisa. Você está autorizado a definir no máximo, um período de sistema de tempo e um período de tempo de aplicação.

Embora o suporte de dados temporal na SQL está sendo introduzida pela primeira vez no SQL: 2011, as pessoas tiveram que lidar com dados temporais muito antes de as construções temporais de SQL: 2011 foram incluídos em quaisquer produtos de banco de dados. Isto foi feito tipicamente através da definição de duas colunas da tabela, uma para a data e hora de início e outra para a data e hora final.

O fato de que o SQL: 2011 não define um novo PERÍODO tipo de dados, mas sim usa definições de época como metadados, significa que as tabelas existentes com tais colunas de início e fim pode ser facilmente atualizado para incorporar a nova capacidade. A lógica para fornecer informações período pode ser removido a partir de aplicações existentes, simplificando-os, acelerá-los, e torná-los mais confiável.

menu