bancos de dados orientados a objetos

190
Bancos de Dados Orientados a Objetos Álvaro Vinícius de Souza Coêlho [email protected]

Upload: maren

Post on 17-Jan-2016

76 views

Category:

Documents


5 download

DESCRIPTION

Bancos de Dados Orientados a Objetos. Álvaro Vinícius de Souza Coêlho [email protected]. Roteiro. Orientação a Objetos Conceitos Como Identificar Classes e Objetos UML Casos de Uso Objetos e Classes. Roteiro. UML (cont) Atributos Associações Diagramas de Colaboração - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Bancos de Dados Orientados a Objetos

Bancos de Dados Orientados a Objetos

Álvaro Vinícius de Souza Coê[email protected]

Page 2: Bancos de Dados Orientados a Objetos

Roteiro

Orientação a ObjetosConceitosComo Identificar Classes e Objetos

UMLCasos de UsoObjetos e Classes

Page 3: Bancos de Dados Orientados a Objetos

Roteiro

UML (cont)AtributosAssociaçõesDiagramas de ColaboraçãoDiagramas de SeqüênciaMétodos

Page 4: Bancos de Dados Orientados a Objetos

Roteiro

BDOOHistóricoRelacional X RedesSQLBDOO – Objetos (apontadores?)EstendidosLing. de Prog. Em BD

Page 5: Bancos de Dados Orientados a Objetos

Roteiro

DefiniçãoPersistênciaObjetos ComplexosEncapsulamentoClassesHerançaLing. de Programação e Consulta

Page 6: Bancos de Dados Orientados a Objetos

Roteiro

Definição (cont)Completeza computacionalControle de TransaçõesExtensibilidadeRelacionamentosControle de ConcorrênciaRecuperação de Falhas

Page 7: Bancos de Dados Orientados a Objetos

Roteiro

Análise GeralRelacionamentosLinguagens DDL e DMLFalta de PadrãoViolação do EncapsulamentoModo Formal Incompleto

Page 8: Bancos de Dados Orientados a Objetos

Roteiro

O PostGresRelacional EstendidoObjetos, OIDs, Herança (simples e múltipla)PostQuel (Quel OO)ADT (Abstract Data Type)Declarações de Dados

Page 9: Bancos de Dados Orientados a Objetos

Roteiro

O PostGres (cont)Manipulação de DadosRegras

Conclusão

Page 10: Bancos de Dados Orientados a Objetos

Orientação a Objetos

O que é um objetoAlguma coisa que faz sentido no contexto da aplicação.Podem ser definidos como um conceito, abstração ou simplesmente algo que tenha significado bem definidoObjetos servem a dois propósitos: Prover entendimento do mundo real e dar uma base prática para a implementação

Page 11: Bancos de Dados Orientados a Objetos

Orientação a Objetos

O que é um objetoA decomposição de um problema em seus objetos depende de preferências e julgamentos pessoaisTodo objeto tem identidade e é distinguível dos seus semelhantesObjeto: Uma Coisa. Classe: Conjunto de Coisas

Page 12: Bancos de Dados Orientados a Objetos

Orientação a Objetos

O que é um objetoClasses: Árvores, Árvores Frutíferas, Árvores Ornamentais, Empregados, FornecedoresObjetos:“A mangueira do quintal da minha avó”, “José da Silva, Professor, nascido em 14/07/1963” e “Microsoft Corporation”

Page 13: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Classes“É um conceito que descreve um grupo de objetos com propriedades (atributos) similares, comportamentos (métodos), relacionamentos (associações) comuns com outras classes e principalmente, semântica semelhante “ Rumbaugh• Parêntesis são notas minhas

Page 14: Bancos de Dados Orientados a Objetos

Orientação a Objetos

ClassesSe o foco da modelagem é objeto, porque perder tempo com classes?O agrupamento de objetos em classes permite a abstração do problema!Prerrogativa de generalizar a partir de poucos casos específicos

Page 15: Bancos de Dados Orientados a Objetos

Orientação a Objetos

ClassesAs definições são armazenadas uma por classe, não uma por instânciaAs operações também são definidas para a classe, de forma que seus objetos possam reutilizá-lasTomando por exemplo a classe Pessoa

Page 16: Bancos de Dados Orientados a Objetos

Orientação a Objetos

ClassesPode ser necessário saber que uma pessoa (qualquer) possui: Idade, Nome, Endereço e, possivelmente Cônjuge, Emprego e FilhosQualquer pessoa, também, tem os comportamentos de Casar, Separar, Ter Filhos, Aniversariar, Se mudar ...

Page 17: Bancos de Dados Orientados a Objetos

Orientação a Objetos

ClassesIsso é verdade para todas as pessoas que eventualmente sejam inseridas nesta classeAinda que o valor de cada informação possa ser modificado a cada caso, a forma de descrição é a mesma

Page 18: Bancos de Dados Orientados a Objetos

Orientação a Objetos

ClassesJosé pode ter 34 anos, morar na Rua das Flores, não ter cônjuge, trabalhar como vendedor na Sapataria Vianna e ter uma filha, a Maria. Antônio pode ter 51 anos, morar na Rua da Independência, ter uma esposa (Helena), trabalhar como gerente na Sapataria Vianna e ter dois filhos: Pedro e Ricardo

Page 19: Bancos de Dados Orientados a Objetos

Orientação a Objetos

ClassesJosé e João são, nesta abordagem, objetos de uma mesma ClasseObjetos de uma classe tem os mesmos atributos e comportamentos padronizados • não necessariamente iguais, como vai se

ver

Page 20: Bancos de Dados Orientados a Objetos

Orientação a Objetos

ClassesOs objetos de uma classe normalmente se diferenciam pelos seus atributos e relações com outros objetos Mas dois objetos podem ser idênticos em seus atributos e relações, mantendo ainda assim cada um a sua individualidade

Page 21: Bancos de Dados Orientados a Objetos

Orientação a Objetos

