Você está na página 1de 28

..............................................

2017

Projeto de BD:
Introdução

Marina Tereza Pires Vieira


UFScar
2017
..............................................

Projeto de BD:
Introdução

Sergio Ricardo Borges Junior


ensinalegal@gmail.com

Fevereiro - 2017
-1-
..............................................

1. Introdução

Sistemas de banco de dados são amplamente utilizados em aplicações


em diversas áreas do conhecimento humano, desde aplicações
simples, como controle de estoque, até em aplicações que utilizam
dados semiestruturados, como aplicações que manipulam XML e busca
intercâmbio de informações.
Um banco de dados é uma coleção de dados relacionados, que
são estruturados seguindo um modelo de dados. Um modelo de dados
consiste em um conjunto de conceitos que são utilizados para
descrever a estrutura de um banco de dados. Um dos modelos mais
utilizados comercialmente é Modelo Relacional, que organiza dos dados
em relações.
Informalmente, uma relação se parece com uma tabela de
valores, pois é composta por um conjunto de tuplas (linhas), que
representam fatos sobre uma entidade do mundo real. Uma tupla é uma
lista ordenada de n valores, denominados atributos.
As relações possuem ligações (relacionamentos) com outras
relações, como pode ser observado na Figura 1, na qual apresenta a
uma relação Funcionários com um identificador (Departamento_id) da
relação Departamentos.

Departamento_id Nome
10 TI
20 RH
30 Vendas

Funcionario_id Nome Departamento_id


01 Sergio 20
02 Ricardo 10
03 Patrícia 30
04 Lupércio 10

Figura 1 – Relações
-2-
..............................................

Um SGBD consiste em um conjunto de programas que permite


o armazenamento e a recuperação de informações mantidas em banco
de dados. Um SGBD que permite o gerenciamento de um banco de
dados que utiliza o modelo relacional é denominado de sistema
gerenciador de banco de dados relacional (SGBDR).
Os primeiros SGBDRs surgiram no início da década de 80 com
objetivo de separar o armazenamento físico dos dados de sua
representação conceitual e prover uma fundamentação matemática
para banco de dados. Além disso, os SGBDRs também introduziram as
linguagens de consultas de alto nível, que são alternativas às interfaces
de linguagem de programação. Dentre elas, destaca-se a linguagem de
consulta estruturada (SQL - Structured Query Language).
Com o desenvolvimento de novas técnicas de armazenamento
e indexação, e com o processamento de consultas aprimorado, os
SGBDRs se tornaram dominantes para aplicações tradicionais de banco
de dados.
Atualmente, a maioria das aplicações convencionais utiliza os
SGBDRs e o modelo relacional para manterem seus dados e
informações armazenados.
As aplicações convencionais são aquelas que manipulam dados
que possuem uma relação de ordem, ou seja, os valores podem ser
ordenados. Por exemplo, salário, idade, nome, entre outros.
A seguir são apresentadas algumas aplicações de banco de
dados e, em seguida, as etapas de um projeto de banco de dados.
-3-
..............................................

1.1 Banco de Dados Comerciais


O SGBDRs são utilizados em grande escala em aplicações comerciais
voltadas para resolução de problemas organizacionais, tais como:
sistemas de apoio à decisão, sistemas integrados de gestão e sistemas
operacionais.
Os SGBDRs foram adotados pelas organizações por possuírem
funcionalidades adequadas às necessidades de armazenamento e
recuperação de dados empresariais.
Em síntese, os dados são resultados de transações em
operações de compra e venda, produção, marketing, contabilidade,
entre outras, cuja representação no modelo relacional é completa. Além
disso, SGBDRs apresentam linguagem de consulta para manipulação
de dados e alguns ferramentas de desenvolvimentos de aplicações.
Em aplicações que envolvem dados empresariais, os principais
objetos que são criados no banco de dados são: tabelas, funções,
visões (exibições), procedimento armazenados, entre outros.

1.2 Banco de Dados para Web


