1 / 30

PostGres: Um Banco de Dados Orientado a Objetos

PostGres: Um Banco de Dados Orientado a Objetos. Álvaro Vinícius de Souza Coêlho alvaro_degas@yahoo.com.br. PostGres. Desenvolvido na Universidade de Berkeley Sucessor do INGRES Atualmente: Miro (Comercial). PostGres. Versão não comercial disponível no site da universidade Escrito em C

taline
Télécharger la présentation

PostGres: Um Banco de Dados Orientado a Objetos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PostGres: Um Banco de Dados Orientado a Objetos Álvaro Vinícius de Souza Coêlho alvaro_degas@yahoo.com.br

  2. PostGres • Desenvolvido na Universidade de Berkeley • Sucessor do INGRES • Atualmente: Miro (Comercial)

  3. PostGres • Versão não comercial disponível no site da universidade • Escrito em C • 180.000 linhas de código

  4. PostGres • Relacional Estendido • Objetos • OIDs “tradicionais” • Objetos Compostos • Herança Múltipla • Versões

  5. PostGres • Dados históricos • Linguagem de consulta • PostQUEL – extensão da linguagem QUEL do INGRES

  6. PostGres • Dados históricos: • Pode-se consultar sobre o estado do banco em um determinado momento • Armazena o estado do BD depois de cada alteração

  7. PostGres • Modelo de dados baseado no relacional • ADT (Abstract Data Type) – disponível para que se possa definir um novo tipo no Banco de Dados • Todos os demais são derivados deste

  8. PostGres • Fornece um OID para cada elemento da relação – “mapeando” tabelas em objetos • Como criar classes e objetos?

  9. Pessoa Empresa RazãoSocial Endereço Nome Idade Endereço Trabalha em Contrata(Pessoa) Demite(Pessoa) Casar(Pessoa) Separar() TerFilho(Nome) Aniversaria() Mudar(NovEnd) Casado com Filho de PostGres • O projeto:

  10. PostGres • Declaração: Create empresa (CNPJ char [15], razaosocial = char[25], Endereço = char[30], Pessoas = postquel) Key (CNPJ)

  11. PostGres • Declaração: Create pessoa ( RG (char[11], nome = char[25], Idade = int, endereco = char [50], empregador = empresa, Filhode = pessoa Casadocom = pessoa) Key (RG)

  12. PostGres • Herança Create PrestServico (precohora = float) Inrerits (pessoa)

  13. PostGres • Herança múltipla • Caso se ponha mais de uma classe no comando inherits • Caso haja conflito de nomes de atributos retorna um erro.

  14. PostGres • Tipos de dados PostQuel • Servem para executar um método que faz o acesso ao relacionamento • Uma consulta feita em PostQuel

  15. PostGres • Key define um atributo como OID • Pode haver mais de um atributo • Nenhum pode ser nulo e eles não irão se repetir • Implementação quase idêntica à de chave primária do modelo relacional

  16. PostGres • Onde está a diferença? • Pode-se usar um tipo definido pelo usuário • Por exemplo, usar o par (empregador, matricula) • Empregador é do tipo empresa • Como comparar empresa? Como saber se uma empresa é igual a outra?

  17. PostGres • Cria-se uma função Define function há_emp(e = empresa) Return int as Retrieve any(empresa.all Where empresa.cnpj = e.cnpj • Key empregador using há_emp, matricula)

  18. PostGres • Manipulação de Dados • PostQUEL contem os comandos append, replace e delete • Append to pessoa (nome = ...) • Delete pessoa where ... • Replace pessoa (nome= ... ) where ... • Qualquer semelhança com QUEL NÃO terá sido mera coincidência!

  19. PostGres • Percurso do fecho transitivo de um esquema • Característica do postquel em extensão a quel • Mostrar todos os ancestrais de José

  20. PostGres • A consulta Retrieve * into classeresposta (pessoa.filhode) from a in classeresposta Where pessoa.nome = “José” Or pessoa.nome = getnome(a.filhode)) • * obriga que a consulta será executada até não retornar mais dados • Observar que a sintaxe do getnome não é OO

  21. PostGres • A consulta Retrieve (e.nome) from e in pessoa* Where e.nome = “José” • * aqui obriga que a consulta seja executada em todas as subclasses da classe pessoa

  22. PostGres • A consulta Retrieve func.salario From func[D] Where func.nome = “José” • Retorna o salário de José na data D

  23. PostGres • Regras • Ação executada no banco sob ordem de determinado evento On evento to objeto where condição Then do [instead] comandos

  24. PostGres • Evento pode ser • Retrieve • Replace • Delete • Append • New (replace ou append) • Old (delete ou replace)

  25. PostGres • Objeto é o nome de uma classe, ou do atributo de uma classe • Condição é um qualificador qualquer usado em PostQUEL • Instead indica que o comando deve substituir, e não acompanhar o evento que gerou a regra

  26. PostGres • Podem se referenciar a new e current em lugar do nome da classe • New é o novo valor (caso de inclusões ou alterações) • Current é o valor atual (caso de exclusões ou alterações) • Refuse: indica o cancelamento do evento (Rollback)

  27. PostGres • Exemplo: • O Salário de um funcionário no cargo de professor deve ser o que está determinado para este emprego na tabela Cargos On new funcionario.salario where funcionario.cargo = “Professor” Then do replace new.salario = c.salario From c in cargos Where c.nome = “Professor”

  28. PostGres • Críticas • Métodos implementados em funções – não nas classes • Não implementa OIDs naturais • Relacionamentos se confundem com variáveis de instância • Padrão proprietário • Viola o encapsulamento

  29. PostGres • Qualidades • Herança e Herança múltipla • Versões de dados ao longo do tempo • Completeza implementada em PostQuel • Aceita tipos definidos pelo usuário • É baratinho...

  30. PostGres. FIM! “Numa democracia, o direito de ser ouvido não inclui automaticamente o direito de ser levado a sério” Hubert Humphrey Degas

More Related