ClassesPor exemplo um sistema de pesquisa por amostragemCada pessoa entrevistada te seu nome mantido no anonimato. É um objeto da classe EntrevistadoUma classe “Entrevistado” possui os atributos “Cor”, “Naturalidade”, “Idade”, “Faixa Salarial” e “Sexo”.

Page 22: Bancos de Dados Orientados a Objetos

Orientação a Objetos

ClassesPodem existir inúmeras instâncias de objetos com os mesmos valores (Negra, Itabuna/BA, 22, 0 a 300 Reais, Feminino)Apesar disso, cada instância é única – e pode ser referida unicamente no sistema

Page 23: Bancos de Dados Orientados a Objetos

Orientação a Objetos

ClassesOs objetos de uma classe compartilham uma semântica comum, mais que atributos e métodos comuns

Page 24: Bancos de Dados Orientados a Objetos

Orientação a Objetos

ClassesPor exemplo, um objeto da classe Roupa e um objeto da classe Carro podem ter os atributos Cor e Fabricante. Porém, olhados sob a perspectiva dos mais variados sistemas terão, certamente, que ser colocados em classes distintas

• Exceto no caso de um sistema bastante excêntrico - não consegui pensar em nenhum caso que Cor e Fabricante fossem relevantes ao mesmo tempo em que roupas e carros pudessem ficar numa mesma classe.

Page 25: Bancos de Dados Orientados a Objetos

Orientação a Objetos

ClassesCada objeto sabe a que classe pertence, Isto é tão natural que muitas Linguagens Orientadas a Objeto implementam um atributo interno que informa a classe do objeto.

Page 26: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Como identificar classes. Iniciando a modelagem

Classes são coisas que deverão existir dentro do sistema. Logo, devem representar coisas do mundo real Normalmente aparecem como nomes nas sentenças que definem o mundo a ser modelado (a se ver em UML)

Page 27: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Como identificar classes. Iniciando a modelagem

Deve-se observar que nem todos os nomes das sentenças são classes É interessante ressaltar que a observância dessas regras pode resultar no surgimento/desaparecimento de classes no decorrer do processo

Page 28: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Como identificar classes. Iniciando a modelagem

A orientação a objetos sugere que o processo de análise seja feito em espiralcada etapa pode ser re-visitada inúmeras vezes, e a cada destas se acrescenta novas características

Page 29: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Como identificar classes. Iniciando a modelagem

Lembrança Necessária: É necessário lembrar de alguma coisa sobre os objetos da classe? Processamento Necessário: Há algum comportamento relevante dos objetos?

Page 30: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Como identificar classes. Iniciando a modelagem

Atributos Múltiplos: Duvidar de classes que não tenham pelo menos dois atributos.Mais de um objeto por classe: Duvidar de classes que tenham somente um objeto

Page 31: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Como identificar classes. Iniciando a modelagem

Atributos sempre aplicáveis: Deve haver um conjunto de atributos possível de se imaginar para os mais diferentes objetos da classe.• Caso o conjunto seja sempre o mesmo

ok. Caso contrário, deve se tratar de Generalização

Page 32: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Classes, no diagrama de casses, devem ser colocados num retângulo dividido em três partes, a primeira com seu nome

Pessoa Empresa

Page 33: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Como identificar Atributos Atributos são informações específicas de propriedades de um objeto que são relevantes para o sistemaPara identificar os atributos, deve-se olhar para as classes identificadas e imaginar as responsabilidades do sistema.• O que é necessário saber sobre quem, a

qualquer tempo.

Page 34: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Como identificar Atributos Atributos devem ser um valor de dados puroNão se pode permitir que um atributo seja um outro objetoMas podem ser multivaloradosOs atributos vão ser listados na segunda parte do retângulo da classe

Page 35: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Identificadores Naturais e Artificiais

Existem atributos que são naturalmente identificadores únicos de objetos: Placa, CPF, etc.Os BD Relacionais usam identificadores únicos, naturais ou artificiais, para reconhecer um objeto (uma tupla).

Page 36: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Identificadores Naturais e Artificiais Aqui se deve esquecer a questão: Atributos nunca são identificadores únicos• Ainda que não ocorram mais de uma vez e

eventualmente sejam usados assim na implementação.

• Chaves primárias são considerações de projeto.

• E em BDs Relacionais

Page 37: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Identificadores Naturais e Artificiais

Portanto, RG, Placa, Chassis são atributos perfeitamente válidos. Mas Usuário_ID, CodPaciente NumCliente são erros

Page 38: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Generalização Uma classe deve ter atributos ou métodos específicos para objetos bem definidosPor exemplo, uma classe “Figura Geométrica” Atributos “Posição_Centro”Métodos “Desenhar()” e “Área()”.

Page 39: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Generalização Mas para figuras diferentes, a forma de calcular a área muda de acordo com o tipo Círculo e RetânguloAlém disso, atributos também sofrem mudanças Círculos precisam de “Raio” e retângulos precisam de “Base” e “Altura”

Page 40: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Generalização “Círculo” e “Retângulo” são, portanto, candidatos naturais a serem generalizados na classe “Figura Geométrica”Regra Geral: “Se duas (ou mais) classes tem semântica semelhante, e um ou mais atributo ou método e comum (mas não todos, pois seriam a mesa classe!), dêvem ser conjugadas como especialização de uma terceira”

Page 41: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Generalização Analogamente, “Se uma classe tem um (ou mais de um) conjunto de atributos ou métodos que são empregados apenas em ocasiões específicas, deve ser dividida em uma ou mais especialização”.Em ambos os casos, os atributos ou métodos que forem comuns devem ser colocados na classe geral, restando para as especializações aqueles que forem do seu escopo

Page 42: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Generalização Generalização e Especialização provêem uma série de vantagens, ligadas à herança e reutilização de código – A se ver em UML

Page 43: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Associações entre ClassesNo levantamento das classes ou dos atributos, pode-se perceber que há relações entre duas ou mais classesAs associações complementam a informação do objeto com mapeamentos necessários para que ele possa de fato cumprir seu papel