Na década de 90, com o surgimento da Internet e da Word Wide Web
(Web), as informações mantidas em banco de dados relacionais
puderam ser fornecidas na Internet por meio de páginas Web.
As informações são solicitadas a um computador servidor, que
pode ser também o servidor de banco de dados e o servidor de
aplicação. As informações solicitadas são consultadas em um ou mais
banco de dados e enviadas ao cliente em forma de páginas dinâmicas,
ou seja, páginas que contêm informações que foram consultas no
banco de dados (Figura 2). Por exemplo, o cliente de uma instituição
financeira pode solicitar seu extrato bancário em uma aplicação Web.
Essa aplicação buscará os dados referentes à conta no banco de dados
-4-
..............................................

na instituição, e seguida, apresentará em forma de páginas Web no


browser do cliente do banco.

Internet
Cliente

SGBD

Servidor

SBD

Banco de
Dados

Figura 2 – Arquitetura Web Simplificada.

Atualmente, é muito difícil que uma aplicação Web e aplicações


móveis não acessem informações em bancos de dados mantidos em
servidores e disponibilizadas via página dinâmicas, que foram
codificadas em linguagens de programação, tais como Java, PHP, C#,
entre outras.
-5-
..............................................

1.3 Aplicações não Convencionais


O sucesso de SGBDRs em aplicações comerciais proporcionou um
encorajamento aos desenvolvedores de outras aplicações a utilizá-los.
Entretanto, o modelo relacional adota pelos SGBDRs não era adequado
para muitas dessas aplicações, denominadas de aplicações não
convencionais, por uma ou mais das seguintes razoes:
 Ausência de estruturas de dados complexas que não
permitiam uma relação de ordem (ordenação);
 Novos tipos de dados eram imprescindíveis para o
armazenamento dos dados.
 Novas operações de linguagem de consulta eram
necessárias.

As necessidades apresentadas acima direcionaram os


desenvolvedores de SGBD a adicionar novas funcionalidades aos
sistemas, seja com o propósito geral, como os bancos de dados objeto-
relacionais, ou por meio de módulos, tais como: módulo para dados de
séries temporais (banco de dados temporal), geográficos (banco de
dados espaciais), manipulação de dados semiestruturados (banco de
dados XML). Algumas dessas funcionalidades são apresentadas, de
forma breve, a seguir.

1.3.1 Banco de Dados Objeto-Relacional


Os bancos de dados objeto-relacional incorporam algumas
características dos bancos de dados orientados a objetos, que
permitiram o armazenamento e representação de dados complexos. Por
exemplo, considere a Figura 3 que apresenta informações sobre os
clientes de uma organização.
-6-
..............................................

Clientes
Endereço
CPF Nome Descrição Cidade UF Fones
111.111.111-11 Sérgio Borges Rua x, 10 SRBJ SP 3333-3333
4444-4444
222.222.222-11 Patrícia Borges Rua y, 20 SRBJ SP 2222-2222
555.555.555-55 Lupércio Rua z, 05 SRBJ SP 3333-3333
Figura 3 – Dados de clientes.

A coluna endereço possui informações compostas (descrição,


cidade e estado). A coluna fones possui informações multivaloradas
(mais de um valor). Essa representação não é possível em um banco
de dados relacional. Entretanto, novos tipos e operações, tais como:
construtores de tipos, tipo array, mecanismos de herança, tabela
aninhada, permitem tal representação em banco de dados objeto-
relacional. A Figura 4 apresenta um exemplo de codificação de herança
de tipo e a Figura 5 um exemplo de codificação com o tipo Array.

Herança de Tipos

CREATE TYPE T_PESSOA AS OBJECT


(
NOME VARCHAR2(50),
TELEFONE T_TELEFONE,
DATA DATE
);

CREATE TYPE T_ALUNO UNDER T_PESSOA


(
MATRICULA INTEGER
) FINAL; -- não permite subtipos.

Figura 4 – Codificação de Herança de Tipo.


-7-
..............................................

Tipo Array

CREATE TYPE T_TELEFONE AS VARRAY(3) OF VARCHAR2(12);

CREATE TYPE T_CONTATO AS OBJECT


(
NOME VARCHAR2(50),
FONES T_TELEFONES
);

CREATE TABLE CONTATOS OF T_CONTATO;

