Unioeste – Universidade Estadual do Oeste do Paraná CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS Colegiado de Informática Curso de Bacharelado em Informática BANCO DE DADOS TEMPORAL Lucilia Yoshie Araki Marcio Cezar Santos da Rosa CASCAVEL 2005 ÍNDICE DE FIGURAS Figura 1: Estruturas temporais (Worboys, 1998) ................................................................... 7 Figura 2Tempo ramificado (Worboys e Duckhan , 2004) ..................................................... 8 Figura 3Tempo circular (Worboys e Duckhan , 2004)........................................................... 8 Figura 4 Diferentes granularidades temporais (EDELWEISS, 1998).................................... 9 Figura 5 As entidades e os relacionamentos no modelo TempER são classificados em transitórios e perenes, conforme a sua relação com a dimensão temporal. ......................... 14 Figura 6 Visualização da validade temporal de uma Entidade Transitória. ......................... 15 Figura 7 Visualização da validade temporal de uma Entidade Perene................................. 16 Figura 8 Exemplo de Identificador Interno de Entidades - OID (ANTUNES et al., 1998) . 17 Figura 9 Exemplo de perspectivas temporal e intemporal das entidades ............................. 19 Figura 10 Exemplo de atributos no modelo ER convencional e temporal ........................... 20 SUMÁRIO 1. INTRODUÇÃO ........................................................................................................... 4 2. PRINCIPAIS CONCEITOS DE REPRESENTAÇÃO TEMPORAL .... 6 2.1 DIMENSÃO TEMPORAL .................................................................................................. 6 2.2 TEMPO DE TRANSAÇÃO E TEMPO DE VALIDADE ............................................................ 6 2.3 ORDEM NO TEMPO ......................................................................................................... 7 2.4 TEMPO ABSOLUTO E TEMPO RELATIVO ......................................................................... 8 2.5 VARIAÇÃO TEMPORAL .................................................................................................. 9 2.6 GRANULARIDADE TEMPORAL ........................................................................................ 9 2.7 REPRESENTAÇÃO TEMPORAL ...................................................................................... 10 3. MODELAGEM DE DADOS EM BANCO DE DADOS TEMPORAL 12 3.1 ENTIDADES TRANSITÓRIAS .......................................................................................... 15 3.2 ENTIDADES PERENES ................................................................................................... 16 3.3 O IDENTIFICADOR INTERNO DE ENTIDADES - OID ....................................................... 16 3.4 RELACIONAMENTOS TEMPORAIS ................................................................................. 18 3.5 RELACIONAMENTOS INTEMPORAIS .............................................................................. 18 3.6 AS PERSPECTIVAS TEMPORAL E INTEMPORAL DAS ENTIDADES..................................... 18 3.7 ATRIBUTOS .................................................................................................................. 19 3.7.1 Atributos temporais ............................................................................................. 21 3.7.2 Atributos intemporais .......................................................................................... 21 3.8 RESTRIÇÕES DE CARDINALIDADE ................................................................................ 21 4. SISTEMAS DE BANCO DE DADOS TEMPORAL ................................... 23 4.1 CARACTERÍSTICAS GERAIS A SEREM SUPORTADAS POR SGBDT.................................. 23 4.2 EVOLUÇÕES EM SISTEMAS DE INFORMAÇÕES TEMPORAIS ........................................... 23 5. MANIPULAÇÃO DOS DADOS TEMPORAIS ............................................ 25 5.1 INSERÇÃO EM BANCO DE DADOS TEMPORAIS.............................................................. 25 5.2 REMOÇÃO EM BANCO DE DADOS TEMPORAIS ............................................................. 26 5.3 ATUALIZAÇÃO EM BANCO DE DADOS TEMPORAIS ...................................................... 26 5.4 CONSULTA EM BANCO DE DADOS TEMPORAIS ............................................................ 27 5.5 Linguagem de Manipulação de Dados Temporais................................................. 27 6. IMPLEMENTAÇÃO DE BANCOS DE DADOS TEMPORAIS ............ 30 7. CONCLUSÃO ............................................................................................................ 31 8. REFERÊNCIAS BIBLIOGRÁFICAS .............................................................. 32 APÊNDICE ...................................................................................................................... 35 4 1. INTRODUÇÃO Um banco de dados (BD) mantém dados sobre uma organização e suas atividades. Os bancos de dados convencionais são projetados para capturar os dados mais recentes, ou seja, os dados correntes. O processo de alteração dos dados em BD é feito adicionando novos dados sobre os já existentes, isto é, através de uma sobreposição parcial ou total dos dados, e isto leva à perda dos dados anteriores à modificação. Portanto, os banco de dados convencionais servem apenas para aquelas aplicações que necessitam de informações sobre os dados atuais do BD, sendo insuficientes para aquelas que requerem informações sobre o passado e/ou futuro dos dados. Enquanto que os bancos de dados temporais mantêm os dados passados, presentes e futuros, suprindo assim as “insuficiências” dos BDs convencionais. Bancos de dados temporais permitem armazenar e recuperar todos os estados de um objeto, registrando sua evolução ao longo do tempo. Informações temporais são associadas implicitamente aos dados, correspondendo ao tempo de validade (tempo que a informação será válida no banco de dados) e/ou ao tempo de transação (tempo que a informação foi inserida no banco de dados). Característica que se torna evidente em determinadas aplicações, tais como: • Registros de informações acadêmicas, nas quais devem ser armazenados todos os conceitos obtidos pelos alunos nos respectivos semestres; • Em áreas de contabilidade (datas de contas a pagar e receber, fluxo de caixa, pagamentos efetuados e recebidos), em tomadas de decisão (baseadas em informações históricas), em controle de estoques e em processos de importação/exportação; • Aplicações financeiras, como no mercado de ações, aplicações bancárias; • Companhias seguradoras, nos planos a serem oferecidos e onde os valores das apólices geralmente são baseados nas informações passadas dos clientes; 5 • Sistemas de reservas (de companhias aéreas, de hotéis e etc); • Área médica, onde o registro das informações históricas de pacientes é fundamental. Em bancos de dados temporais, muitas pesquisas tem sido realizadas com o objetivo de definir conceitos e estratégias para tratar informações históricas. Os bancos de dados foram classificados em quatro categorias, dependendo da possibilidade de representação de informações históricas: • Bancos de Dados Instantâneos (Snapshots): são armazenados somente os valores presentes e, ao alterar uma informação, a antiga é sobrescrita pela nova. Correspondem aos bancos de dados convencionais; • Bancos de Dados de Tempo de Transação (Rollback): associam aos dados apenas o tempo em que a informação foi inserida no banco de dados, recuperando somente o passado e o presente das informações; • Bancos de Dados de Tempo de Validade (Histórico): suporta o tempo válido, ou seja, associam aos dados o tempo em que a informação será válida no banco de dados, possibilitando a recuperação tanto do passado, quanto do presente e do futuro das informações; • Bancos de Dados Bitemporais: suporta tanto o tempo de validade quanto o tempo de transação, ou seja, permite a recuperação de todos os estados das informações. A noção de tempo, como datas, períodos, duração de validade de informações e intervalos temporais, surge em três diferentes níveis: i) Na modelagem de dados; i) Na linguagem de recuperação e manipulação de dados; ii) No nível de implementação do Sistema Gerenciador de Banco de Dados (SGBD). 6 2. PRINCIPAIS CONCEITOS DE REPRESENTAÇÃO TEMPORAL 2.1 Dimensão Temporal Os modelos de dados tradicionais apresentam duas dimensões, as linhas (instâncias dos dados) e as colunas (atributos) de uma tabela. Cada atributo de uma instância apresenta um só valor. Se for feita uma alteração deste valor, o anterior é perdido. Os modelos temporais acrescentam mais uma dimensão aos modelos tradicionais – a dimensão temporal. Esta dimensão associa alguma informação temporal a cada valor. Caso o valor de um atributo seja alterado, o valor anterior não é removido do banco de dados – o novo valor é acrescentado, associado a alguma informação que define, por exemplo, seu tempo inicial de validade. Por exemplo, o Banco Central quer ter acesso às informações relativas aos lançamentos que ocorreram entre janeiro/93 e julho/94 nas contas ativas e encerradas, de determinadas pessoas físicas e jurídicas para efeito de fiscalização. Em muitos casos estas informações "vencidas" são excluídas dos bancos de dados. No entanto, mantê-las arquivadas pode ser vital para se conhecer o comportamento histórico de uma organização. Deste modo, é possível acessar toda a história dos atributos, sendo possível analisar sua evolução temporal. 2.2 Tempo de Transação e Tempo de Validade Na área de estudo dos bancos de dados temporais (TANSEL, EDELWEISS, CLIFFORD, ÖZSOYOGLU) normalmente consideram-se duas linhas de tempo: o tempo de validade e o tempo de transação. O tempo de validade de um fato é o momento do tempo em que o fato torna-se verdadeiro no mundo real. O tempo de transação é o momento do tempo em que o fato é registrado no banco de dados. O tempo de validade é definido pelo usuário e o tempo de transação é definido automaticamente pelo SGBD. 7 O tempo de validade da informação pode não coincidir com o tempo de transação. Para este caso, coloca-se explicitamente um atributo para a validade. Por exemplo, o funcionário João teve seu salário alterado para R$900, referente a 01/Jun/98. Essa alteração pode ter sido feita no dia 03 de junho de 1998. Internamente no banco de dados, a data de transação é 03/Jun/98 e a validade da informação de 01/Jun/98. 2.3 Ordem no Tempo A definição de uma ordem a ser seguida no tempo é fundamental quando utiliza alguma representação temporal. Conceitualmente, pode-se representar o tempo através de diferentes estruturas, definidas, principalmente, com base em três aspectos da representação temporal: granularidade, variação e ordem no tempo (Figura 1) e há três opções de ordenação temporal: tempo linear, tempo ramificado e tempo circular. . Figura 1: Estruturas temporais (Worboys, 1998) • Tempo linear: total ordenação entre quaisquer dois pontos no tempo. Esta é a forma mais comum de ordenação temporal; • Tempo ramificado: permite a possibilidade de dois pontos diferentes serem sucessores (ramificação no futuro, figura 2a) ou antecessores (ramificação no passado, figura 2b) imediatos de um mesmo ponto. Para ambos a restrição linear é abandonada; 8 Figura 2Tempo ramificado (Worboys e Duckhan , 2004) • Tempo circular: utilizado para modelar eventos e processos recorrentes. Neste caso, a periodicidade de sua ocorrência faz com que sempre se volte à mesma referência de tempo. Um exemplo é o ciclo anual de produção de mudas de plantas como mostra a figura 3. Figura 3Tempo circular (Worboys e Duckhan , 2004) 2.4 Tempo Absoluto e Tempo Relativo Tempo Absoluto é uma informação temporal que define um tempo preciso, com uma granularidade determinada, associada a um fato. Exemplo: João morreu no dia 13/01/70. Tempo Relativo tem sua validade relacionada à validade de outro dado temporal, ou ao momento atual. Exemplo: A Páscoa ocorre 40 dias após a quarta-feira de cinzas. 9 2.5 Variação Temporal Quanto à variação, o tempo pode ser contínuo ou discreto. O tempo é contínuo por natureza e um dado pode ter um valor diferente em qualquer instante de tempo. Para sua representação computacional, é necessário utilizar uma representação discreta do tempo, na qual a variação temporal corresponde a uma linha de tempo, composta por uma seqüência de chronons1 consecutivos e com idêntica duração. A duração de tempo pode ser fixa, como uma hora, ou variável, como um mês, podendo ser visualizada na Figura 4. Figura 4 Diferentes granularidades temporais (EDELWEISS, 1998). 2.6 Granularidade Temporal A granularidade temporal de um sistema é um parâmetro que consiste na duração de um chronon. Entretanto, dependendo da aplicação considerada, às vezes é necessário considerar simultaneamente diferentes granularidades (minutos, dias, mês e anos) para permitir uma melhor representação da realidade. Por exemplo, em um determinado sistema de banco de dados de uma empresa é composto pelos campos RG, nome, salário e função dos empregados. Para manter a evolução dos atributos salário e função, o chronon para salário refere-se a mês e para a função a anos. Os elementos primitivos de representação da granularidade do tempo são instante, intervalo e elemento temporal. 1 Chronon é um intervalo temporal que não pode ser decomposto, pois é uma unidade de tempo representada pelo número inteiro 1 (EDELWEISS, 1998). 10 • O instante representa um ponto particular no tempo e depende da forma de variação temporal considerada. No tempo contínuo, um instante é um ponto no tempo de duração infinitesimal, sendo que entre dois pontos no tempo sempre existirá outro ponto. Se a variação temporal for discreta, um instante é representado por um dos chronons no eixo temporal. • Um intervalo temporal é caracterizado pelo tempo decorrido entre dois instantes. No tempo contínuo, o intervalo consiste de infinitos instantes do tempo. Na variação discreta, um intervalo é representado por um conjunto finito de chronons consecutivos. Portanto, um intervalo é representado pelos dois instantes que o delimitam. • Elemento temporal é uma união finita de intervalos de tempo, produzindo um novo elemento temporal para as operações de conjunto de união, interseção e complemento Como estas operações encontram contrapartida nos operadores booleanos or, and e not, isto produz uma substancial simplificação na habilidade do usuário de expressar consultas temporais. Um exemplo é uma pessoa ser funcionário de uma empresa durante o intervalo [1995,1997], tendo saído da empresa em 1998 e sendo readmitida no ano de 2000. A validade da existência desta pessoa na empresa seria a união dos intervalos [1995,1997] ∪ [2000]. 2.7 Representação Temporal A definição de tempo pode ser feita de forma explícita, através da associação de um valor temporal a uma informação na forma de um rótulo temporal (timestamp), ou de forma implícita, através da utilização de uma linguagem de lógica temporal. 11 A associação explícita de tempo às informações consiste em associar, a cada valor atribuído a um atributo, o valor que corresponde à sua primitiva temporal. A representação implícita é feita através da manipulação de conhecimentos sobre a ocorrência de eventos ou do relacionamento de intervalos de tempo, como por exemplo, a aula de BDT ocorreu ontem. 12 3. MODELAGEM DE DADOS EM BANCO DE DADOS TEMPORAL Segundo OLIVEIRA (2001), um modelo de dados temporal adequado deve ser utilizado pelos seguintes motivos: • O sistema a ser modelado pode apresentar informações temporais a serem introduzidas no banco de dados que o representa, sob forma de informação propriamente dita; • Processos a serem executados podem apresentar interações temporais, interações estas que devem ser representadas; • Tarefas podem apresentar pré-condições à sua execução, as quais podem ser representadas através de restrições temporais; • Condições de integridade temporal do banco de dados podem ser necessárias. Diversos modelos de dados tradicionais foram estendidos para possibilitar a representação de aspectos temporais sem ter que definir novos modelos. Várias extensões à abordagem entidade-relacionamento (ER) original têm sido propostas com o objetivo de incorporar a possibilidade de modelar propriedades temporais. Entre as quais: • TERM (Temporal Entity-Relationship Model); • RAKE (Relationships, Attributes, Keys, and Entities); • ERT (Entity Relationship Time Model); • TER (Temporal Entity-Relationship Model); • TEER (Temporal Enhanced Entity-Relationship Model) e a sua variante STEER; • TF-ORM (Temporal Functionality in Objects With Roles Model); • TRM (Temporal Relational Model); • IXRM (Internal-eXtend Relational Model ); • HRDM (Historical Relational Data Model ). 13 Os modelos de dados temporais podem ser comparados por quatro questões: • como o tempo de validade é representado (alternativas incluem, intervalo ou elemento temporal de atributos individuais ou tuplas); • como o tempo de transação é representado (alternativas incluem evento, elemento temporal de atributos individuais ou tuplas, ou conjunto de tuplas); • como os valores dos atributos são representados (valores atômicos, pares ordenados, valores triplos ou conjunto triplo de valores); • o modelo é homogêneo (permite agrupamento). Quando o modelo ER convencional é utilizado, a associação das entidades e relacionamentos com o tempo materializa-se através da inclusão de atributos comuns que armazenam datas, horas ou qualquer outra referência temporal. Caso necessite registrar os diversos valores que um atributo pode apresentar ao longo do tempo (por exemplo, as notas de um aluno) existem duas alternativas possíveis: 1) especificar uma nova entidade composta deste atributo e mais os atributos de referência ao tempo; 2) definir tal atributo como composto e multivalorado. No modelo de dados temporal ERT, o tempo é introduzido como uma classe especial chamada de classe de período de tempo, no qual o período de existência de uma entidade é o tempo associado a esta. Conseqüentemente, o período de validade de um relacionamento também é o tempo associado a um relacionamento. O modelo armazena toda a história dos objetos que compõem o sistema. Pode-se definir o objeto evento e especificar sua duração por meio de rótulos temporais (timestamps), nos quais cada rótulo deve possuir uma granularidade. O TempER é um modelo de dados do tipo Entidade-Relacionamento, que permite referenciar os objetos (entidades, relacionamentos ou valores de atributos) à dimensão temporal. Existem as entidades transitórias (temporalizadas), onde a validade temporal é o subconjunto de pontos do eixo temporal; e as entidades perenes (nãotemporalizadas), em que a existência ocorre durante todo o eixo temporal, ou seja, a 14 validade temporal é constante. Tanto as entidades transitórias como as entidades perenes apresentam duas perspectivas: temporal e intemporal. Em nível de modelagem, considerase apenas um eixo temporal, o qual representa o tempo de validade, não sendo necessário especificar o tempo de transação, pois se trata de um aspecto inerente à implementação física. Em virtude disto são chamadas de entidades transitórias. Em relação às entidades não temporalizadas, é assumido que "existem" durante todo o eixo temporal, ou seja, a sua validade temporal é constante, implícita e igual a todo o eixo temporal. Por isto, são denominadas entidades perenes. Qualquer que seja a classificação de uma entidade em relação ao tempo, seja transitória ou perene, ela sempre vai apresentar duas perspectivas: uma intemporal e uma temporal. No tocante aos relacionamentos, ou as entidades se associam entre si na perspectiva temporal (relacionamentos temporais) ou na perspectiva intemporal (relacionamentos intemporais). Assim como o modelo ER convencional, o modelo TempER apresenta também os seguintes elementos básicos: entidade, relacionamento e atributos. Aos objetos de uma aplicação que forem especificados como temporalizados, sejam eles entidades, relacionamentos ou valoração de atributos, são implicitamente anexados rótulos temporais (timestamps), que conterão o conjunto de pontos do tempo nos quais estes objetos são considerados como existentes no contexto da realidade modelada, como visto na Figura 5. Figura 5 As entidades e os relacionamentos no modelo TempER são classificados em transitórios e perenes, conforme a sua relação com a dimensão temporal. 15 Segundo SIMONETTO (1998), os vários modelos temporais propostos nos últimos anos mostram a grande preocupação da comunidade científica com a representação do fator tempo na modelagem de sistemas, desenvolvidos seguindo a possibilidade de se estender por modelos já existentes cuja grande maioria está baseada no modelo relacional. Os modelos de dados temporais devem representar as propriedades semânticas das informações temporais, tais como, a ordem temporal, duração temporal, granularidade, entre outras. 3.1 Entidades transitórias Entidades transitórias são aquelas cuja validade temporal é um subconjunto de pontos do tempo do eixo temporal. Normalmente, utiliza-se este tipo de entidade quando se quer modelar entidades que valem por um certo período de tempo. Por exemplo: os empregados de uma companhia que existem como tal desde a sua admissão até a sua demissão.Como é possível haver readmissão de empregados, a existência de uma destas entidades pode ser composta por mais de um intervalo de tempo, portanto, o subconjunto de pontos do tempo que define a validade temporal de uma entidade não necessariamente é formado por momentos consecutivos. Isto é ilustrado pela figura 6, onde um certo empregado “emp1” apresenta três vínculos com a empresa ao longo do tempo. Figura 6 Visualização da validade temporal de uma Entidade Transitória. (ANTUNES et al., 1998) 16 3.2 Entidades Perenes Entidades perenes são aquelas cuja validade temporal é exatamente igual a todo o eixo temporal. Toda vez que uma entidade perene é incluída no banco de dados do sistema, assume-se que seu rótulo temporal é igual a "[« , »]", isto é, a sua validade temporal inicia no primeiro ponto do eixo temporal e se estende até o último, conforme ilustra a figura 7. Normalmente as entidades que o modelador não necessita ou não deseja associar ao tempo são consideradas como perenes. O fato de ser perene não significa que uma entidade não possa ser eliminada do banco de dados. Entretanto, enquanto uma entidade perene estiver presente no banco de dados, a sua validade temporal será constante, igual ao conjunto de todos os pontos do eixo temporal. Portanto, diferentemente das entidades transitórias, a validade temporal das entidades perenes de forma alguma pode sofrer acréscimo ou redução. Por ser constante, a validade temporal das entidades perenes não precisa ser registrada no banco de dados. Figura 7 Visualização da validade temporal de uma Entidade Perene. (ANTUNES et al., 1998) 3.3 O identificador interno de entidades - OID Segundo Oliveira (2001), é assumido que todas as instâncias das entidades possuem um identificador interno, gerado pelo sistema, que é denominado de OID (object identifier). Cada OID, por princípio, é único no âmbito do universo do discurso 17 da aplicação, invisível ao usuário e define a identidade de uma instância de uma entidade. Quando duas entidades se associam, este fato pode ser representado pelo relacionamento dos OID’s respectivos. Isto faz com que um relacionamento seja identificável pela composição dos OID’s das entidades associadas. Segundo ANTUNES, HEUSER e EDELWEISS (1998), a presença do OID não descarta a necessidade de que haja um atributo (ou composição de atributos) que desempenhe o papel de chave primária de uma entidade, de forma que um usuário do sistema possa identificar e acessar esta entidade, já que o OID é invisível externamente. Embora possa parecer redundante coexistirem OID’s e chaves primárias, o que se busca é aproximar o modelo TempER de um dos mais importantes princípios da orientação a objetos, que é a identidade dos objetos. Além disso, existe a vantagem de ser possível alterar a chave primária de uma entidade sem que isto afete os relacionamentos em que ela participe. Para exemplificar, pode-se visualizar a figura 8, onde tanto a tabela Empregado como a tabela Depto, possuem uma coluna referente ao OID, e a tabela referente ao conjunto-relacionamento Lotação possui duas colunas de OID’s referentes aos conjuntosentidade relacionados. Figura 8 Exemplo de Identificador Interno de Entidades - OID (ANTUNES et al., 1998) 18 3.4 Relacionamentos Temporais Relacionamentos são objetos resultantes da associação de duas ou mais entidades, por exemplo, o relacionamento Lotação relaciona as entidades Empregado e Departamento, conforme a figura 8. Relacionamentos temporais são relacionamentos que associam duas entidades no âmbito da dimensão temporal, isto é, além dos OID´s das instâncias das entidades, estes relacionamentos também se associam a pontos do tempo do eixo temporal. Este tipo de relacionamento serve para modelar as associações das quais se necessita conhecer a validade temporal. Os relacionamentos temporais só são válidos nos momentos especificados pelos seus rótulos temporais. 3.5 Relacionamentos Intemporais Relacionamentos intemporais são relacionamentos que não levam em consideração a dimensão temporal, ou seja, participam apenas os OID´s das entidades, sem qualquer referência a pontos do tempo. Estes relacionamentos se materializam no nível das perspectivas intemporais das entidades. Por exemplo, uma relação que não tem momento inicial ou final de validade é intemporal. 3.6 As perspectivas temporal e intemporal das entidades As entidades são os elementos básicos de um modelo de dados que emprega a abordagem Entidade-Relacionamento(ER). No modelo TempER, em virtude da dimensão temporal, as entidades apresentam sempre duas perspectivas, uma perspectiva temporal e uma perspectiva intemporal. 19 A Perspectiva intemporal não leva em conta a dimensão temporal, isto é, o OID da entidade não é visualizado como associado a um conjunto de pontos do tempo. Nesta perspectiva, as entidades apresentam apenas duas dimensões: atributos e valores. Já a perspectiva temporal leva em consideração a dimensão temporal ao referenciar um dado. O OID de uma entidade é visualizado como uma associação a um conjunto de pontos do tempo, sendo que este conjunto define a validade temporal da entidade no contexto do banco de dados do sistema. Nesta perspectiva, as entidades apresentam três dimensões: atributos, valores e tempo. Estas perspectivas podem ser visualizadas na figura 9. Figura 9 Exemplo de perspectivas temporal e intemporal das entidades (ANTUNES et al., 1998) 3.7 Atributos 20 Os atributos representam propriedades elementares de entidades ou relacionamentos. A descrição de um atributo apresenta os seguintes elementos: o nome do atributo, o domínio dos valores primitivos que podem ser associados ao atributo e a classificação do atributo em relação ao tempo (indicando se o atributo é temporal ou intemporal). Estes atributos podem ser vistos na figura 10. Uma entidade normalmente possui um identificador de uso externo, uma chave primária. Em geral trata-se de um único atributo, no entanto pode resultar da composição de dois ou mais atributos. O valor de um identificador é único dentro do contexto de uma entidade, isto é, não existem duas instâncias com o mesmo valor para o identificador. O identificador deve sempre ser formado por atributo(s) intemporal(is). As entidades, sejam elas transitórias ou perenes, por apresentarem duas perspectivas em relação ao tempo, podem combinar atributos temporais com atributos intemporais. Isto não acontece com os relacionamentos. Se forem temporais possuem apenas atributos temporais, se forem intemporais apresentam apenas atributos intemporais. Figura 10 Exemplo de atributos no modelo ER convencional e temporal (ANTUNES et al., 1998) 21 3.7.1 Atributos temporais Atributos temporais são aqueles cuja valoração (conteúdo) deve ser referenciada a pontos do tempo. Na parte inferior da figura 10, o atributo at-sal das entidades do conjunto Empregado é um exemplo de atributo temporal. Este atributo apresenta um valor a cada momento do tempo. O objetivo dos atributos temporais é permitir que registre a evolução dos valores de uma propriedade ao longo do tempo. 3.7.2 Atributos intemporais São aqueles cujos valores não apresentam qualquer associação com a dimensão temporal. Através dos atributos intemporais é possível representar os atributos convencionais do modelo Entidade-Relacionamento. Através da figura 10, podemos verificar que os atributos cod e nome da entidade Empregado representam atributos intemporais. 3.8 Restrições de Cardinalidade Restrição de cardinalidade especifica o número de instâncias de um tipo de relacionamento que uma entidade pode participar, ou seja, refere-se à participação das entidades nos conjuntos-relacionamento. Segundo OLIVEIRA (2001), os relacionamentos temporais e intemporais apresentam as seguintes restrições de cardinalidade: • (0,1): a entidade pode não participar em relacionamentos, ou pode participar no máximo uma vez; • (0,N): a entidade pode não participar em relacionamento, ou pode participar mais de uma vez; • (1,1): a entidade participa uma única vez do relacionamento; 22 • (1,N): a entidade participa no mínimo uma vez em relacionamento, ou pode participar mais de uma vez. 23 4. SISTEMAS DE BANCO DE DADOS TEMPORAL Um sistema gerenciador de banco de dados temporais (SGBDT) é responsável por manter a consistência do Banco de Dados Temporal (BDT), fornecer mecanismos de armazenamento e recursos para operações de inserção, exclusão e atualização de forma rápida e segura. 4.1 Características gerais a serem suportadas por SGBDT Uma importante consideração trata da questão de dados temporais em BDT. O suporte a dados deveria ser análogo ao que ocorre nos BD convencionais com os atributos já predefinidos. Se um atributo é definido como inteiro, não é possível inserir caracteres. Analogamente, há a necessidade de testes de consistência para justificar a definição de um atributo como temporal. Por exemplo, suponha-se que o nome de uma função determina o salário. O SGBDT deve garantir que o mesmo nome não esteja associado com dois salários diferentes ao mesmo tempo. Se o atributo temporal é tratado simplesmente como outro atributo qualquer, parece não ser necessário defini-lo especialmente como temporal. Outra questão é o suporte a valores de tempo de muitas granularidades diferentes. Operações apropriadas devem ser suportadas para realizar conversões de valores de tempo entre as diferentes granularidades e para formular consultas e apresentar os resultados em uma forma apropriada. Há a necessidade de uma operação de merge para tornar o trabalho com dados vindos de diferentes BD ou relações definidas em diferentes níveis de granularidade. 4.2 Evoluções em Sistemas de Informações Temporais 24 Várias evoluções foram realizadas dentro da área de sistemas de informações temporais nos últimos anos, como: • uma grande quantidade de modelos de dados temporais foi proposta, tanto relacional quanto orientada a objetos; • muitas linguagens de consultas foram projetadas baseadas nos mais diferentes modelos de dados, sendo que boa parte destas linguagens possui bases formais sólidas; • uma significativa quantidade de protótipos de SGBDs temporais foram desenvolvidos; e • vários SGBDs comerciais orientados a objeto, já existentes no mercado, incluem algum suporte temporal. 25 5. MANIPULAÇÃO DOS DADOS TEMPORAIS As operações de manipulação sobre os dados são fundamentais em um BD. A gerência dos dados é feita através de uma linguagem associada a cada modelo de dados, e deve propiciar a manipulação dos mesmos da melhor forma possível, tanto em funcionalidade como em desempenho. Em banco de dados temporais, a tarefa é mais complexa do que em banco de dados tradicionais, tendo em vista o volume de informações e a semântica do tempo em relação a cada aplicação, ou seja, o significado da evolução dos dados ao longo do tempo. Na manipulação existem a inserção, remoção e atualização dos dados. 5.1 Inserção em Banco de Dados Temporais A operação de inserção em banco de dados tradicionais é vista como uma transação relativamente simples pois não envolve a historia da informação que está sendo inserida, apenas o seu valor no exato momento. Algumas precauções básicas são tomadas, tais como: chaves primárias, integridade referencial e integridade de entidade. Em banco de dados temporais, a operação de inserção pode causar grandes preocupações além daquelas usuais em banco de dados tradicionais, pois existe um significado de tempo no contexto da aplicação. Quando uma operação de inserção é realizada, deve ser armazenado, além do novo valor em questão, o valor temporal correspondente ao tempo de transação e/ou validade inicial da tupla. Assim, um conjunto de regras analisa esses valores, para garantir a consistência temporal do banco de dados. A questão de tempo de transação é relativamente fácil de verificação, pois é avaliado apenas se o exato momento em que o dado foi transacionado no BD é válido no domínio temporal. Com relação ao tempo de transação, este tempo dever ser fornecido pelo usuário, sendo seu controle mais complexo. Por exemplo, não se pode ter dois valores válidos ao mesmo tempo para o mesmo atributo. 26 5.2 Remoção em Banco de Dados Temporais Uma remoção em banco de dados tradicionais é feita através da exclusão física da tupla, levando-se em consideração o conceito de transação. Uma vez feita esta operação, ela não pode ser desfeita. Isto implica que a informação não pode ser recuperada posteriormente. Na remoção a preocupação principal envolve a integridade referencial, ou seja, não pode remover uma tupla que está relacionada com tuplas subordinadas a ela. Em banco de dados temporais, a remoção é tratada de forma diferente, pois deve ser fornecida a possibilidade de recuperar informações tanto do passado, quanto do presente e futuro. Assim, a remoção em banco de dados temporais consiste em uma remoção lógica, ou seja, o tempo de validade da informação é encerrado, sendo que todos os valores permanecem sempre armazenados. Porém, a remoção pode ser um mecanismo importante quando se deseja excluir fisicamente do banco de dados informações muito antigas ou sem relevância. Esta operação recebe o nome de vaccuming (gerar vácuo) sendo a responsabilidade do administrador do banco de dados (DBA). 5.3 Atualização em Banco de Dados Temporais Em banco de dados tradicionais, a atualização inspira alguns cuidados, tais como: a recuperação da tupla correta, chaves primárias, integridade referencial, integridade de entidade, entre outros. Além dos cuidados tradicionais, no banco de dados temporais, existe a semântica do tempo. A atualização em banco de dados temporais compreende sempre pelo menos duas operações: o encerramento do tempo de validade da informação anteriormente válida e a inserção de uma nova tupla, com o novo valor e os rótulos temporais adequados. 27 5.4 Consulta em Banco de Dados Temporais As consultas podem apresentar diferentes formas quando bancos de dados temporais são utilizados. Uma linguagem de consulta temporal faz-se necessária a fim de explorar ao máximo os rótulos temporais de um BDT. O SQL derivou várias linguagens de consulta textuais utilizando modelos de dados temporais, sendo que a mais conhecida é TSQL2. Existem quatro situações diferentes na recuperação de informações, que são: • Recuperar valores de propriedades cujo domínio é temporal. Por exemplo, selecionar o valor da propriedade que armazena a data de nascimento de uma pessoa; • Referir-se a um determinado instante ou a um intervalo temporal. Por exemplo, selecionar as notas no 2º semestre de 2004; • Recuperar valores com base em restrições temporais. Por exemplo, recuperar todos os valores da nota do aluno antes do dia 28/06/2004; • Recuperar informações temporais (datas, intervalos). Segundo OLIVEIRA (2001), o processamento de consultas temporais apresenta problema da necessidade de novos métodos de indexação (estrutura e algoritmos de busca) devido ao grande volume de dados armazenados em BDT. Métodos tradicionais de indexação só podem ser utilizados para valores com algum tipo de ordenação completa e com estruturas de acesso a intervalos. 5.5 Linguagem de Manipulação de Dados Temporais A definição da linguagem de consulta temporal baseou-se na linguagem ATSQL2 (Applied TSQL2) (SNODGRASS et al., 1996) (BÖHLEN et al., 1995) por ser um padrão mais simples e por possuir similaridade sintática com o padrão SQL. Esta linguagem foi a primeira a especificar um padrão para uma linguagem de consulta 28 temporal, tendo como foco a consolidação de diferentes abordagens de modelos de dados temporais e o objetivo de criar uma linguagem de consulta temporal associada a um modelo de dados. O TSQL2(Temporal Structured Query Language) é uma linguagem de consulta temporal, designada à consulta e manipulação dos dados que variam de acordo com o tempo. Estes dados são armazenados em bases de dados relacionais. Esta linguagem também se baseia em SQL. Na linguagem TSQL2 poderíamos, por exemplo, listar o nome dos funcionários que estiveram empregados em janeiro de 1992 da seguinte forma: SELECT Name FROM Employee WHERE VALID (Employee) OVERLAPS PERIOD ‘[01/01/1992, 01/31/1992]’ Além desse exemplo, poderíamos listar o nome dos funcionários que foram registrados como empregados em janeiro de 1992 da seguinte forma: SELECT Name FROM Employee WHERE TRANSACTION (Employee) OVERLAPS PERIOD ‘[01/01/1992, 01/31/1992]’ Com relação a inserção de dados na tabela, primeiramente, é necessário a criação de uma tabela, que através desta, poderá ser realizado a inserção de dados. Por exemplo, desejamos criar um registro incluindo informações da prescrição do remédio de cada paciente. Estas informações poderiam ser o nome do paciente, o nome do médico, o nome do remédio, a dosagem do remédio e a freqüência que o remédio será ingerido. Além disso a tabela poderá ser tanto para tempo de validade quanto para tempo de transação. A criação da tabela pode ser visualizada abaixo: CREATE TABLE Prescription (Name, Physician, Drug, Dosage, Frequency INTERVAL MINUTE) AS VALID DAY AND TRANSACTION Um exemplo de inserção de dados no registro através da tabela criada, pode ser realizar da seguinte forma: INSERT INTO Prescription 29 VALUES (‘Sally’, ‘Dr. Beren’, ‘Proventil’, ‘100 mg’, INTERVAL ‘8:00’ MINUTE) VALID PERIOD ‘[1993/01/01 - 1993/06/30]’ A remoção, por exemplo, do período de um determinado paciente no banco de dados, pode ser realizada da seguinte forma: DELETE FROM Prescription WHERE Name = ‘Melanie’ VALID PERIOD ‘[1993-06-01 - 1993-06-30]’ A atualização, por exemplo, da dosagem e do tempo de validade de um determinado paciente, pode ser realizada da seguinte maneira: UPDATE Prescription SET Dosage TO ‘50 mg’ VALID PERIOD ‘[1993-03-01 - 1993-05-30]’ WHERE Name = ‘Melanie’ AND Drug = ‘Proventil’ Portanto, como observado, a manipulação de dados na linguagem TSQL2 é semelhante a SQL. 30 6. IMPLEMENTAÇÃO DE BANCOS DE DADOS TEMPORAIS Atualmente existem poucos sistemas de banco de dados temporais realmente utilizáveis, apesar das intensas pesquisas desenvolvidas nos últimos anos. Existem várias experiências sob forma de protótipos, nos quais baseiam estudos de problemas encontrados (de armazenamento e recuperação de informações) e mapeamento de modelos temporais para BDs tradicionais, nos quais os rótulos temporais são explicitamente representados e manipulados. Na literatura de BDT, não há um consenso comum aceito em modelo de dados ou linguagens de consulta que servirão de base para projetos de BDT e otimização de consultas temporais. Em um nível mais fundamental, a terminologia de BDT é altamente não padronizada. Contudo a utilização de um modelo de dados temporal para especificação de uma aplicação não implica, necessariamente, na utilização de um SGBD específico para o modelo. Tendo em vista essa realidade, uma alternativa seria continuar utilizando os SGBD comerciais, sendo que, agora, acrescentando um software intermediário que faria a tradução de uma linguagem de consulta temporal (escrita pelo usuário) para o padrão SQL (utilizado pelo SGBD). O software intermediário, então, receberia como entrada uma consulta em linguagem do modelo temporal e faria a conversão para a linguagem convencional (não-temporal) correspondente àquela consulta, colocando-a como saída final do processo. Assim, o SGBD seria preservado, pois não precisaria interpretar uma linguagem temporal. O usuário, por sua vez, também seria preservado, pois não precisaria escrever comandos de consulta SQL complexos envolvendo aspectos temporais. 31 7. CONCLUSÃO Antigamente, os sistemas de informação não possuíam o aspecto da temporalidade, ou seja, não armazenavam a história das informações, apenas estocavam os dados presentes. Por este motivo, sistemas de informação temporais passaram a ser especialmente estudados, bem como os bancos de dados e modelos temporais. O SGBD deve permitir armazenar e manipular dados temporais com outros dados, considerando o mesmo BD. O BD pode conter, tanto tabelas temporais, quanto tabelas tradicionais, sendo que as aplicações com dados temporais, geralmente, suportam grande volume de dados. O uso adequado de SQL garante o acesso e manipulação de dados temporais, não sendo necessário empregar métodos ou linguagens diferentes. Atualmente, existem poucos sistemas implementados de Banco de Dados Temporais. Para sua implementação é necessário a criação de regras, principalmente, quando operações de atualização e remoção são realizadas sobre as informações. Isto se deve às diferentes combinações possíveis admitindo o passado, o presente e o futuro. A principal vantagem de utilizar um modelo de dados temporal está na sua capacidade de expressar a associação dos elementos com o tempo e de especificar as restrições decorrentes disto. Já nos modelos de dados convencionais, o tempo é representado por atributos comuns (datas, horas, etc.) e não há mecanismos disponíveis para representar restrições temporais, exigindo que o modelador as especifique ao nível do modelo dinâmico. O estudo dos sistemas de informação temporais é bem formalizado e implementado teoricamente, mas a principal característica, que é atender ao mercado consumidor, ainda não está disponível, causando uma deficiência no estudo prático dos sistemas de informação temporais. 32 8. REFERÊNCIAS BIBLIOGRÁFICAS ALMEIDA, Adriana C.; CORDENONZI, Walkiria H., Aspectos Temporais em Sistemas de Informação, 2001. ANTUNES, Dante C.; HEUSER, Carlos A.; EDELWEISS, Nina, TempER: Uma Propostade Modelagem de Dados Temporal. 1998. BÖHLEN, M.; JENSEN, C. S. e SNODGRASS, R.. Evaluating the completeness of TSQL2. In J. Cli ord and A. Tuzhilin, editors, Recent Advances in Temporal Databases, 1995. p.153-172. CARVALHO, Henry G.; HEUSER, Carlos A., Linguagem de Consulta Temporal: Definição e Implementação. 2000 http://www.inf.ufrgs.br/pos/SemanaAcademica/Semana2000/HenryCarvalho/ CLIFFORD, J.; TUZHILIN, A. Recent advances in temporal databases. Berlin: Springer-Verlag, 1995. EDELWEISS, Nina; OLIVEIRA, José Palazzo M.; CASTILHO, José Mauro V. Evolução de esquemas em banco de dados temporais. In: CONFERÊNCIA LATINOAMERICANA DE INFORMÁTICA, 1995, Canela, RS. Porto Alegre: Instituto de Informática da UFRGS, 1995. EDELWEISS , N. Bancos de Dados Temporais: Teoria e Prática. XVI I Jornada de Atualização em Informática – JAI . XVIII SBC. Belo Horizonte, 1998. EDELWEISS, N; Modelo de Dados Temporais. 2004 http://metropole.inf.ufrgs.br/versoestempo/cmp151/MaterialAulas/Aula8-BDTemp9pp.pdf 33 HUBLER, Patrícia Nogueira; EDELWEISS, N. Implementação de um Sistema de Banco de Dados Temporal para o Modelo TF-ORM. 1999. www.inf.ufrgs.br/pos/SemanaAcademica/Semana99/hubler/hubler.html JENSEN, Christian S. A consensus glossary of temporal database concepts. ACM SIGMOD Record, New York, v.23, n.1, p. 52-64, Mar. 94. JENSEN, C. et al. A glossary of temporal database concepts. ACM SIGMOD Record, New York, v.21, Setembro, 1992. OLIVEIRA, José Palazzo M .; EDELWEISS , Nina. Modelagem de Aspectos Temporais de Sistemas de Informação. IX Escola de Computação, Recife, 1994. OLIVEIRA, Rosiane A., Modelagem e Desenvolvimento de um Banco de Dados Temporal. Monografia - Departamento de Ciência da Computação da Universidade Federal de Lavras. Minas Gerais/MG. 2001 ÖZSOYOGLU, G.; SNODGRASS, R. T. Temporal and real-time databases: a survey. IEEE Transactions on Knowledge and Data Engineering, New York, v.7, n.4, p.513-532, Aug.1995. SIMONETTO, Eugênio O. Uma proposta para incorporação de aspectos temporais, no projeto lógico de bancos de dados, em SGBDs relacionais. Porto Alegre. Dissertação – Programa de Mestrado em Informática, Pontifícia Universidade Católica do Rio Grande do Sul, 1998. SNODGRASS, R. T.; BÖHLEN, M. H.; JENSEN, C. S. e STEINER., A., Adding Transaction Time to SQL/Temporal. SQL/Temporal Change Proposal, ANSI X3H2-96502r2, ISO/IEC JTC1/SC21/WG3 DBL MAD-147r2, Novembro 1996. 34 SOUZA, Fernanda Lima de; SANTOS, Kellyne M. Implementando a Dimensão Tempo em Banco de Dados Convencionais : Um Estudo de Caso. Universidade Tiradentes – Centro de Ciências Formais e Tecnologia. 2002. TANSEL, A. et al. Temporal databases: theory, design and implementation. Redwood City: The Benjamin/Cummings Publishing, 1993. WORBOYS, M. F., 1998. A Generic Model for Spatio -Bitemporal Geographic Information. In: EGENHOFER, M. J., GOLLEDGE, E. R. G. eds. Spatial and Temporal Reasoning in Geographics Information Systems. New York, Oxford University Press: 2539. 35 APÊNDICE Questionário 1) Qual a idéia principal de Banco de Dados Temporais? Cite um exemplo de sua aplicação. Os bancos de dados temporais mantêm os dados passados, presentes e futuros, suprindo assim as “insuficiências” dos BDs convencionais, mantendo dados sobre uma organização e suas atividades. Por exemplo, o histórico do salário de um empregado. 2) Diferencie tempo de transação e tempo de validade. O tempo de validade de um fato é o momento do tempo em que o fato torna-se verdadeiro no mundo real. O tempo de transação é o momento do tempo em que o fato é registrado no banco de dados. O tempo de validade é definido pelo usuário e o tempo de transação é definido automaticamente pelo SGBD. 3) Qual a principal diferença entre Banco de Dados Convencional e Banco de Dados Temporais? Diferentemente de BDs convencionais onde a realidade é representada apenas pelo estado presente de um objeto, os bancos de dados temporais permitem armazenar e recuperar todos os estados do objeto ao longo do tempo. Os modelos temporais acrescentam mais uma dimensão aos modelos tradicionais – a dimensão temporal. Esta dimensão associa alguma informação temporal a cada valor. Caso o valor de um atributo seja alterado, o valor anterior não é removido do banco de dados, ou seja, o novo valor é acrescentado no BD.