I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
-
Upload
lorenzo-castro-cordeiro -
Category
Documents
-
view
218 -
download
0
Transcript of I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
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
I.1 Um Hiato entre Especificação e Implementação
Especificação
Implementação
Nívelde
AbstraçãoEspecificação(ModelagemConceitual)
Implementação(Modelagem
Lógica)
Modelo deEntidade e
Relacionamento
Modelo deObjeto
ModeloRelacional
ModeloObjeto-
Relacional
BD I
BD II
I.2 Especificação: Evolução dos Modelos Conceituais
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
Conjunto Disciplinas_feitas Referência_disciplina, período, media_final, status
O atributoOID étransparente
Métodos
CRE Sufixo do CEP Emissão do Histórico Escolar ...
Relacionamentos com outras classes Matriculado em Disciplina …
Repositório: Estudantes
Não há necessidadede definir métodosobserver e mutator
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, 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ó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, …
I.3 Implementação: Evolução dos Modelos Lógicos
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
BDOR – Classificação de Stonebraker
BDOR – Classificação de Stonebraker
BDOR – Classificação de Stonebraker
BDOR – Classificação de Stonebraker
BDOR – Classificação de Stonebraker
BDOR – Classificação de Stonebraker
BDR x BDOO x BDOR
I.4 Projeto de Banco de Dados
Requisitos
Esq. Conceitual OO
Esq. Lógico R, OR
Esq. Físico
UML /ODL + OQL
(Padrão ODMG p/BD OO)
Oracle 11g; Postgresql; DB2 ...
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.
Esquema UML
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));
Exemplo
Representação RelacionalCREATE 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);
Exemplo
Representação Relacional
CREATE TABLE MERCADORIA_REL ( CODMER NUMBER(15) NOT NULL, PRECO NUMBER(15,2) NULL, ICMS NUMBER(5,2) NULL, PRIMARY KEY (CODMER));
Exemplo
Representação Relacional
CREATE 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 );
Exemplo
Representação Relacional
CREATE 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 );
Exemplo
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'
Exemplo
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 .
Limitações da Representação Relacional
SELECT DISTINCT M.CODMER, M.PRECO FROM CLIENTE C, PEDIDO P, ITEM_PEDIDO I, MERCADORIA M WHERE C.CODCLI = P.CODCLI AND P.CODPED = I.CODPED AND I.CODMER = M.CODMER AND C.NOME = 'Ronaldo Silva' AND C.CIDADE = 'Rio de Janeiro'
Exemplo
Obtenha o código e o preço das mercadorias pedidas pelo cliente ‘Ronaldo Silva’ da cidade do ‘Rio de Janeiro’
Exercício em Grupo
Para o esquema relacional anterior, pede-se: 1. Projete um esquema ODL 2. Resolva as duas consultas em OQL