--INSERT:
INSERT INTO CONTATOS VALUES
(‘SERGO’, T_TELEFONE(‘3333-3333’,’4444-4444’));

--SELECT:
SELECT NOME, T.* FROM CONTATOS, TABLE(C.FONES) T;

Figura 5 – Codificação com Array.

Cabe lembrar as estruturas apresentas não são suportadas


pelos SGBDR.

1.3.2 Banco de Dados Temporais


Os bancos de dados que armazenam informações sobre estados do
mundo real com o passar do tempo são chamados de banco de dados
temporal.
Em aplicações de banco de dados temporal o tempo é
considerado uma sucessão ordenada de ponto, com alguma
granularidade (ano, mês, dia, hora, minuto, segundo, etc.), ou seja,
considera a evolução de um dado no tempo.
-8-
..............................................

Uma relação temporal armazena um tempo associado quando


ela é verdadeira. O tempo pode ser um tempo válido ou tempo de
transação. O tempo válido é aquele associado ao tempo no mundo real,
seja um intervalo de tempo ou apenas um ponto no tempo (por
exemplo, uma data). O tempo de transação é o tempo que é registrado
no momento de uma transação no banco de dados.
Para registrar o tempo em relações temporais alguns tipos de
dados temporais são utilizados, tais como: date, timestamp, time,
interval (duração de tempo relativa) period (duração fixa de tempo, que
possui data inicial e final).
Para a recuperação de dados temporais linguagens de consulta
temporal são utilizadas. Dessa forma, uma seleção temporal é aquela
que envolve os atributos de tempo.

1.3.3 Banco de Dados Espaciais


Os bancos de dados espaciais fornecem conceitos para banco de
dados que rastreiam objetos em um espaço multidimensional.
As extensões básicas necessárias incluem conceitos
geográficos bidimensionais, como pontos, linhas, polígonos, etc., para
especificar características espaciais dos objetos. Além disso, são
necessárias operações de espaço, como por exemplo, computar a
distância entre dois objetos.
As consultas mais comumente realizadas são:

 Consultas de proximidade: solicitam objetos que estejam


próximos um dos outros.
-9-
..............................................

 Consulta do vizinho mais próximo: solicitação de objetos


que estejam próximo de um ponto específico.

 Consultas por região: solicitam objetos que estejam parcial


ou totalmente em uma região especifica. Por exemplo, uma
solicitação para encontrar todos os hotéis em uma
determinada cidade.

 Junções ou sobreposições espaciais: une objetos espaciais


que se cruzem ou se sobrepõem espacialmente. Por
exemplo, encontrar todas as cidades que uma determinada
rodovia atravessa.

1.3.4 Banco de Dados XML


Alguns SGBDR estendidos possuem suporte a documentos XML para
possibilitarem que aplicações realizam intercâmbio de dados
convencional. Os SGBDR que possuem extensões para manipulação
de dados XML devem permitir:

 Métodos de acesso a dados XML pelo programa de


aplicação.
 Projeto de estrutura dos dados XML.
 Facilidades para armazenamento e manipulação de dados
XML persistentes.
- 10 -
..............................................

A Figura 6 apresenta um exemplo de manipulação de dados


XML em um SGBDR.

Figura 6 – Exemplo de Manipulação de XML em SGBDR.

Na parte (A) foi realizada um consulta na tabela de produtos,


cujo resultado foi gerado em XML e apresentado na parte (B).
A seguir serão discutidas as etapas de um projeto de banco de
dados, que é o foco do presente trabalho.
- 11 -
..............................................

2. Introdução ao Projeto de Banco de Dados


Um projeto de banco de dados envolve o desenvolvimento de algumas
etapas, que os projetistas devem seguir para elaboração adequada e
com qualidade de um projeto. Cada etapa possui um objetivo específico
e gera um resultado (artefato) que será utilizado pela etapa seguinte.
Para demonstrar um resumo de um projeto de banco de dados,
considere a Figura 7.

Mundo Real

Modelo
Conceitual

Esquema Conceitual

Modelo
Lógico

Esquema Lógico

Modelo
Físico

Esquema Físico