Page 44: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Associações entre ClassesSão semelhantes aos relacionamentos do MERPossuem cardinalidade • Um para Um • Um para muitos • Muitos para muitos

Page 45: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Associações entre ClassesE opcionalidade • As associações podem ou não obrigar

cada objeto a se associar com algum outro, de acordo com as regras da cardinalidade

A notação para cardinalidade e opcionalidade não será mostrada – A se ver em UML

Page 46: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Associações entre ClassesAs associações podem ser percebidas a partir dos atributos: Por exemplo, uma classe “Filme” tem, entre outros, o atributo “Diretor”. Há uma classe “Diretor”, aojando objetos deste tipo A classe filme ganha uma associação com a classe diretor: “Dirigido por”.

Page 47: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Associações entre ClassesNo nosso exemplo, os atributos agora estão colocados. As associações idemObservá-las entre Pessoa e Empresa (“trabalha em”), e mesmo entre Pessoa e Pessoa (“filho de” e “Casado com”).

Page 48: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Associações entre ClassesPessoa

NomeIdadeEndereço

Empresa

RazãoSocialEndereçoTrabalha

em

Filho de

Casado com

Page 49: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Como identificar Métodos Um método é uma função de transformação Pode ser aplicada por ou para objetos em uma classeApós a execução de um método, algum tem sempre seu estado alterado (ainda que para mesmo, mas houve a transformação)

Page 50: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Como identificar Métodos Exceto em três métodos especiais Criar, que é um método específico da classe, e que especifica que uma nova instância passa a existir.Destruir, que, similarmente, exclui uma instancia daquela casse • destruir deve ser aplicado ao objeto, ao

contrário de criar

Page 51: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Como identificar Métodos Pegar_*, que são métodos que permitem o acesso aos atributos. Dispensáveis, para efeito de desenvolvimento (para que usar X := Mostrar_Nome(Empregado) se se pode fazer X := Empregado.Nome?)

Page 52: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Como identificar Métodos Muitos autores recomendam o uso destes tipos de método para esconder a implementação interna do objeto Em caso de modificações específicas, não estender alterações por outros objetos – enfraquecer o acoplamento

Page 53: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Como identificar MétodosOs métodos fica na terceira e última parte do retânguloEm alguns casos, uma mesma operação pode ser aplicada, com adaptações específicas, a diferentes classes. Esta propriedade é chamada polimorfismo.

Page 54: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Como identificar MétodosO exemplo do cálculo da área de figuras geométricas é um cãs de polimorfismoA área de um círculo, de um triângulo, de um retângulo e de um trapézio são calculadas, embora com semântica idêntica, de formas totalmente diferentes

Page 55: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Como identificar MétodosPara se identificar métodos, deve-se levantar as funções que altera o estado de um objeto Isso sugere o uso de métodos Fazer_* para cada atributo modificável pelo sistema, o que normalmente é válido

Page 56: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Como identificar MétodosHá métodos que criam ou modificam uma associação com outros objetos Estas associações precisarão respeitar a semântica de cardinalidade e opcionalidade que tenha sido definida entre as classes

Page 57: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Como identificar MétodosFinalmente, existem métodos que, para serem executados, recorrem a métodos de outros objetos. Por exemplo, um objeto “CNH”, num sistema do Detran, tem o método “Emitir” CNH se associa, um para um, com Condutor

Page 58: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Como identificar MétodosEste método verifica os resultados do exame do condutor e, caso esteja tudo em ordem, libera os dados para impressão.Um Pedido, portanto, deve ser enviado ao objeto específico da classe “Exames” que armazena exames de condutores, solicitando o serviço (que deverá existir) “Verifica_Aprovação”.

Page 59: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Como identificar MétodosEste método verifica os resultados do exame do condutor e, caso esteja tudo em ordem, libera os dados para impressão.Um Pedido, portanto, deve ser enviado ao objeto específico da classe “Exames”

Page 60: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Como identificar MétodosA classe “Exames” armazena os exames dos condutores a serem emitidas a CNHÉ solicitando o serviço (que deverá existir) “Verifica_Aprovação”. A essa solicitação chamou-se Mensagem

Page 61: Bancos de Dados Orientados a Objetos

Orientação a Objetos

No nosso exemploPessoa

NomeIdadeEndereço

Casar(Pessoa)Separar()TerFilho(Nome)Aniversaria()Mudar(NovEnd)

Empresa

RazãoSocialEndereço

Contrata(Pessoa)Demite(Pessoa)

Trabalha em

Filho de

Casado com

Page 62: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Alguns métodos merecem ser descritos (em pseudocódigo) para ilustrar a simplicidade e a troca de mensagens Pessoa.Casar(x) {x é um objeto do tipo pessoa}

Este.CasadoCom x; {Este se refere ao próprio objeto}

X.CasadoCom Este

Page 63: Bancos de Dados Orientados a Objetos

Orientação a ObjetosPessoa.Separar()

XEste.CasadoCom;

X.CasadoCom Nulo

Este.CasadoCom Nulo

A relação “Casado com” está definida bilateralmente, o que é incorreto para efeitos de projeto mas foi empregado aqui por motivos didáticos.

Page 64: Bancos de Dados Orientados a Objetos

Orientação a ObjetosPessoa.TerFilho(NomeFilho)

X Pessoa.Criar()X.Nome NomeFilho {ou X.Altera_Nome(NomeFilho)}X.Idade 0 [ou X.Altera_Idade(0)}X.Endereço Este.Endereço { ou ...}

Pessoa.Aniversaria()Este.Idade Este.Idade + 1 {aqui não é necessário chamar

método, pois estamos “dentro” do mesmo objeto}

Empresa.Contrata (X)X.TrabalhaEm Este

Page 65: Bancos de Dados Orientados a Objetos

Orientação a ObjetosPessoa.TerFilho(NomeFilho)

X Pessoa.Criar()

X.Nome NomeFilho {ou X.Altera_Nome(NomeFilho)}

X.Idade 0 [ou X.Altera_Idade(0)}

