1 / 53

I- Introdução

I- Introdução. A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados. Sumário. I.1 Um Hiato entre Especificação e Implementação I.2 Especificação: Evolução dos Modelos Conceituais I.3 Implementação: Evolução dos Modelos Lógicos

beryl
Télécharger la présentation

I- Introdução

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. I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados

  2. Sumário • I.1 Um Hiato entre Especificação e Implementação • I.2 Especificação: Evolução dos Modelos Conceituais • I.3 Implementação: Evolução dos Modelos Lógicos • I.4 Projeto de Aplicações de Banco de Dados

  3. I.1 Um Hiato entre Especificação e Implementação

  4. Especificação Implementação

  5. Nível de Abstração Especificação (Modelagem Conceitual) Implementação (Modelagem Lógica) BD II Modelo de Objeto Modelo Objeto- Relacional Modelo de Entidade e Relacionamento BD I Modelo Relacional

  6. I.2 Especificação: Evolução dos Modelos Conceituais

  7. Modelo de Entidade e Relacionamento • Idéia Básica: Entidade • Atributos atômicos, compostos e multi-valorados (coleções) • Relacionamentos entre entidades • Instâncias de Entidade • Associações entre instâncias de entidade • Modelo Estático • Omisso quanto às operações com (instâncias) de entidades

  8. Pontos Negativos • Modelo estático

  9. Elementos de um Modelo de Objeto • Idéia Básica: Objeto • Atributos complexos ou estruturados • Atributos coleção • Conjunto, Bag, Lista, Array • Atributo Identidade (OID) • Uma instância identifica um objeto • Transparente e independente de aplicação • Associações entre objetos • Se um objeto A está associado a um objeto B, então A deve fazer referência ou apontar para B, ou A contém o OID de B, e/ou vice-versa • Operações (Métodos)

  10. Classe de objeto • Atributos e associações comuns a um conjunto de objetos • Atributo(s) chave • Relacionamentos entre classes de objeto • Exprimem as associações entre objetos • Classe persistente • Repositório de objetos da classe

  11. Exemplo de classe de objeto • Classe Estudante • Atributos • Matrícula << chave>> • Nome • Endereço • Rua • Número • Bairro • Cep Prefixo Sufixo • Data_nasc • Historico_escolar • ConjuntoDisciplinas_feitas Referência_disciplina, período, media_final, status O atributo OID é transparente

  12. Não há necessidade de definir métodos observer e mutator • Métodos • CRE • Sufixo do CEP • Emissão do Histórico Escolar • ... • Relacionamentos com outras classes • Matriculado em Disciplina • … • Repositório: Estudantes

  13. Multiplicidades de Relacionamento • 1:1 • 1:N • M:N

  14. Hierarquia de Classe • É possível declarar uma classe S como uma subclasse de outra classe C. Neste caso, Sherda todas as propriedades da classe C, isto é, os atributos, os métodos, e os relacionamentos de C

  15. S pode ter seus próprios atributos, suas próprios operações, seus próprios relacionamentos e seu próprio repositório (S é uma extensão de C) • Exemplo: a classe Estudante é uma subclasse de Pessoa • Relacionamento Subclasse é_um(a) (Sub)Classe • Multiplicidade 1:1

  16. Métodos • Métodos de Instância • Aplicáveis a um único objeto • Exemplo: est.disciplinas_em_curso(), aplicável a um objeto da classe Estudante (est é um objeto da classe Estudante) • Parâmetro de entrada implícito: objeto self ou this • Métodos de Classe • Não podem fazer referência a objeto self ou this • Exemplo: Estudante.número_estudantes()

  17. Assinatura (Interface) • Uma assinatura de um método (ou interface) compreende: • O nome • Os parâmetros • O tipo do valor de retorno (opcional) • Comentários sobre a lógica do método • Corpo (Código)

  18. Sobrecarga (“Overloading”) • Métodos de uma classe com o mesmo nome, porém com pelo menos um argumento diferente • imprime_histórico_escolar ( ) • imprime_histórico_escolar (formato: string) • Vantagem: Coesão

  19. Polimorfismo • Dois métodos, de classes diferentes, são polimorfos se têm a mesma assinatura • O conceito de polimorfismo é extremamente útil em hierarquias de classes, mas não é restrito a elas • Aluno_especial é_um Aluno • Aluno_especial.histórico_escolar() • Aluno.histórico_escolar()

  20. Agregação/Composição de Classes • Relacionamentos especiais É_PARTE_DE • Agregação • Compartilhamento • Exemplo: um objeto da classe Brinquedo é parte de vários objetos da classe Catálogo • Composição • Não compartilhamento • Exemplo: um objeto da classe Departamento é parte de um único objeto da classe Centro • Dependência existencial

  21. Agregação/Composição de Classes • Brinquedo é-parte-de Catálogo • UML Catálogo * * Brinquedo

  22. Agregação/Composição de Classes • Departamento é-parte-estrita-de Centro • UML Centro * Depto

  23. Uma linguagem de consulta a objetos • Estilo SQL! • Exercite-se (mire-se no exemplo de motivação) • Qual o histórico escolar do estudante com matrícula 1234? • Qual o CRE do estudante 1234? • Quais as disciplinas em que o estudante 1234 está matriculado?

  24. BD OO e UML • Pergunta: o que falta à linguagem UML para ela se tornar um completo padrão de BDOO? • Linguagem de consulta a objetos • Descrição textual completa de classes

  25. Banco de Dados Orientado a Objeto (BD OO) • Esquema Orientado a Objeto (Esquema OO) • Um conjunto de classes persistentes e transitórias, segundo um modelo de esquema OO • Classes persistentes (concretas) • Com repositório • Classes transitórias (abstratas) • Sem repositório • BD OO • Um conjunto de repositórios • Pelo menos um não é vazio • Consultas sobre os repositórios • Linguagem declarativa de consulta a objetos • Apropriada ao modelo de esquema

  26. BD OO: Exemplo de Esquema • Classes • Estudante, Disciplina, Curso, … • Repositórios • Estudantes: João, Maria, José, … • Disciplinas: BD I, BD II, … • Cursos: Bacharelado em CC, …

  27. I.3 Implementação: Evolução dos Modelos Lógicos

  28. Modelo Relacional • Tipos nativos • INTEGER • REAL • DATE • STRING • Esquema de Banco de Dados Relacional (BDR) • Conjunto de tabelas • Regras de integridade (consistência do conteúdo das tabelas) • BDR • Linhas de tabela • Pelo menos uma linha não vazia

  29. Linguagem de consulta • Operações sobre tabelas • Padrão SQL: esquema e consulta • Regras de transformação de esquemas de BDOO em esquemas de BDR • SGBDR: implementa BDRs

  30. Pontos negativos • Pobreza de tipos • Não oferece encapsulamento (operações), pois stored procedures são definidas como elementos do esquema.

  31. Modelo Objeto-Relacional (OR) • Tipos nativos • INTEGER • REAL • DATE • STRING • COLEÇÃO • ARRAY (padrão SQL99) • Oracle 11g • VARRAY • NESTED TABLE • APONTADOR (REFERENCE)

  32. Tipos Definidos pelo Usuário (Extensibilidade) • Tipos de Objeto • Atributos stricto sensu • Atributos apontadores, ou referências • Métodos • Funções • Procedures • Hierarquias de tipos de objeto • Repositórios de tipos de objeto • Typed Table (SQL99, IBM) • Object Table (Oracle) • Linguagem de consulta SQLOR • Extensão-objeto da linguagem SQL

  33. Banco de Dados Objeto-Relacional (BD OR) • Esquema de BDOR • Conjunto de tipos persistentes de objeto • Instanciáveis e/ou não-instanciáveis • BDOR • Conjunto de Object(Typed) Tables e/ou conjunto de tabelas puramente relacionais • Um BDOR estende stricto sensu um BDR • Linguagem SQLOR • Operações sobre objetos de object(typed) table e/ou sobre linhas de tabela relacional • Regras de transformação de esquemas de BDOO em esquemas de BDOR • SGBDOR: implementa BDORs

  34. BDOR – Classificação de Stonebraker

  35. BDOR – Classificação de Stonebraker

  36. BDOR – Classificação de Stonebraker

  37. BDOR – Classificação de Stonebraker

  38. BDOR – Classificação de Stonebraker

  39. BDOR – Classificação de Stonebraker

  40. BDR x BDOO x BDOR

  41. I.4 Projeto de Banco de Dados

  42. Requisitos UML / ODL + OQL (Padrão ODMG p/ BD OO) Esq. Conceitual OO Esq. Lógico R, OR Oracle 11g; Postgresql; DB2 ... Esq. Físico

  43. Exemplo • Descrição dos atributos que caracterizam as entidades: • Clientes comuns têm um código, nome, endereço (rua, cidade, estado, cep) e telefones de contato. Clientes Especiais têm todos os atributos de clientes comuns e um campo de desconto padrão. Clientes VIP têm todos os atributos de clientes Especiais e um campo de pontos de bonificação no programa de incentivo. • Mercadorias têm um código, preço e valor de Icms cobrado.

  44. Exemplo • Descrição dos atributos que caracterizam as entidades: • Pedidos têm um código, a data do pedido, a data de entrega, o endereço de entrega (rua, cidade, estado, cep), o cliente e a lista de itens. • Cada item da lista de itens tem um número único, a mercadoria correspondente, a quantidade pedida e o desconto individual obtido.

  45. Esquema UML

  46. Exemplo Representação Relacional CREATETABLE CLIENTE_REL ( CODCLI NUMBER(15)NOTNULL, NOME VARCHAR2(100)NULL, RUA VARCHAR2(100)NULL, CIDADE VARCHAR2(100)NULL, ESTADO CHAR(2)NULL, CEP CHAR(10)NULL, FONE1 VARCHAR2(20)NULL, FONE2 VARCHAR2(20)NULL, FONE3 VARCHAR2(20)NULL, PRIMARYKEY(CODCLI) );

  47. Exemplo Representação Relacional CREATETABLE CLIENTE_VIP ( CODCLI NUMBER(15)NOTNULL, PONTOS_BONIFICACAO INTEGERNULL, DESCONTO_PADRAO NUMBER(5,2)NULL, PRIMARYKEY(CODCLI), FOREIGNKEY(CODCLI) REFERENCES CLIENTE_REL ); CREATETABLE CLIENTE_ESPECIAL ( DESCONTO_PADRAO NUMBER(5,2)NULL, CODCLI NUMBER(15)NOTNULL, PRIMARYKEY(CODCLI), FOREIGNKEY(CODCLI) REFERENCES CLIENTE_REL );

  48. Exemplo Representação Relacional CREATETABLE MERCADORIA_REL ( CODMER NUMBER(15)NOTNULL, PRECO NUMBER(15,2)NULL, ICMS NUMBER(5,2)NULL, PRIMARYKEY(CODMER) );

  49. Exemplo Representação Relacional CREATETABLE PEDIDO_REL ( CODPED NUMBER(20)NOTNULL, DATA_PEDIDO DATENULL, DATA_ENTREGA DATENULL, RUA VARCHAR2(100)NULL, CIDADE VARCHAR2(100)NULL, ESTADO CHAR(2)NULL, CEP CHAR(10)NULL, CODCLI NUMBER(15)NOTNULL, PRIMARYKEY(CODPED), FOREIGNKEY(CODCLI) REFERENCES CLIENTE_REL );

  50. Exemplo Representação Relacional CREATETABLE PEDIDO_REL ( CODPED NUMBER(20)NOTNULL, DATA_PEDIDO DATENULL, DATA_ENTREGA DATENULL, RUA VARCHAR2(100)NULL, CIDADE VARCHAR2(100)NULL, ESTADO CHAR(2)NULL, CEP CHAR(10)NULL, CODCLI NUMBER(15)NOTNULL, PRIMARYKEY(CODPED), FOREIGNKEY(CODCLI) REFERENCES CLIENTE_REL );

More Related