BD

Figura 7 – Etapas de um Projeto de Banco de Dados

O projeto conceitual inicia a partir das especificações e


abstrações do mundo real e resulta no esquema conceitual de banco de
dados. Dessa forma, dada uma coleção de requisitos de dados, o
projetista de banco de dados tem o papel de criar um esquema
conceitual que satisfaça os requisitos.
- 12 -
..............................................

Um esquema conceitual é uma descrição em alto nível


(geralmente gráfica em forma de diagrama) da estrutura do banco de
dados e, independente do SGBD adotado para codificação. Dessa
forma, o esquema conceitual é elaborado sem considerar o SGBD a ser
utilizado para a criação do banco de dados. Entretanto, o modelo
gerado deve representar adequadamente e o mais fiel possível o
mundo real e as regras de negócio da organização.
Para elaboração do modelo conceitual é possível utilizar várias
estratégias, mas maioria delas segue uma abordagem incremental, na
qual se inicia com um modelo derivado dos requisitos de dados e regras
de negócio a partir do mundo real e, sucessivamente, aplicam-se
modificações, refinamentos ou novas abstrações, até se obter o
esquema conceitual final.
Um modelo conceitual pode sofrer alterações depois de
finalizado, uma vez que os sistemas estão em constante evolução e
novas abstrações devem ser representadas. Assim, é possível obter
uma versão do modelo conceitual e, à medida que novos requisitos de
dados são representados, novas versões são elaboradas. Dessa forma,
os projetistas de banco de dados devem ser cuidadosos para manter
um controle de versão organizado e documentado adequadamente.
Cabe ressaltar que cada alteração no esquema conceitual tem impacto
em todas as demais fases do projeto de banco de dados e,
consequentemente, na criação final do banco de dados.
- 13 -
..............................................

Em geral, o modelo conceitual é representado em forma gráfica


por meio de um diagrama que contemple os requisitos de dados em
questão. Esse diagrama pode ser elaborado por diversas maneiras que
são chamadas de notações. Cada autor pode elaborar sua notação,
porém já existem algumas notações que são muito utilizadas pelos
projetistas de banco de dados, dentre elas, destaca-se o Diagrama de
Entidade e Relacionamento (DER) que foi criado por Peter Chen em
1976 e, considerado até os dias de hoje, como o principal modelo
diagramático para concepção do modelo conceitual.
O modelo lógico, que é a segunda etapa do projeto de banco de
dados, consiste em realizar um mapeamento do modelo conceitual para
o modelo de dados adotado. O modelo de dados representa a forma
pela qual os dados serão organizados e mantidos no banco de dados,
ou seja, a elaboração do modelo lógico permite definir como os dados
serão estruturados.
O artefato resultado do modelo lógico é um esquema lógico,
que é elaborado com base em um modelo de dados e descreve a
estrutura do banco de dados que pode ser processada por um SGBD.
Os modelos lógicos mais utilizados pertencem a três categorias:
relacional, redes e hierárquico, sendo amplamente utilizado o modelo
relacional.
Cabe destacar que o modelo lógico depende do modelo de
dados escolhido, mais não do SGBD a ser utilizado. Muitas vezes a
escolha do SGBD é feita muito antes do projeto ter iniciado, na fase de
definição do projeto. Quando o modelo de dados escolhido é o modelo
relacional, no mapeamento do esquema conceitual para o esquema
lógico, um novo diagrama é elaborado, denominado Diagrama de
Estrutura de Dados (DED). Esse diagrama representa os dados
segundo o modelo relacional e pode ser elaborado por uma ferramenta
- 14 -
..............................................

computacional disponibilizada, em muitos casos, junto com o SGBD,