X.Endereço Este.Endereço { ou ...}

Pessoa.Aniversaria()

Este.Idade Este.Idade + 1 {aqui não é necessário chamar método, pois estamos

“dentro” do

mesmo objeto}

Page 66: Bancos de Dados Orientados a Objetos

Orientação a Objetos

Mensagens entre classesÉ útil indicar, no modelo a dependência de um objeto, de métodos de outroUma seta, partindo do objeto que solicita, pode deixar isso evidenteDiagramas alternativos pode ajudar – a se ver em UML

Page 67: Bancos de Dados Orientados a Objetos

BD Orientado a Objetos.

FIM!

“Deixadas a si mesmas, as coisas irão de mal a pior. A natureza conspira pela falha. Posto que a natureza é canalha,

para algo dar certo é preciso deixar de fazer por onde”Lei de Murphy aplicada à Metafísica

Page 68: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoHistoricamente os sistemas de Bancos de Dados caminharam abraçados à tecnologia mais difundida.Assim que surgiram, BDs estavam suportados em MainFrames.

Page 69: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoPara compreender melhor é necessária uma rápida visita à arquitetura MainFrame:

Aplicação

SGBD

BD

Terminal

MainFrame

Page 70: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoO usuário tem diante de si um terminal cuja função única é entrada e saída de dadosA aplicação (que está no MainFrame) acessa o SGBD, que cuida do BD em todos os aspectos, conforme mostrado.

Page 71: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoOpcionalmente a aplicação poderia acessar diretamente os arquivosO MainFrame permitia a execução de muitos programas ao mesmo tempoCompartilhar um único arquivo através da estratégia de Time SharingUma fatia de tempo para cada processo, assim todos estavam sempre sendo executados

Page 72: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoAs vantagens desse modelo eram a segurança e a integração, pois os sistemas estavam suportados numa única plataforma de HW e SWA principal desvantagem era o custo. Os MainFrames muitas vezes eram até alugados

Page 73: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoCom a popularização e o barateamento dos microcomputadores, surgem os sistemas menores, que acessavam arquivosNa prática, é importante ressaltar, não há ação de um SGBD, pois os aplicativos acessam o arquivo de dados diretamente

Page 74: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoEsta estratégia ganhou força com o aparecimento do Dbase, fabricado pela Aston Tate, que trazia inúmeras facilidades de manipulação interativa de dados, usando os famosos arquivos .DBF. Aston Tate hoje é Borland Inc.

Page 75: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoFenômeno 1: Popularização das redes locais de computadores, Fenômeno 2: Aparecimento das versões mais populares dos sistemas operacionais de rede, Conseqüência: A orientação mudaria um pouco

Page 76: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoO servidor de arquivos

EstaçõesServidor de Arquivos

Page 77: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoProvia mecanismos de compartilhamento de arquivos por mais de um processo Estando, inclusive, em máqinas diferentes Semelhante ao que o MainFrame fazia Um aplicativo agora podia acessar os arquivos compartilhando-os com outros

Page 78: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoOs aplicativos cuidariam de acessar o servidor a partir de muitos pontosAtendendo a diversos usuários como o MainFrame, mas a custo bem inferiorAlém disso uma estação de trabalho tinha vantagens sobre o terminal “burro”

Page 79: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoAs desvantagens eram todas ligadas ao fato de que não havia um SGBD, Os dados ficavam à mercê das aplicações para ter seus aspectos de segurança e integridade respeitados E Concorrência?

Page 80: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoEste modelo arquitetural de Banco de Dados ficou conhecido como Sistemas tipo Servidor de ArquivosA partir das criticas feitas ao modelo tipo Servidor de Arquivos surge uma alternativa, a instalação de um SGBD para atender a todos. Ou seja, criar um Servidor de Banco de Dados.

Page 81: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoA arquitetura fica um pouco mais parecida com a do MainFrame, A diferença é que a aplicação agora funcionaria em outra máquina (na verdade poderia ser na mesma) Seria cliente do serviço prestado pelo SGBD, ou seja, acesso aos dados.

Page 82: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoModelo Cliente-Servidor

EstaçõesServidor de Banco de Dados

SGBD

BD

Aplicativo

Aplicativo

Aplicativo

Page 83: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoA principal vantagem é que o Servidor de BD implementava os aspectos de ConcorrênciaIntegridadeSegurançaRecuperação de falhas

Page 84: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoA desvantagem surge ironicamente do fato que levou muita gente a se afastar da arquitetura MainFrame: A Estação ClienteArgumento dos detratores do MainFrame:Aplicações nas pontas permite-se rodar aplicações em máquinas muito mais baratas. Isso é realmente um fato

Page 85: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoOs problemas: Manutenção das aplicações: cada nova versão tinha que ser instalada em muitas máquinas, e isso começou a representar um custo excessivo Dependência tecnológica: Escolhido o SO e o SGBD, qualquer mudança teria custos por vezes proibitivos

Page 86: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoPor outro lado, a crescente sofisticação das aplicações exigia investimentos pesados no fortalecimento do poder de processamento dos clientesPassou-se a olhar, então, esta arquitetura como um modelo em duas camadas:

Page 87: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoCliente processa dados e apresentação Cliente se conecta diretamente aos servidores. Cliente “Robusto” (e caro) Aplicações grandes, e baixa reutilização Dificuldade na distribuição das versões

Page 88: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoA solução Implementar múltiplas camadas (no mínimo 3) a invés de apenas duas.

Page 89: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoApresentação, Lógica do Negócio e Acesso a Dados.Cliente “Magro” Serviços da camada de negócios compartilhados Atualização de versões centralizado Independência de Plataforma

Page 90: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoA grande modificação fica no cliente “magro”Opcionalmente (e normalmente é uma boa idéia), pode-se quebrar a camada intermediária (Lógica do Negócio) e a de acesso a dados em componentes (ou objetos)

