540 likes | 689 Views
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
E N D
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 • I.4 Projeto de Aplicações de Banco de Dados
Especificação Implementação
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
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
Pontos Negativos • Modelo estático
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)
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
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
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
Multiplicidades de Relacionamento • 1:1 • 1:N • M:N
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
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
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()
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)
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
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()
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
Agregação/Composição de Classes • Brinquedo é-parte-de Catálogo • UML Catálogo * * Brinquedo
Agregação/Composição de Classes • Departamento é-parte-estrita-de Centro • UML Centro * Depto
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?
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
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
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, …
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
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
Pontos negativos • Pobreza de tipos • Não oferece encapsulamento (operações), pois stored procedures são definidas como elementos do esquema.
Modelo Objeto-Relacional (OR) • Tipos nativos • INTEGER • REAL • DATE • STRING • COLEÇÃO • ARRAY (padrão SQL99) • Oracle 11g • VARRAY • NESTED TABLE • APONTADOR (REFERENCE)
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
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
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
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.
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.
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) );
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 );
Exemplo Representação Relacional CREATETABLE MERCADORIA_REL ( CODMER NUMBER(15)NOTNULL, PRECO NUMBER(15,2)NULL, ICMS NUMBER(5,2)NULL, PRIMARYKEY(CODMER) );
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 );
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 );