Post on 17-Apr-2015
Capítulo 2: Evolução dos Modelos de Dados e dos Sistemas de Gerenciamento de Banco de Dados
Banco de Dados IIBanco de Dados IIProf. Carlos Eduardo PiresProf. Carlos Eduardo Pires
cesp@dsc.ufcg.edu.brcesp@dsc.ufcg.edu.br
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 2
Agenda
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
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 3
Especificação
Implementação
I.1 Um Hiato entre Especificação e Implementação
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 4
Nível deAbstração
Especificação(ModelagemConceitual)
Implementação(Modelagem
Lógica)
ModeloRelacional
Modelo deEntidade e
Relacionamento BD I
Modelo deObjeto
ModeloObjeto-
Relacional
BD II
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 5
I.2 Especificação: Evolução dos Modelos Conceituais
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 6
Modelo de Entidade e Relacionamento
Idéia Básica: Entidade Atributos atômicos, compostos e multivalorados
(coleções) Relacionamentos entre entidades
Instâncias de Entidade Associações entre instâncias de entidade
Ponto Negativo Modelo Estático
Omisso quanto às operações com (instâncias) de entidades
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 7
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)
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 8
Classe de Objetos
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
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 9
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
Conjunto Disciplinas_feitas Referência_disciplina, período, media_final, status
O atributoOID étransparente
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 10
Exemplo de Classe de Objeto (cont.)
Classe Estudante Métodos
Calcula CRE Créditos Restantes Emissão do Histórico Escolar ...
Relacionamentos com outras classes Matriculado em Disciplina …
Repositório: Estudantes
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 11
Hierarquia de Classe
É possível declarar uma classe S como uma subclasse de outra classe C
S herda 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óprias 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
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 12
Tipos de 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()
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 13
Métodos
Assinatura de um método (ou interface)Compreende
Nome do método Parâmetros Tipo do valor de retorno (opcional) Comentários sobre a lógica do método
Corpo (Código)
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 14
Métodos
Sobrecarga (“Overloading”)Métodos de uma classe com o mesmo nome,
porém com pelo menos um argumento diferente
imprime_histórico_escolar ( ) Sem argumentos
imprime_histórico_escolar (formato: string)
Um argumento do tipo String
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 15
Métodos
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()
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 16
Banco de Dados Orientado a Objetos
Modelo Relacional Usado para modelar aplicações que lidam com
tarefas de gerenciamento de dados simples Itens dados são registros pequenos com campos
atômicos Limitado para aplicações complexas
Projetos de Engenharia (Computer-aided Design – CAD) Sistemas de Informações Geográficas (Geographical
Information Systems – GIS) Sistemas Cooperativos (Computer Supported Cooperative
Work – CSCW)
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 17
Banco de Dados Orientado a Objetos
Requisitos Impostos pelas Aplicações Complexas aos SGBD tradicionaisNecessidade de lidar com maior volume de
dadosManipulação de dados em formatos
complexosTratamento de esquemas evolutivos e
dinâmicosTransações longas
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 18
Banco de Dados Orientado a Objetos
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
Consultas sobre os repositórios Linguagem declarativa de consulta a objetos
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 19
BD OO: Exemplo de Esquema
Classes Estudante, Disciplina, Curso, …
Repositórios Pessoa (classe abstrata) Estudantes: João, Maria, José, … Disciplinas: BD I, BD II, … Cursos: Bacharelado em CC, …
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 20
Exemplos de SGBDOO
Caché http://www.intersystems.com/
DB4O http://www.db4o.com/ (código aberto)
Objectivity/DB http://www.objectivity.com/
Object Store http://www.progress.com/objectstore/index.ssp
Ozone http://www.ozone-db.org./frames/home/what.html (código aberto)
Versant Object Database http://www.versant.com/
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 21
Consórcio ODMG (Object Data Management Group)
Formado por vendedores e fabricantes de SGBDOO
Definir padrões (classes e outras construções) para acrescentar persistência a C++ e Java
Encerrou suas atividades em 2002 Nenhum padrão teve aceitação universal
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 22
Extensão C++ ODMG
Linguagem de Definição de Objeto (C++ ODL) Permite definir classes, interfaces e especificação de
tipos objeto
Linguagem de Manipulação de Objeto (C++ OML) Linguagem declarativa Usada para consultar e atualizar objetos no banco de
dados Sintaxe baseada em SQL
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 23
Linguagem de Definição de Objeto (C++ ODL)
Class Pessoa: Public Objeto_Persistente {
Public:
String nome;
String endereço;
};
Class Cliente: Public Pessoa {
Public:
Date membro_desde;
Int cliente_id;
Ref <Agência> origem_agência;
};
Class Agência: Public Objeto_Persistente {
Public:
String nome;
String endereço;
Int ativos;
};
Class Conta: Public Objeto_Persistente {
Private:
Int saldo;
Public:
Int número;
Int entrar_saldo();
Int atualizar_saldo(int delta);
};
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 24
Linguagem de Manipulação de Objeto (C++ OML)
Set <Paciente> resultado;
resultado = SELECT *
FROM c IN Cliente
WHERE c.nome = ‘Fulano’
Herança da Classe “Pessoa”
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 25
Modelo Objeto-Relacional
Extensão do Modelo Relacional tradicional Incorporação dos conceitos de OO Reutilização da tecnologia relacional e otimizações
existentes Suporte à SQL, gerência de transações, processamento e
otimização de consultas, etc.
Sistema de tipos mais rico Tipos de dados complexos
Manipulação de objetos pelo usuário Extensão da linguagem SQL
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 26
Modelo Objeto-Relacional
Resposta dos Bancos de Dados Relacionais à Orientação a Objetos
Incorpora novas funcionalidades e capacidade de modelagem para tratar dados complexos (objetos) sobre estruturas físicas relacionais (tabelas)
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 27
I.3 Implementação: Evolução dos Modelos Lógicos
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 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)
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 29
Modelo Relacional
Linguagem de Consulta Operações sobre tabelas
Padrão SQL Esquema e consulta
Pontos negativos Pobreza de tipos Não oferece encapsulamento (operações), pois
stored procedures são definidas como elementos do esquema
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 30
Modelo Objeto-Relacional (OR)
Tipos nativos INTEGER REAL DATE STRING COLEÇÃO
ARRAY (padrão SQL99) Oracle 11g
VARRAY NESTED TABLE
APONTADOR (REFerence)
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 31
Modelo Objeto-Relacional (OR)
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
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 32
Banco de Dados Objeto-Relacional (BDOR)
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
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 33
BDOR – Classificação de Stonebraker
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 34
BDOR – Classificação de Stonebraker
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 35
BDOR – Classificação de Stonebraker
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 36
BDOR – Classificação de Stonebraker
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 37
BDOR – Classificação de Stonebraker
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 38
BDOR – Classificação de Stonebraker
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 39
BDR x BDOO x BDOR
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 40
I.4 Projeto de Banco de Dados
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 41
Projeto de Banco de Dados
Requisitos
Esq. Conceitual OO
Esq. Lógico R, OR
Esq. Físico
UML /SQL Estendida
SGBDOR
Oracle 11g; PostgreSQL; DB2 ...
DER /SQL SGBDR
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 42
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 comuns 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
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 43
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
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 44
Esquema UML
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 45
Representação Relacional
CREATE TABLE CLIENTE_REL ( CODCLI NUMBER(15) NOT NULL, 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, PRIMARY KEY (CODCLI));
CREATE TABLE CLIENTE_VIP ( CODCLI NUMBER(15) NOT NULL, PONTOS_BONIFICACAO INTEGER NULL, DESCONTO_PADRAO NUMBER(5,2) NULL, PRIMARY KEY (CODCLI), FOREIGN KEY (CODCLI) REFERENCES CLIENTE_REL);
CREATE TABLE CLIENTE_ESPECIAL ( DESCONTO_PADRAO NUMBER(5,2) NULL, CODCLI NUMBER(15) NOT NULL, PRIMARY KEY (CODCLI), FOREIGN KEY (CODCLI) REFERENCES CLIENTE_REL);
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 46
Representação RelacionalCREATE TABLE PEDIDO_REL ( CODPED NUMBER(20) NOT NULL, DATA_PEDIDO DATE NULL, DATA_ENTREGA DATE NULL, RUA VARCHAR2(100) NULL, CIDADE VARCHAR2(100) NULL, ESTADO CHAR(2) NULL, CEP CHAR(10) NULL, CODCLI NUMBER(15) NOT NULL, PRIMARY KEY (CODPED), FOREIGN KEY (CODCLI)
REFERENCES CLIENTE_REL );
CREATE TABLE MERCADORIA_REL (
CODMER NUMBER(15) NOT NULL,
PRECO NUMBER(15,2) NULL,
ICMS NUMBER(5,2) NULL,
PRIMARY KEY (CODMER)
);
Capítulo 2: A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados 47
Limitações da Representação Relacional
SELECT DISTINCT C.NOME, C.RUA, C.CIDADE, C.ESTADO, C.CEP, M.CODMER, M.PRECO
FROM PEDIDO P, CLIENTE C,
ITEM_PEDIDO I, MERCADORIA M
WHERE C.CODCLI = P.CODCLI
AND P.CODPED = I.CODPED
AND I.CODMER = M.CODMER
AND P.DATA_ENTREGA = ’10/08/2004'
Para todos os pedidos com data de entrega igual 10/08/2004, obtenha o nome e endereço do cliente, código e preço das mercadorias pedidas