Page 91: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoObjetos de lógica do negócioEncapsulam regras de negócio do mundo real independente de como os dados estão armazenadosUsualmente possuem múltiplas operações acessando vários objetos de dados

Page 92: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoObjetos de acesso a dados Deve ser o único meio de acesso a dados (incorpora especificamente a DML do Banco de Dados)Provê um conjunto de métodos que permitem lhe serem solicitados serviços

Page 93: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoNecessidade: Mapeamento Objetos de Dados – Objetos de NegócioO modelo é, então, estendido para N camadasÉ possível, se desejável, até a re-inclusão do próprio MainFrame na estrutura

Page 94: Bancos de Dados Orientados a Objetos

BDs Orientados a ObjetoHistórico

Multicamadas

Page 95: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoO SGBD não “vê” a estrutura complexa que se construiu ao seu redor.Os acessos aos dados, do ponto de vista do SGBD permanecem da mesma formaA camada de acesso a dados atua como cliente do servidor de Banco de Dados

Page 96: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoO cliente pode ser tão magro quanto possível. Idealmente, trata-se apenas de um navegador WebPela Web, as conexões podem ser feitasNo cliente funciona apenas um componente (ASP, Java, ...) Provê a visualização, e a entrada/saída de dadosQuase um terminal do MainFrame, mas executa efetivamente processos.

Page 97: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoAo ser ativado o processo (componente)Verifica-se se a data do que está instalado é defasada em relação ao do servidorEntão houve uma atualizaçãoA versão mais recente é transportada automaticamente

Page 98: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoVantagensPode-se trocar de plataforma com propagação mínima de efeitos colaterais• Ex. Para trocar o SGBD é necessário apenas

um ajuste nos objetos de acesso a dados.

Atualizações de versões automáticas e imediatas, sem a necessidade de reinstalação on site.

Page 99: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoOs componentes podem (e tendem a) ser projetados preservando-se os princípios de encapsulamento – Como?Os problemas de coesão baixa e acoplamento alto precisam ser minimizados – Como?

Page 100: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoPreserva-se o legado do MainFrame, do qual muitas organizações nunca puderam se desfazer.O cliente magro pode ter uma capacidade de processamento mais modesta, o que diminui os custos.Esta estrutura, é conhecida como Servidor Web.

Page 101: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoMas alguma coisa havia mudadoA necessidade de componentes e de encapsulamentoEste ambiente é o natural para a orientação a objetos.Os ambientes de programação precisam ser OO – além de gráficos

Page 102: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoJava começa, então, a ganhar muito espaço neste contexto. Surgem aplicações visuais JavaProvêem todas as facilidades dos ambientes de Visual Basic e DelphiMais Orientação a Objetos

Page 103: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoContra a força de Java a Microsoft propõe padrões proprietários, integrados ao Visual Basic, mas encontra resistênciaDelphi, por sua vez, passa a ser aproveitada nos conceitos de Orientação a ObjetoSistemas distribuídos em Java, Delphi e Visual Basic vão se multiplicando a cada dia

Page 104: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoOs SGBDs acompanharam essa evolução, mudando tambémAté 1960: Sistemas de Arquivos Integrados – ISAM, VSAM (IBM).Crítica: pouco encapsulamentoControles de segurança, concorrência, integridade e recuperação de falhas ficavam a cargo dos programas aplicativos

Page 105: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoSe houvesse alguma modificação no modelo, como garantir que todos os programas respeitariam a “nova ordem”? Muito trabalhoso!Final dos aos 60: Modelo hierárquico – IMS (IBM).

Page 106: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoUma estrutura de registros pai-filho dispostos em seqüência, implementando relação um para muitos de cima para baixoImplementava regras de integridade, embora com limitações, e aspectos de segurança, recuperação de falhas e controle de concorrência

Page 107: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

Histórico1970 e início dos anos 80: Modelo de redes (Codasyl) – IDMS, DBMS-II (Unisys).Extensão do modelo hierárquico, com relações muitos para um estabelecidas e todas as direções.Modelava toda sorte de relacionamentos com facilidade.

Page 108: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoFinal dos anos 70: Modelo Relacional (Codd) – SQL-DS, DB2, (IBM), Oracle, Ingres.Relação entre dados, não através de estruturas internas do bancoModela, como o em Rede, toda sorte de relacionamentos

Page 109: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

BDs Relacionais X RedesRelacionais Tem performance inferior ao em RedesMas tem linguagens DDL e DML como Quel e SQL mais simples. Fator decisivo.São dominantes hojeFinal dos anos 80: Modelo reacional-estendido. Orientado a Objeto. BDOO, O2, Oracle (a partir da versão 9) ...

Page 110: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

SQLO argumento decisivo a favor dos relacionaisFácil de usarEficiente EficazPadrãoConsagrada em todos os produtos hoje

Page 111: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

HistóricoMas não há sentido em migrar dos relacionais para os Orientados a ObjetosCustosCulturaTreinamento

Page 112: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

BDOO – Objetos (Apontadores)Vantagens prometidas:Simplicidade – BDs OO estão para BDs Relacionais como Java está para CPromessa: A performance de BDs em rede sem a complicação da operação de endereços internos

Page 113: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

Relacionais EstendidosUm BD relacional sob uma casca orientada a objetoOIDsMétodosClassesEx: PostGres

Page 114: Bancos de Dados Orientados a Objetos

BDs Orientados a Objeto

Linguagens de Programação de BDsExtenção de C++, SmallTalk ou Java com Persistências de ObjetosControle de Transações e ConcorrênciaPossui (normalmente) uma linguagem proprietária para DDL e DML

Page 115: Bancos de Dados Orientados a Objetos

Características

O que define um BDOO?Discussão indefinidaDefinição (Atkinson, 1989)

Page 116: Bancos de Dados Orientados a Objetos

Características

Um BDOO deverá prover:Persistência, Objetos Complexos, Identidade, Encapsulamento, Classes, Herança, Linguagens, Completeza, Transações, Extensibilidade, Relacionamentos, Concorrência, Tol. Falhas? ? ? ? ? ? ? ? ? ? ? ? ?