como é o caso do Oracle (SQL Developer Data Modeler), SQL Server
(MS SQL Server Management Studio) e Mysql (MySQL Workbench).
Durante a elaboração do modelo lógico os projetistas também
podem realizar um processo de normalização de dados, que permite
verificar se o modelo lógico satisfaz algumas regras, que também são
chamadas de formas normais. As formas normais permite reduzir
redundâncias e inconsistências.
Cabe ressaltar que um projeto de banco de dados que será
colocado em produção pode não contemplar fielmente as formas
normas, pois o projetista pode desconsiderar alguma regra para
priorizar a melhora de desempenho.
Outro artefato que também podem ser elaborado no modelo
lógico pelos projetistas é o dicionário de dados, que permite descrever
detalhadamente a estrutura de dados a ser criada no modelo físico.
O modelo físico inicia-se a partir do esquema lógico e resulta no
esquema físico. Um esquema físico é uma descrição da codificação do
bando de dados e é direcionado para um SGBD específico, ou seja, o
modelo físico deve ser elaborado com base no SGBD alvo, no qual o
banco de dados será desenvolvido.
Em outras palavras, o esquema físico resultará em uma
codificação para ser executada em um SGBD. Em geral, utilizam-se
comandos de uma linguagem para definição de dados do SGBD
adotado. A linguagem mais conhecida e utilizada pelos SGBDs que
adotam o modelo relacionado é a linguagem SQL (Structured Query
Language).
A seguir será apresentado o Modelo de entidade e
Relacionamento que será utilizado para projetar a primeira etapa do
- 15 -
..............................................

projeto de banco de dados. Esta primeira etapa consiste na elaboração


do modelo conceitual para representar o mundo real.

3. Modelo Entidade e Relacionamento (Modelo Conceitual)


O Modelo de Entidade e Relacionamento, ou simplesmente MER, é
utilizado para representar informações que são manipuladas por um ou
mais sistemas. Esse modelo permite traduzir em uma representação
gráfica, que é chamado de Diagrama de Entidade e Relacionamentos
(DER), as regras de negócio adotadas e praticadas por uma
organização, seja uma empresa comercial, industrial ou instituição sem
fins lucrativos. Por exemplo, é possível especificar que um Pedido de
Venda é solicitado por apenas um Cliente, e que um determinado
Cliente pode solicitar vários Pedidos de Venda.
O MER foi desenvolvimento para facilitar o projeto de banco de
dados, permitindo a especificação de um esquema conceitual que
representa a estrutura lógica geral de um banco de dados. Para isso, o
MER define três conceitos básicos: conjuntos de entidades, conjuntos
de relacionamento e atributos, que serão detalhados a seguir.

3.1 Entidade, atributos e conjunto de entidades


Uma entidade é um objeto que existe no mundo real e é distinguível de
outros objetos. Por exemplo, cliente, produto, empresa, entre outros.
Uma entidade possui um conjunto de atributos, que caracterizam
propriedades dessa entidade. Por exemplo, cliente tem nome,
endereços, telefones, entre outros. Cada atributo de uma entidade
possui um domínio de valores permitidos, sejam valores do tipo inteiro,
valores com casas decimais, valores do tipo caracteres, valores do tipo
data ou valores booleanos.
- 16 -
..............................................

Os atributos podem ser simples e compostos. Atributos simples


não apresentam subpartes. Atributos compostos podem ser divididos
em subpartes. Por exemplo, o atributo endereço de um cliente pode ter
subdividido em: rua, cidade, unidade da federação e CEP, entre outros.

Os atributos também podem ser de valor único (atômicos) ou de


valores múltiplos (multivalorado). Os atributos multivalorados possuem
um conjunto de valores para uma determinada entidade. Além disso, os
atributos podem ser atributos derivados, cujo valor pode ser calculado a
partir de outros atributos.

Um conjunto de entidades é um grupo de entidades do mesmo


tipo que compartilham os mesmos atributos. A Figura 8 apresenta uma
representação do conjunto de entidades Produto, com quatro atributos:
produto_id, descrição, quantidade e preço.

Descrição Produto_id

Quantidade Produto Preço

Figura 8 – Conjunto de Entidades Produto

Os atributos de um conjunto de entidades são características


que serão armazenadas no banco de dados. Assim, no exemplo acima,
cada produto é uma entidade com quatro atributos e todas as
entidades do conjunto terão os mesmos atributos.

3.2 Chaves
Os valores dos atributos de uma entidade precisam identificar
unicamente a entidade. Dessa forma, nenhuma entidade em um
conjunto de entidades pode ter exatamente o mesmo valor de outra
- 17 -
..............................................

