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ível
de
Abstração
Especificação
(Modelagem
Conceitual)
Modelo de
Objeto
Modelo de
Entidade e
Relacionamento
Implementação
(Modelagem
Lógica)
BD II
Modelo
ObjetoRelacional
BD I
Modelo
Relacional
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


Atributo Identidade (OID)



Uma instância identifica um objeto
Transparente e independente de aplicação
Associações entre objetos


Conjunto, Bag, Lista, Array
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
O atributo

Rua
OID é

Número
transparente

Bairro

Cep
Prefixo
Sufixo
Data_nasc
Historico_escolar

Conjunto Disciplinas_feitas
Referência_disciplina, período, media_final, status
Não há necessidade
de definir métodos
observer e mutator

Métodos





Relacionamentos com outras classes



CRE
Sufixo do CEP
Emissão do Histórico Escolar
...
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, 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)


Classes transitórias (abstratas)


Sem repositório
BD OO

Um conjunto de repositórios


Com repositório
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


BDOR
 Conjunto de Object(Typed) Tables e/ou conjunto de tabelas
puramente relacionais




Instanciáveis e/ou não-instanciáveis
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
UML /
ODL + OQL
(Padrão ODMG p/
BD OO)
Esq. Conceitual OO
Esq. Lógico R, OR
Esq. Físico
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
Exemplo
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 Relacional
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
);
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 );
Limitações da
Representação Relacional
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 .
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'
Limitações da
Representação Relacional
Exemplo
Obtenha o código e o preço das mercadorias pedidas pelo
cliente ‘Ronaldo Silva’ da cidade do ‘Rio de Janeiro’
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'
Exercício em Grupo

Para o esquema relacional anterior, pede-se:


1. Projete um esquema ODL
2. Resolva as duas consultas em OQL
Download

Unidade 2 – Conceitos e Terminologia