• Objetivos de BDs tradicionais + OO

Page 117: Bancos de Dados Orientados a Objetos

Características

PersistênciaCaracterística principal para diferenciar BDOO de LPOO

Problema: Como definir o que deve e o que não deve ser persistente?

Page 118: Bancos de Dados Orientados a Objetos

Características

Declaração de Persistência: depende do SGBD

O2 – “name” torna o objeto persistente

Poet – Classes definidas como persistentesObjectStore – Quaisquer objetos podem ser persistentes: definido em sua construção

Page 119: Bancos de Dados Orientados a Objetos

Características

Especificamente: Objetos podem ser persistentes das seguintes formas:

Por classe – uma classe é declarada persistente (Poet)Por chamada – na criação do objeto um comando o torna persistente (ObjectStore, O2)Por referência – Objetos referenciados por objetos persistentes também o são

Page 120: Bancos de Dados Orientados a Objetos

Características

Qual a melhor alternativa?Ortogonalidade entre tipos e persistência

Por classe – não há ortogonalidadePor chamada – perfeitamente ortogonal

Page 121: Bancos de Dados Orientados a Objetos

Características

Objetos ComplexosObjetos complexos: Todos-Partes, Associações Múltiplas

No MR: muitas tabelas!

Propõe-se a utilização dos modelos das LPOO

Page 122: Bancos de Dados Orientados a Objetos

Características

Não é necessário respeitar a 1FN!Objetos podem não ser atômicos: Listas, conjuntos, vetores, outros objetos, etc.

Em LPOO isso é uma vantagem! Mas nos SGBDRs não se pode aproveitar!

Page 123: Bancos de Dados Orientados a Objetos

Características

Identificador de Objeto (OID)Nas LPOO: Objetos momentâneos e “proprietários”Nos BDOO: Objetos persistentes e “compartilhados”Em BDOO há a necessidade de uma identificação muito mais forte!

Page 124: Bancos de Dados Orientados a Objetos

Características

Único e imutável durante toda a existência – não apenas na “sessão”OIDs são identificadores únicos e válidos em todo o BD

RecuperaçãoAssociações

“Invisíveis” e “Intocáveis” pelo usuário

Page 125: Bancos de Dados Orientados a Objetos

Características

EncapsulamentoConceito é importante para a OOEm BDOO: Acesso não aos atributos, mas a métodosImpossível prever todos os acessos necessários para criar os métodos! As necessidades são dinâmicas!

Page 126: Bancos de Dados Orientados a Objetos

Características

“Abrir” os atributos a uma Linguagem de Consulta

Quebra do encapsulamento

Admite-se que o encapsulamento “nem sempre” é adequado aos BDOOEncapsulamento: característica básica da OO

Page 127: Bancos de Dados Orientados a Objetos

Características

Normalmente se “copia” a solução encontrada em C++

Permite-se que atributos sejam “públicos”, e não somente métodos

E usa-se linguagens de consulta parecidas com SQL

Page 128: Bancos de Dados Orientados a Objetos

Características

LinguagensNum Banco de Dados Relacional há linguagens deConsulta – SQL, QBE, Xbase, Quel...Programação – PL/SQL, TransactSQL, Dbase...E num BDOO?

Page 129: Bancos de Dados Orientados a Objetos

Características

Linguagens de ConsultaConsultas ad hocSem maiores complicações – “feita” para quem já usa SQLAcessam atributos e métodosViolam o encapsulamento

Page 130: Bancos de Dados Orientados a Objetos

Características

Linguagens de ProgramaçãoTentam resolver um problema antigo nos SGBDR – Não-Casamento de Impedância (Impedande Mismatch)

Impedande Mismatch refere-se à complexidade das estruturas de dados das linguagens X estruturas de dados nos SGBDR

Page 131: Bancos de Dados Orientados a Objetos

Características

Para resolver:Compatibilizar dados obtidos nos acessos com as estruturas da linguagemTabelasStructs, Listas, Matrizes, etc.

Page 132: Bancos de Dados Orientados a Objetos

Características

Num SGBDR: Tabelas (Relações)Num programa em Delphi(Pascal): Record – Vários níveis

Um registro Departamento com listas de professores, projetos de pesquisa e áreas de interesseTabelas: Departamento, Professores, Projetos e Áreas de Interesse

Page 133: Bancos de Dados Orientados a Objetos

Características

Para gravar:Cada parte do objeto é processada à parte – indo para seu local determinado

Para ler:Operação inversa: Leituras de partes em separados para organização centralizada

Desestruturação e Reestruturação

Page 134: Bancos de Dados Orientados a Objetos

Características

A proposta é usar uma LPOO que acesse os dados no BDOO (objetos persistentes)

Não há impedânciaDiminuição e Simplicidade de códigoDiminuição de Tempo de ExecuçãoCompartilhamento de estruturas

Page 135: Bancos de Dados Orientados a Objetos

Características

Completeza ComputacionalNem todas as consultas podem ser feitas com linguagens de consultaA questão do Auto-RelacionamentoNão são implementações completas da Máquina de Turing!

Page 136: Bancos de Dados Orientados a Objetos

Características

Solução: Programação em SGBDsUma Linguagem de Programação completa

Desvios condicionaisRepetiçãoSubprogramaçãoRecursividade

Page 137: Bancos de Dados Orientados a Objetos

Características

Em SGBDOO o problema é o mesmoLinguagens de Programação OO são “nativas” aos SGBDs

Muitos deles são LPOO estendidas para objetos persistentes!

As linguagens de consultas em BDOO – o mesmo problema

Page 138: Bancos de Dados Orientados a Objetos

Características

Controle de TransaçõesNos Bds tradicionais:

O mais rápido possívelA interrupção de uma transação no meio é indesejávelAtômica

Page 139: Bancos de Dados Orientados a Objetos

Características

Nos BDOOO tempo depende da natureza da aplicaçãoA interrupção de uma transação no meio pode ser necessáriaNão-Atômica