entidade para todos os atributos, ou seja, não haverá entidades


duplicadas em um conjunto de entidades.

Para identificar as entidades em um conjunto de entidades é


definida uma super chave. Uma super chave que é composta por um ou
mais atributos para distinguir unicamente cada entidade. A Figura 9
apresenta um conjunto de entidades Produto com a super chave
produto_id, pois é suficiente para distinguir uma entidade produto de
outra.

Descrição Produto_id

Quantidade Produto Preço

Figura 9 – Conjunto de Entidades Produto com super chave

Cabe ressaltar que todos os conjuntos de atributos possíveis


que podem ser utilizados com super chave são denominados chaves
candidatas, pois também permitir identificar unicamente uma entidade.

3.3 Relacionamento e conjunto de relacionamentos


Um relacionamento é uma associação entre várias entidades. Por
exemplo, o funcionário Sérgio trabalha no departamento de TI.

Um conjunto de relacionamentos é composto por


relacionamentos do mesmo tipo, constituindo um conjunto de
relacionamentos. Por exemplo, todos os relacionamentos entre os
funcionários e os departamentos são do mesmo tipo e eles constituem
um conjunto de relacionamentos.

Um relacionamento também pode ter atributos descritivos. Por


exemplo, a quantidade vendida de um produto em um pedido pode ser
- 18 -
..............................................

associada ao relacionamento pedido_produto, para indicar que essa


quantidade deve ser associada ao pedido e também ao produto e, não
somente a um deles. A Figura 10 apresenta um conjunto de
relacionamentos entre Pedido e Produto, com dois atributos descritivos,
valor e quantidade.

Valor
Pedido_id Data
Produto_id Descrição

Pedido Tem Produto

estoque
Preço
Quantidade

Figura 10 – Conjunto de Relacionamentos

Os conjuntos de relacionamentos que envolvem dois conjuntos


de entidades são denominados relacionamentos binários. Da mesma
forma, os conjuntos de relacionamentos que envolvem três conjuntos de
entidade são chamados relacionamentos ternários e, assim,
sucessivamente. Por exemplo, um conjunto de relacionamentos
denominado utiliza_em pode associar três conjuntos de entidades:
funcionário, projeto e ferramenta.

3.4 Cardinalidade de mapeamento


A cardinalidade de mapeamento de um conjunto de relacionamentos
expressa quantas vezes uma entidade pode ser relacionada à outra
entidade. Para um conjunto de relacionamentos a cardinalidade de
mapeamento deve ser defina por um dos tipos abaixo:

 Um-para-um: uma entidade em A é associada ao no


máximo uma entidade em B, e uma entidade em B é
associada ao no máximo uma entidade em A.
- 19 -
..............................................

 Um-para-muitos: uma entidade em A é associada a


qualquer número de entidades em B, e uma entidade em B
é associada ao no máximo uma entidade em A.

 Muitos-para-um: uma entidade em A é associada ao no


máximo uma entidade em B, e uma entidade em B é
associada a qualquer número de entidades em A.

 Muitos-para-muitos: uma entidade em A é associada a


qualquer número de entidades em B, e uma entidade em B
é associada a qualquer número de entidades em A.

A Figura 11 apresenta as cardinalidades acima que são


utilizadas para representar as associações entre os conjuntos de
entidades.

Figura 11 – Cardinalidades de Mapeamento


Adaptado de SILBERSCHATZ (2006)
- 20 -
..............................................

A Figura 12 apresenta um conjunto de relacionamentos muitos-


para-muitos entre Pedido e Produto, no qual um pedido pode ter vários
produtos e, um produto, pode ser vendido em vários pedidos. Além
disso, o conjunto de relacionamentos possui dois atributos descritivos:
quantidade e valor.

Valor
Pedido_id Data
Produto_id Descrição

N N
Pedido Tem Produto

estoque
Preço
Quantidade

Figura 12 – Conjunto de Relacionamentos muitos-para-muitos

3.5 Conjunto de Entidades Fraco


Um conjunto de entidades fraco depende de outro conjunto de
entidades para existir. Assim, não haverá um conjunto de entidades
fraco sem existir um conjunto de entidades identificador. Por exemplo,
não haverá um conjunto de telefones se não existir um conjunto de
clientes, e da mesma forma, não haverá um conjunto de e-mails se não
existir um conjunto de clientes que são proprietários de tais e-mails.
O conjunto de entidades fraco se relaciona com o conjunto de
entidades identificador por meio de um conjunto de relacionamentos
com cardinalidade um-para-muitos, do identificador para o conjunto de
entidades fraco. Essa cardinalidade sempre será um-para-muitos, pois
um conjunto de entidades identificador sempre manterá uma relação
com várias entidades do conjunto de entidades fraco. A Figura 13, que
apresenta um exemplo de associação de um conjunto de entidades
fraco (E-mail) com um conjunto de entidades identificador (Cliente).
- 21 -
..............................................

Nome
cpf

Cliente
N email
Tem
1

Cliente_id endereco

Figura 13 – Generalização e Especialização

O retângulo e losango duplos da figura acima representa a


dependência existente do conjunto de entidades E-mail em relação ao
conjunto de entidades Cliente. Dessa forma, não haverá e-mails sem
vínculo com algum cliente e, um cliente, pode ter vários e-mails
associados a ele.

3.6 Generalização e Especialização


Uma estrutura de generalização/especialização permite organizar os
dados, pois atributos compartilhados entre dois ou mais conjuntos de
entidades são colocados em um conjunto de entidades único. Por
exemplo, na Figura 14 pode-se observar que Cliente e Vendedor
possuem atributos em comuns (nome, CPF e fone) alocados em
Pessoas e, atributos especificados, que estão alocados em Cliente (e-
mails e data) e Vendedor (salario_fixo e comissão). Caso a
generalização/especialização não fosse modelada, os atributos de
Pessoa deveriam ser colocados em cada um dos conjuntos de
entidades Cliente e Vendedor.
- 22 -
..............................................

Pessoa_id cpf
Pessoa
Nome Fone

Isa

email salario_fixo

Cliente Vendedor
comissão
data

Figura 14 – Generalização e Especialização

Durante a modelagem de dados os projetistas podem utilizar


um recurso muito simples para determinar se podem fazer uma
Herança. Para isso, a pergunta “é um” ou “é uma” em relação aos
conjuntos de entidades a serem associados deve ser respondida. Por
exemplo, Cliente “é uma” Pessoa? Caso afirmativo, uma herança pode
ser modelada. Por outro lado, se a reposta for negativa, a herança deve
ser descartada e associação entre os conjuntos de entidades deve ser
feito por outro tipo de relacionamento.

No paradigma orientado a objetos a estrutura de


generalização/especialização é conhecida como Herança, pois os
atributos compartilhados ficam na classe Pai ou Super Classe, e os
atributos específicos ficam alocados nas classes filhas ou Sub Classes,
simulando uma herança no mundo real.

4. Construção de um Modelo Lógico


O mapeamento do modelo conceitual para o modelo lógico pode ser
visto como sendo um processo em duas fases: a primeira, que é
independente do SGBD, não considera nenhuma característica
especifica que se aplica á codificação no SGBD escolhido e, a segunda,
- 23 -
..............................................

consiste no ajustamento do esquema lógico às particularidades do


SGBD.
Para a construção do modelo lógico grande parte dos
projetistas de banco de dados utilizam ferramentas CASE. Essas
ferramentas auxiliam a criação dos esquemas lógicos e físico, além de
prover a criação das estruturas e métodos de acesso aos dados com
base no SGBD adotado.
Várias regras de tradução do modelo conceitual para o modelo
lógico são adotadas. Essas regras são simples e são aplicadas de
maneira direta. As regras mais utilizadas para efetuar o mapeamento do
modelo lógico a partir do modelo conceitual são:
Conjunto de entidades: determina relação.
Atributo chave: determina chave primária.
Conjunto de relacionamentos:
 Conjunto de Relacionamentos um-pra-um ou um-para-