Page 140: Bancos de Dados Orientados a Objetos

Características

Recuperação de FalhasBDs tradicionais:

Redo das transações completasUndo das transações incompletas

Page 141: Bancos de Dados Orientados a Objetos

Características

BDOO:Redo das transações completasRedo do que for possível das transações incompletas

Estudos para se ajustar a teoria ded BD aos requisitos de BDOOPossivelmente o estabelecimento de uma nova técnica de Recuperação de Falhas

Page 142: Bancos de Dados Orientados a Objetos

Características

ExtensibilidadeTipos tradicionais: Inteiros, Reais, Strings, Data, etc.Predefinidos com operações sobre elesTipos criados pelo usuário: mesmas característicasAinda que apenas sob o ponto de vista do usuário

Page 143: Bancos de Dados Orientados a Objetos

Características

RelacionamentosNão há um elemento para representarA tecnologia aponta para variáveis de instânciaArmazenam OIDs de objetos relacionados

Page 144: Bancos de Dados Orientados a Objetos

Características

ExemploO objeto Automóvel possui, entre outras variáveis, a variável ProprietárioProprietário contém o(s) OID(s) do(s) dono(s) do automóvelIsso permite referenciar algo como:X = carro->proprietario->endereco

Page 145: Bancos de Dados Orientados a Objetos

Características

CríticaA variável fica misturada aos atributos “naturais”Parece com uma chave estrangeiraNão há uma especificação de que se trata de uma associaçãoDá a impressão de se tratar de uma relação Todo-Parte

Page 146: Bancos de Dados Orientados a Objetos

CaracterísticasProblemas as associações N para N

Caso muitos automóveis possam pertencer a um mesmo proprietário, e reciprocramente:Proprietário conterá uma variável Automóvel e Automóvel uma variável ProprietárioCaso o relacionamento tenha atributo ele deverá aparecer dos dois lados (data aquisição)

Page 147: Bancos de Dados Orientados a Objetos

Características

Integridade ReferencialA exclusão de um automóvel implica emNulidade da variável Automóvel em que este OID aparecia – como por hipótese na classe Proprietário

Page 148: Bancos de Dados Orientados a Objetos

Características

BDOO distribuídoÉ possível – a tecnologia de BDs distribuídos é perfeitamente compatível com BDOOExemplo: ORION-2

Page 149: Bancos de Dados Orientados a Objetos

Críticas

Porque se usa LPs Orientadas a Objeto e não se usa BDs Orientados a Objeto?CulturaPlataforma InstaladaPouca necessidade de ComponentesFaltas nos aspectos Técnicos

Page 150: Bancos de Dados Orientados a Objetos

Críticas

RelacionamentosNão são declarados explicitamenteUsa-se Atributos “Especiais”Relações 1-N e N-N: Referências Cruzadas• Atributos em objetos auxiliares ou em

ambos os lados

Page 151: Bancos de Dados Orientados a Objetos

Críticas

RelacionamentosLinguagens de Consulta não reconhecem Relacionamentos• SQL também não

Relacionamentos entre Classes = Relacionamentos entre Entidades• A única diferença: 1FN• Simlpifica p/ objetos complexos

Page 152: Bancos de Dados Orientados a Objetos

Críticas

Linguagens DDL e DMLArgumento dos defensores dos BDOO: “Com LPs e objetos persistentes é desnecessário aprender uma nova linguagem”Aprender novas linguagens hoje é muito fácil e rápido

Page 153: Bancos de Dados Orientados a Objetos

Críticas

Linguagens DDL e DMLLinguagens Algoritmicas: Retrocesso à 3a Geração• SQL: O que se quer• C++: Como se faz

Page 154: Bancos de Dados Orientados a Objetos

Críticas

PadronizaçãoAbsolutamente não háModelo de Dados: Uns tem Herança, Uns tem Polimorfismo, Uns tem Associação N-N, outros nãoMigração?

Page 155: Bancos de Dados Orientados a Objetos

Críticas

PadronizaçãoODMG (Object Database Management Group)Produtores de: GemStone, Orion, O2, ObjectStore, Objectivity, Poet, UniSQL e VersantTentativa de criar padrõesNova e incipiente

Page 156: Bancos de Dados Orientados a Objetos

Críticas

PadronizaçãoNormalmente os BDOO surgem voltados para aplicações específicasInteressante: Cactis - Aplicações CASE• Transações muito especiais

Page 157: Bancos de Dados Orientados a Objetos

Críticas

EncapsulamentoVioladoLinguagens de consulta derivadas de SQLAcesso direto ao atributoAlteração (UPDATE) direto no atributoBombardeada pelos críticos mais puristas

Page 158: Bancos de Dados Orientados a Objetos

Críticas

Encapsulamento“O fato de o encapsulamente ter que ser relaxado aponta para a inaplicabilidade da programação orientada a objetos em Bancos de Dados”Não seriam, portanto, propriamente Orientados a Objeto

Page 159: Bancos de Dados Orientados a Objetos

Críticas

FormalismoO modelo relacional é formalAssociações, Projeções, Junções: Rigorosamente demonstradosÁlgebra RelacionalE em BDOO?

Page 160: Bancos de Dados Orientados a Objetos

Críticas

FormalismoA Álgebra Relacional não se aplicaDois caminhos:Adaptação: Afronta a orientação a objetos (como no encapsulamento)Desenvolvimento de um novo formalismo: Pesquisa pura, com resultados incertos e a longo prazo

Page 161: Bancos de Dados Orientados a Objetos

PostGres

Desenvolvido na Universidade de BerkeleySucessor do INGRESAtualmente: Miro (Comercial)

Page 162: Bancos de Dados Orientados a Objetos

PostGres

Versão não comercial disponível no site da universidadeEscrito em C180.000 linhas de código

Page 163: Bancos de Dados Orientados a Objetos

PostGres

Relacional EstendidoObjetosOIDs “tradicionais”Objetos CompostosHerança MúltiplaVersões

Page 164: Bancos de Dados Orientados a Objetos

PostGres

Dados históricosLinguagem de consulta

PostQUEL – extensão da linguagem QUEL do INGRES

Page 165: Bancos de Dados Orientados a Objetos

PostGres

Dados históricos:Pode-se consultar sobre o estado do banco em um determinado momentoArmazena o estado do BD depois ded cada alteração

Page 166: Bancos de Dados Orientados a Objetos

PostGres

Modelo de dados baseado no relacionalADT (Abstract Data Type) – disponível para que se possa definir um novo tipo DatabaseTodos os demais são derivados deste

Page 167: Bancos de Dados Orientados a Objetos

PostGres

Fornece um OID para cada elemento da relação – “mapeando” tabelas em objetosComo criar classes e objetos?

Page 168: Bancos de Dados Orientados a Objetos

PostGres

O projeto:Pessoa

NomeIdadeEndereço

Casar(Pessoa)Separar()TerFilho(Nome)Aniversaria()Mudar(NovEnd)

Empresa

RazãoSocialEndereço

Contrata(Pessoa)Demite(Pessoa)

Trabalha em

Filho de

Casado com

Page 169: Bancos de Dados Orientados a Objetos

PostGres

Declaração:Create empresa (CNPJ char [15],

razaosocial = char[25],Endereço = char[30],Pessoas = postquel)

Key (CNPJ)

Page 170: Bancos de Dados Orientados a Objetos

PostGresDeclaração:Create pessoa ( RG (char[11],

nome = char[25],Idade = int,endereco = char [50],empregador = empresa,Filhode = pessoaCasadocom = pessoa)

Key (RG)

Page 171: Bancos de Dados Orientados a Objetos

PostGres

Herança

Create PrestServico (precohora = float)

Inrerits (pessoa)

Page 172: Bancos de Dados Orientados a Objetos

PostGres

Herança múltiplaCaso se ponha mais de uma classe no comando inheritsCaso haja conflito de nomes de atributos retorna um erro.

Page 173: Bancos de Dados Orientados a Objetos

PostGres

Tipos de dados PostQuelServem para executar um método que faz o acesso ao relacionamentoUma consulta feita em PostQuel

Page 174: Bancos de Dados Orientados a Objetos

PostGres

Key define um atributo como OIDPode haver mais de um atributoNenhum pode ser nulo e eles não irão se repetirImplementação idêntica à de chave primária do modelo relacional

Page 175: Bancos de Dados Orientados a Objetos

PostGres

Key define um atributo como OIDPode haver mais de um atributoNenhum pode ser nulo e eles não irão se repetirImplementação quase idêntica à de chave primária do modelo relacional

Page 176: Bancos de Dados Orientados a Objetos

PostGres

Onde está a diferença?Pode-se usar um tipo definido pelo usuárioPor exemplo, usar o par (empregador, matricula)Empregador é do tipo empresaComo comparar empresa?

Page 177: Bancos de Dados Orientados a Objetos

PostGres

Cria-se uma funçãoDefine function há_emp(e = empresa)Return int asRetrieve any(empresa.allWhere empresa.cnpj = e.cnpj

Key empregador using há_emp, matricula)

Page 178: Bancos de Dados Orientados a Objetos

PostGres

Manipulação de DadosPostQUEL contem os comandos append, replace e deleteAppend to pessoa (nome = ...)Delete pessoa where ...Replace pessoa (nome= ... ) where ...

Page 179: Bancos de Dados Orientados a Objetos

PostGres

Percurso do fecho transitivo de um esquemaCaracterística do postquel em extensão a quelMostrar todos os ancestrais de José

Page 180: Bancos de Dados Orientados a Objetos

PostGres

A consultaRetrieve * into classeresposta(pessoa.filhode) from a in classerespostaWhere pessoa.nome = “José”Or pessoa.nome = diznome(a.filhode))

* obriga que a consulta será executada até não retornar mais dados

Page 181: Bancos de Dados Orientados a Objetos

PostGres

A consultaRetrieve (e.nome) from e in pessoa*Where e.nome = “José”

* aqui obriga que a consulta seja executada em todas as subclasses da classe pessoa

Page 182: Bancos de Dados Orientados a Objetos

PostGres

A consultaRetrieve func.salarioFrom func[D]Where func.nome = “José”

Retorna o salário de José na data D

Page 183: Bancos de Dados Orientados a Objetos

PostGres

RegrasAção executada no banco sob ordem de determinado eventoOn evento to objeto where condiçãoThen do [instead]comandos

Page 184: Bancos de Dados Orientados a Objetos

PostGres

Evento pode serRetrieveReplaceDeleteAppendNew (replace ou append)Old (delete ou replace)

Page 185: Bancos de Dados Orientados a Objetos

PostGres

Objeto é o nome de uma classe, ou do atributo de uma classeCondição é um qualificador qualquer usado em PostQUELInstead indica que o comando deve substituir, e não acompanhar o evento que gerou a regra

Page 186: Bancos de Dados Orientados a Objetos

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)

Page 187: Bancos de Dados Orientados a Objetos

PostGres

Exemplo:O Salário de um funcionário no cargo de professor deve ser igual ao de JoséOn new funcionario.salario where

funcionario.cargo = “Professor”Then do replace new.salario = c.salarioFrom c in cargosWhere c.nome = “Professor”

Page 188: Bancos de Dados Orientados a Objetos

PostGres

CríticasMétodos implementados em funções – não nas classesNão implementa OIDs naturaisRelacionamentos se confundem com variáveis de instânciaPadrão proprietárioViola o encapsulamento

Page 189: Bancos de Dados Orientados a Objetos

PostGres

QualidadesHerança e Herança múltiplaVersões de dados ao longo do tempoCompleteza implementada em PostQuelAceita tipos definidos pelo usuárioÉ baratinho...

Page 190: Bancos de Dados Orientados a Objetos

PostGres.

FIM!

“Numa democracia, o direito de ser ouvido não inclui automaticamente o direito de ser levado a sério”

Hubert Humphrey