muitos: não origina novas relações, mas ocorre a inclusão
na relação derivada do conjunto de entidades do lado n de
um atributo correspondente à chave primária da relação
derivada do conjunto de entidades do lado 1, com a função
de chave estrangeira. Assim, haverá uma chave estrangeira
na relação do lado n para associar as entidades.
 Conjunto de relacionamentos muitos-para-muitos: origina
uma nova relação com chave primária derivada da
concatenação dos atributos chaves das relações
associadas.
 Conjuntos de relacionamentos fracos: o conjunto de
entidades fraco origina uma relação com chave composta,
que é formada pela chave do conjunto de entidades
- 24 -
..............................................

identificador concatenada com a chave do conjunto de


entidades fraco.
 Conjuntos de relacionamentos do tipo ternário: cada
conjunto de relacionamentos com grau 3 (ternário) ou
superior também origina uma nova relação, da mesma
forma observada dos conjuntos de relacionamentos muitos-
para-muitos, com chave primária derivada da concatenação
dos atributos chaves das relações associadas.

Para demonstrar um exemplo de mapeamento do modelo


conceitual para um modelo lógico, considere o Diagrama E-R da Figura
15 com quatro conjuntos de entidades: Cliente, Pedido, Dependente e
Produto. O conjunto de entidades Dependente é um conjunto de
entidades fraco, cujo identificador é o conjunto de entidades Cliente.
Além disso, existem três conjuntos de relacionamentos que associam
os conjuntos de entidades.

Cliente_id Data Nome Data


Pedido_id
Cliente Faz Pedido
N N
1 N
Nome

Quantidade
Tem Faz
Valor

Nome Produto_id
N N
Parentesco
Descrição
Dependente Produto
estoque

Preço

Figura 15 – Diagrama E-R


- 25 -
..............................................

A Figura 16 apresenta o Diagrama de Estrutura de Dados


(DED), que foi elaborado a partir do Diagrama E-R acima.

Cliente_id Data Nome Data


Pedido_id
Clientes Pedidos

Nome Cliente_id (FK)

Pedido_id (FK)

Produto_id (FK) Itens_Pedidos


Quantidade
Valor

Produto_id
Cliente_id (FK)
Descrição
Dependentes Nome Produtos
estoque
Parentesco
Preço

Figura 16 – Esquema Lógico

As setas do DED indicam a migração das chaves primárias que


deram origem às chaves estrangeiras, cujos atributos possuem a sigla
(FK), do Inglês foreign key (chave estrangeira), junto ao nome. Dessa
forma, as relações foram modificadas da seguinte maneira:
 A relação Pedidos recebeu uma chave estrangeira (Cliente_id)
da relação Clientes;
 A relação Dependentes recebeu uma chave estrangeira
(Cliente_id) de Clientes. Além disso, por ser uma relação que
teve origem a partir de um conjunto de relacionamentos fraco, a
chave estrangeira Cliente_id integrou a sua chave primária;
 Foi criada uma nova relação (Itens_Pedidos) para associar
Pedidos e Produtos. Essa relação ganhou duas chaves
- 26 -
..............................................

estrangeiras (Pedido_id) e Produto_id), que formaram a sua


chave primária.

A Figura 17 mostra um DED gerado a partir da ferramenta


ERwin Data Modeler da empresa Computer Associate.

Figura 17 – Esquema Lógico elaborado no ERwin.

Pode-se dizer que o diagrama gerado a partir do ERwin é um


DED com informações conceituais descritas no Diagrama E-R
(entidades fracas, relacionamentos, entre outras), e também com
informações físicas que só aparecem nos comandos da LLD
(Linguagem de Definição de Dados) do SGBD alvo.
A seguir serão apresentados 5 estudos de casos que abordarão
a elaboração das principais etapas de um projeto de banco de dados.

5. Referências Bibliográficas

NAVATHE, S. B; ELMASRI, R. E. Sistemas de Banco de Dados:


fundamentos e aplicações. 3 ed. Rio de Janeiro: LTC, 2002.
SILBERSHATZ, A.; KORTH, H. F.; SUDARSHAN, S. Sistemas de
banco de dados. São Paulo: Pearson, 2006.