Você está na página 1de 43

Projeto de Banco de Dados

– Etapa 1 –
Modelagem Conceitual
NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan 1

Modelagem Conceitual
C O objetivo É:  O objetivo NÃO É:
Representar a semântica da Descrever a estrutura do
informação, independente de armazenamento do banco
considerações de eficiência. de dados.

 Requisitos de um modelo conceitual:


- clareza (facilidade de compreensão)
- exatidão (formal)

Désiré NGuessan 2

Análise de Requisitos
• Requisitos dos Dados
– Entrada: Universo de Discurso (UdD)
• “realidade”da organização
• Informaçao a ser tratada com todas suas propriedades,
restrições
– Processo
• Coleta e análise
• Entrevistas, documentos, formulários
– Resultado
• Descrição “aproximativa”, ling. natural

Désiré NGuessan 3

1
Modelagem Conceitual
Abordagem: E-
E-R
• Introduzido por Peter Chen no artigo:
The Entity-Relationship Model - Toward a
Unified View of Data, Transactions on
Database Systems, 1(1), March 1976.

O modelo ER é uma técnica de


modelagem conceitual com representação
gráfica utilizada durante a fase de projeto
conceitual para entendimento do mundo
real.
Désiré NGuessan 4

Modelagem Conceitual
Abordagem: E-
E-R
• Padrão para a modelagem conceitual de Sistema de
Banco de Dados
• Principais Características:
– Utilização de poucos conceitos
– Excelente representação gráfica
– Facilidade de compreensão
• Elementos Básicos
– Entidade
– Atributo
– Relacionamento
– Cardinalidade

Désiré NGuessan 5

Modelagem Conceitual
Abordagem: E-
E-R
• Descrição conceitual do BD de forma
independente de implementação de um
SGBD
– Registra que dados podem aparecer no BD
– não registra como os mesmos estarão
armazenados no SGBD

Désiré NGuessan 6

2
Modelagem Conceitual
Abordagem: E-
E-R
– Técnica mais conhecida: Abordagem
Entidade-Relacionamento (ER) 
– Uso do DER (Diagrama ER)
– Modelo Conceitual = modelo de dados
abstrato

Désiré NGuessan 7

Abordagem: E-
E-R
Elementos Básicos:
• Entidade
– Conjunto de objetos (concreto ou abstrato) do
mundo real que possuem características
comuns.

Désiré NGuessan 8

Abordagem: E-
E-R
Elementos Básicos:
• Entidade
– Notação:
PESSOA CIDADE Entidades

PESSOA DEPARTAMENTO

Désiré NGuessan 9

3
Abordagem: E-
E-R
Elementos Básicos:
• Entidade
– Notação:

Pessoa Cidade
Tarso Porto Alegre
Alberto São Paulo Ocorrências
Ana Belo Horizonte da entidade

Désiré NGuessan 10

Abordagem: E-
E-R
Elementos Básicos:
• Relacionamento
– É a representação de uma associação entre
duas ou mais entidades

Désiré NGuessan 11

Abordagem: E-
E-R
Elementos Básicos:
• Relacionamento - Notação:

PESSOA Residência CIDADE

Tarso Porto Alegre


Alberto São Paulo
Ana Belo Horizonte

Désiré NGuessan 12

4
Abordagem: E-
E-R
Elementos Básicos:
• Diagrama de Ocorrências de entidades e
relacionamentos são representados:
– Ocorrências de entidades (círculo vazado)
– Ocorrência de relacionamento (círculo preto)

Désiré NGuessan 13

Abordagem: E-
E-R
Elementos Básicos:
• Diagrama de Ocorrências de entidades e
relacionamentos são representados:

f2
f4 entidade
f1
f3 f5 FUNCIONÁRIO
relacionamento
f1,d1 f4,d2
f3,d1 f5,d3 LOTAÇÃO

entidade
d1 d3
d2 DEPARTAMENTO
Désiré NGuessan 14

Abordagem: E-
E-R
Elementos Básicos:
• Relacionamento
– Auto-Relacionamento
• Relacionamento entre ocorrências de uma
mesma entidade
• Cada entidade tem um papel
– função que uma instância da entidade cumpre dentro de
uma instância do relacionamento

Désiré NGuessan 15

5
Abordagem: E-
E-R
Elementos Básicos:
• Relacionamento

PESSOA

marido esposa
CASAMENTO

Désiré NGuessan 16

Abordagem: E-
E-R
Elementos Básicos:
• Diagrama de Ocorrência
p2
p4
p1 p5
p3

marido
marido esposa esposa

p1,p2 p4,p5

Désiré NGuessan 17

Abordagem: E-
E-R
Elementos Básicos:
• Cardinalidade
– Cardinalidade (mínima, máxima) de entidade
em relacionamento:
• número (mínimo, máximo) de ocorrências de
entidade associadas a uma ocorrência da
entidade em questão através do relacionamento
– Cardinalidade (multiplicidade) de
mapeamento

Désiré NGuessan 18

6
Abordagem: E-
E-R
Elementos Básicos:
• Cardinalidade
Funcionário Lotação Departamento
n 1

Ocorrência de Funcionário pode estar associada no


máximo a 1 ocorrência de Departamento
Onde:
n = muitos = 5 ou 10 ou 350...

Désiré NGuessan 19

Abordagem: E-
E-R
Elementos Básicos:
• Relacionamentos Binários
– Relacionamento cujas ocorrências contém
duas ocorrências de entidade
– Classificação
• n:n (muitos-para-muitos)
• 1:n (um-para-muitos)
• 1:1 (um-para-um)

Désiré NGuessan 20

Abordagem: E-
E-R
Elementos Básicos:
• Relacionamentos Binários
– Relacionamentos 1:1 (um-para-um)

Pessoa
1 1
marido esposa
casamento

• Cardinalidades máximas expressam que


PESSOA pode possuir no máximo 1 marido
e que PESSOA pode possuir no máximo 1
esposa
Désiré NGuessan 21

7
Abordagem: E-
E-R
Elementos Básicos:
• Relacionamentos Binários
– Relacionamentos 1:n (um-para-muitos)

Aluno n
Inscrição Curso
1

Empregado
1 n
supervisor supervisionado
Supervisão

Désiré NGuessan 22

Abordagem: E-
E-R
Elementos Básicos:
• Um aluno pode estar inscrito em no máximo 1
curso mas um curso pode ter diversos alunos
• Um empregado supervisor pode supervisionar
no máximo n empregados, mas um empregado
não supervisor pode ser supervisionado por 1
único supervisor

Désiré NGuessan 23

Abordagem: E-
E-R
Elementos Básicos:
• Relacionamentos Binários
– Relacionamentos n:n (muitos-para-muitos)
Produto
n n
composto componente
Composição

Médico n
Consulta Paciente
n

Désiré NGuessan 24

8
Abordagem Entidade-Relacionamento

Exercício:
Desenhar um diagrama ER que contemple as seguintes
regras:
1. Cada cidade deve ter uma ou mais ruas. Cada rua deve estar
em uma cidade.
2. Cada rua deve ter um ou mais prédios. Cada prédio deve
estar em uma rua.
3. Cada prédio pode ter um ou mais apartamentos. Cada
apartamento deve estar em um prédio.
4. Cada rua deve estar localizada em um bairro. Cada bairro
pode ter uma ou mais ruas.
Désiré NGuessan 25

1 n
Cidade Cidade-Rua Rua
n 1
Rua-
Predi
o
n
Prédio
1 1
Bairro Predio-
Apto
n
Apartam
ento
Désiré NGuessan 26

Modelagem Conceitual
• Estudo de caso 1: Administradora de imóveis.
- A administradora trabalha tanto com administração de
condomínios, quanto com a administração de aluguéis.
- Uma entrevista com o gerente da administradora resultou
nas seguintes informações:
- A administradora administra condomínios formados por
unidades condominiais.
- Cada unidade condominial é de propriedade de uma ou
mais pessoas. Uma pessoa pode possuir diversas
unidades.
- Cada unidade pode ser alugada para no máximo uma
pessoa. Uma pessoa pode alugar diversas unidades.

Désiré NGuessan 27

9
1 n
Condomínio Cond-Unid Unidade
n n

Unid-Proprietário

1 n
Inquilino
Proprietário

Désiré NGuessan 28

Abordagem: E-
E-R
Elementos Básicos:
• Atributos
– A cada entidade (ou relacionamento) podem
estar associados um ou mais atributos que
representam suas propriedades elementares.
– Definem os valores que são associados às
ocorrências das entidades a partir de
determinados domínios

Désiré NGuessan 29

Abordagem: E-
E-R
Elementos Básicos:
• Atributos

PESSOA

Nome Data de
Nascimento

Désiré NGuessan 30

10
Abordagem: E-
E-R
Elementos Básicos:
Atributos (continuação...)
Um atributo deve ser associado a um relacionamento
quando não for possível associá-lo a uma entidade
Classificação

PILOTO Corrida CIRCUITO

Classificação (<p1, c1>) = 10

Désiré NGuessan 31

Abordagem: E-
E-R
Elementos Básicos:
Atributos (continuação...)
Um atributo deve ser associado a um relacionamento
quando não for possível associá-lo a uma entidade
Data/hora

MÉDICO consulta PACIENTE

consulta (<m1, p1>) = 20/8

Désiré NGuessan 32

Abordagem: E-
E-R
Elementos Básicos:
Atributos (continuação...)
Nome (1,1)
FUNCIONÁRIO Sobrenome (1,n)
Telefone (0,n)
(1,1)  atributo monovalorado e obrigatório
(0,1)  atributo monovalorado e opcional(idade)
(1,n)  atributo multivalorado e obrigatório
(0,n)  atributo multivalorado e opcional

Désiré NGuessan 33

11
Abordagem: E-
E-R
Elementos Básicos:
Atributos (continuação...)
– Atributo identificador
• Um identificador é um atributo ou (menor) grupo de
atributos que determina univocamente uma
entidade.
• Toda entidade deve possuir um identificador,
podendo este ser simples ou composto, além de
interno ou externo.

Désiré NGuessan 34

Abordagem: E-
E-R
Elementos Básicos:
Atributos (continuação...)
Atributo identificador
simples

FUNCIONÁRIO Matrícula
Nome

Désiré NGuessan 35

Abordagem: E-
E-R
Elementos Básicos:
Atributos (continuação...)

Capacidade
Prateleira
Numero do corredor
Numero da prateleira

Identificador
composto por vários
atributos
Désiré NGuessan 36

12
Abordagem: E-
E-R
Elementos Básicos:
• Generalização/Especialização
– Permite atribuir propriedades particulares a um
subconjunto das ocorrências (especializadas)
de uma entidade genérica
– É associada a idéia de Herança de
propriedades

Désiré NGuessan 37

Abordagem: E-
E-R
Elementos Básicos:
• Generalização/Especialização
Nome
1 n
Filial Cliente Codigo

O cliente é dividido em
dois subconjuntos cada
um com propriedades
próprias

CPF Pessoa Pessoa. CNPJ


Sexo Física Jurídica Tipo de organizaçao

Désiré NGuessan 38

Abordagem: E-
E-R
Elementos Básicos:
• Generalização/Especialização
– Parcial
– Total

Désiré NGuessan 39

13
Abordagem: E-
E-R
Elementos Básicos:
• Generalização/Especialização
– Total
Cliente Indica que Todo cliente
é pessoa física ou
t pessoa jurídica

Pessoa Pessoa.
Física Jurídica

Désiré NGuessan 40

Abordagem: E-
E-R
Elementos Básicos:
• Generalização/Especialização
– Parcial
Funcionário Indica que nem todo
funcionário é motorista
p ou secretária

Motorista Secretária

Désiré NGuessan 41

Construindo o Modelos E-
E-R:
• Considerações a serem observadas:
– Um modelo ER é formal
• Diferentes leitores de um mesmo modelo ER
devem entender exatamente a mesma coisa
de DER:
• Envolvidos na confecção e uso de DER devem
ser ‘treinados.
• Muitas vezes usado informalmente para reunir
idéias e, usuários finais concordam e aprovam
sem entender efetivamente o que foi modelado.

Désiré NGuessan 42

14
Construindo o Modelos E-
E-R:
• ER tem poder de expressão limitado:
– Não representa todas as restrições (de integridade)
e propriedades que um BD deseja :

Pessoa
1 1
marido esposa
casamento

Désiré NGuessan 43

Construindo o Modelos E-
E-R:

• Estratégias de Modelagem:
– Processo incriminável com seqüência de passos
– Gradativamente o modelo vai sendo enriquecido
– Fontes de informações:
• Partindo de descrições de dados existentes
– Sistemas existentes
• Partindo do conhecimento de pessoas
– Novos sistemas

Désiré NGuessan 44

Construindo o Modelos E-
E-R:
• Partindo de descrições de dados existentes:
– Para este caso aplica-se a estratégia bottom
bottom--up
up: de
baixo para cima:
• Primeiro são identificados os atributos;
• Os atributos são agregados em entidades
• As entidades são relacionadas e generalizadas

Désiré NGuessan 45

15
Construindo o Modelos E-
E-R:
• Partindo do conhecimento de pessoas:
– Para este caso aplica-se:
• Estratégia descendente (Top
Top--down)
down): de cima para baixo
• Estratégia (Inside
Inside--out)

Désiré NGuessan 46

Construindo o Modelos E-
E-R:
• Estratégia descendente (Top
Top--down):
down) de cima para
baixo:
– Modelagem Superficial – DER pouco detalhado na seguinte
seqüência:
• Enumeração de entidades
• Identificação de relacionamentos e hierarquias de
generalização/especialização entre as entidades para cada
relacionamento identificar a cardinalidade máxima
• Determinação dos atributos de entidades e relacionamento
• Determinação dos identificadores de entidades e
relacionamentos
– Modelagem Detalhada

Désiré NGuessan 47

Construindo o Modelos E-
E-R:
• Estratégia (Inside
Inside--out):
out) de dentro fora:
– O processo inicia com a identificação de uma entidade
particularmente importante no modelo, e que supõe-se, estará
relacionada a muitas outras entidades
– A partir daí, são procurados atributos, entidades relacionadas
generalizações e especializações da entidade em foco
– E assim recursivamente até obter-se o modelo completo

Désiré NGuessan 48

16
Désiré NGuessan 49

P FISICA numhoras
1
CLIENTE codigo
data
1
n
P JURIDICA REVISAO
MOTORISTA
n n
RESERVA n
1
n
chassi motor
placa
cor codigotipo
1 1
1
FILIAL VEICULO n 1 TIPO
VEICULO
1 n
1 1

n
n n
LOCAÇAO
AUTOMOVEL
CAMIONETA
CAMIONETA DE
CARGA
PASS.
porta

passageiro capacidade
tamanho
Désiré NGuessan 50

Désiré NGuessan 51

17
Projeto de Banco de Dados
– Etapa 2 –
Projeto Lógico:
Abordagem Relacional

NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan 52

Especificação de BD relacional
• A especificação de um banco de dados
relacional (chamada de esquema do banco
de dados) deve conter no mínimo a definição
dos Seguintes:
– Tabelas que formam o banco de dados
– Colunas que as tabelas possuem
– Restrições de integridade

Désiré NGuessan 53

Exemplo de Esquema
Chave Primaria Chave Estrangeira

• Emp(CodigoEmp,Nome,CodigoDepto,CategF
uncional,CIC)
– CodigoDepto referência Dept
• Dept (CodigoDepto,Nome)

Désiré NGuessan 54

18
Vantagens:
• Entidades e relacionamentos são
representados através de Tabelas
– Trabalha com relações e não com registros
– Evita a declaração de ligações e conectores no
nível conceitual

Désiré NGuessan 55

Vantagens:
• Simetria completa nas consultas
– Não há problemas de redundância
– Não há a necessidade de se preverem conectores
(ligações adicionais) na consulta
• Linguagens completas para manipulação de
dados (fundamentação matemática)
– Não são fortemente acopladas a uma LP
– Linguagens de mais alto nível, se comparadas com
uma LP procedural tradicional

Désiré NGuessan 56

Mapeamento ER em
Relacional
• Objetivos:
– Obter um BD que:
• Tenha bom desempenho nas instruções de consulta e
alteração de dados
• Simplifique o desenvolvimento e manutenção de aplicações
– Princípios:
• Evitar junções
• Diminuir o número de chaves
• Evitar campos opcionais

Désiré NGuessan 57

19
Mapeamento ER em
Relacional
• Fase de Preparação:
– Substituir alguns relacionamentos por chaves
estrangeiras
– Encontrar/substituir identificadores
– “Normalizar” entidades

Désiré NGuessan 58

Mapeamento ER em
Relacional
• Fase de Mapeamento
– transformar entidades e relacionamentos em relações
(Tabelas)

Désiré NGuessan 59

Preparação
• Eliminação de identificadores externos:
– Eliminar o Relacionamento, substituindo-o por uma nova versão
da Entidade que contém somente identificadores internos
• Incluir como atributo(s) da nova versão da entidade o(s) atributo(s)
identificador(es) da entidade que participava externamente da
identificação;
• Criar novo identificador na nova Entidade, composto dos atributos
internos identificadores originais, mais os novos atributos.

Désiré NGuessan 60

20
Preparação
• Eliminação de Atributos Multivalorados:
– Como Alternativas
• Criar uma nova Entidade, relacionada à entidade original
• Identificação da nova Entidade pode ser o próprio atributo, ou
um identificador externo
• Substituir por n atributos fixos, desde que se saiba e possa
limitar o valor de “n”atributos.

Désiré NGuessan 61

Preparação
• Eliminação de Atributos Multivalorados:
CI
Nome
Dependentes (0,n)
Telefones(0,3)

CI
Nome
Num
Depend
Fone3 Nome
Fone1
Fone2
Désiré NGuessan 62

Mapeamento de Entidade
CI
Nome
Num
Depend
Fone3 Nome
Fone1
Fone2

Func (CI, Nome, Fone1, Fone2, Fone3)


Depend (CI, Num, Nome)

Désiré NGuessan 63

21
Mapeamento de Relacionamento

• Relacionamento sao Implementadas usando


chaves estrangeiras:
– Identificadores das entidades participantes
• Três Técnicas
– Tabela Própria
• Aconselhado para cardinalidades máximas N:M
– Colunas Adicionais em Tabela de Entidade
• aconselhado para cardinalidades máximas 1:1 e 1:N
– Fusão de Tabelas de Entidades
– aconselhado para alguns casos de cardinalidades máximas 1:1

Désiré NGuessan 64

Mapeamento de Relacionamento
• Tabela Própria:
– Transformar o relacionamento em tabela contendo:
• Atributos identificadores das entidades participantes da relação
– Definí-las como chaves estrangeiras
• Atributos do relacionamento, se existirem
– Identificação
• Relacionamento é identificado por entidades participantes?
– Composição dos identificadores das Entidades
• Relacionamento é identificado por composição das entidades
participantes e atributos do relacionamento?
– Composição dos identificadores das entidades e destes atributos

Désiré NGuessan 65

Mapeamento de Relacionamento

• Tabela Própria:
n CodP
Engenheiro n
EP Projeto
Titulo

Nome
CodE Funcao
Engenheiro (CodE,Nome)
Projeto (CodP, Titulo)
EP (CodE, CodP,funcao)
CodE referencia Engenheiro
CodP referencia Projeto

Désiré NGuessan 66

22
Mapeamento de Relacionamento
• Adição de Colunas:
– Cada entidade é mapeada em uma tabela distinta
• identificador = identificador da entidade
• alterações de identificador por razões de desempenho
– Em uma das tabelas é incluído um ou mais atributos,
correspondentes aos atributos que compõem a chave primária da
outra tabela, e defini-los como chave estrangeira
– Casos recomendados
• todos os casos 1:N
• casos 1:1
• (0-1):(0-1)
• (0-1):(1-1)

Désiré NGuessan 67

Mapeamento de Relacionamento

• Adição de Colunas - (1,n)


1 CodE
Departamento n
D_E Empregado
Nome
Nome
CodD Data
Departamento (CodD Nome)
Empregado (CodE, Nome, CodD,Data)
CodD referencia Departamento

Désiré NGuessan 68

Mapeamento de Relacionamento

• Adição de Colunas – (1,1)


0,1 RG
Homem 0,1
H_M Mulher
Nome
Nome
RG Data Regime

Homem (RG, Nome)


Mulher (RGM, Nome, RGH, ,Data, regime)
RGH referencia Homem

Désiré NGuessan 69

23
Mapeamento de Relacionamento

• Fusão de Tabelas de Entidades:


– Criação de uma única tabela, contendo todos os
atributos das duas Entidades
• identificador = identificador de uma das entidades
• escolha arbitrária
– Caso recomendado
• caso (1-1) : (1-1)
• Cardinalidade Minima de ambas as entidades é 1

Désiré NGuessan 70

Mapeamento de Relacionamento

• Fusão de Tabelas – (1,1):(1,1)


1,1
Conferência Organizacao 1,1
Comissao
End
Nome
Cod Data

Conferência (Cod, Nome,Data, End)

Désiré NGuessan 71

Mapeamento de Generalização

• Há duas alternativas principais:


– Usa de uma tabela para cada entidade
participante
– Uso de uma única tabela para toda hierarquia
de Generalização/Especialização

Désiré NGuessan 72

24
Mapeamento de Generalização
Nome
Uma Tabela Para Cliente
Cod
Cada Entidade

CPF CGC
PFisica PJuridica
Sexo Tipo

Cliente (Cod, Nome)


PFisica( Cod, CPF, Sexo)
PJuridica( Cod, CGC, Tipo)

Désiré NGuessan 73

Mapeamento de Generalização
Nome
Uma Única Tabela Cliente
Cod

CPF CGC
PFisica PJuridica
Sexo Tipo

Cliente (Cod, Tipo Nome, CPF, Sexo,


CGC, TipoPJ)

Désiré NGuessan 74

Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDepto,CartHabil,
CREA,CodigoRamo)
Esquema Relacional Correspondente

CodigoDepto Referencia Depto


CodiRamo Referencia Ramo
Depto (CodigoDepto,Nome)
Ramo(CodigoRamo,Nome)
ProcessTexto(CodigoProc, Nome)
Dominio(CodigoEmp, CodigoProc)
CodigoEmp referencia Emp
CodigoProc referencia ProcessTexto
Projeto (CodigoPro, Nome)
Participação (CodigoEmp, CodigoProj)
CodigoEmp referencia Emp
CodigoProj referencia Projeto

Désiré NGuessan 75

25
Projeto de Banco de Dados
– Etapa 2 –
Projeto Lógico
NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan 76

Modelo Relacional
• Criado por Edgar Codd (1970)
– Lab. Pesquisa IBM/San Jose - Califórnia
– Utilizado em empresas a partir de 1987
– Objetivos
• Independência de dados
• Reduzir inconsistências

Désiré NGuessan 77

Modelo Relacional
• São conjuntos de dados vistos segundo um
conjunto de tabelas - as operações sobre as
mesmas são feitas por linguagens que
manipulam a álgebra relacional, não sendo
procedurais (ou seja, manipulando conjuntos
de uma só vez).

Désiré NGuessan 78

26
Modelo Relacional
• Abordagem Relacional:
– Abordagem de modelagem de dados usada nos
Sistemas de Gerência de Banco de Dados do tipo
relacional
– Modelagem em nível lógico e não conceitual

Désiré NGuessan 79

Modelo Relacional
• Características do Modelo:
– Aspectos Estruturais:
• dados do BD em tabelas
– Aspectos de Integridade:
• tabelas satisfazem restrições
– Aspectos de Manipulação:
• operadores de manipulação derivam tabelas de outras
tabelas

Désiré NGuessan 80

Modelo Relacional
• Aspectos Estruturais:
– Tabela/Relação
– Atributos
– Chaves
– Domínio

Désiré NGuessan 81

27
Modelo Relacional
• Relação:
– Uma relação R sobre uma coleção de
conjuntos D1, D2, . . ., Dn é um subconjunto do
produto cartesiano D1 X D2 X . . . X Dn.
– Exemplo: Relação NomeCliente - Nro. Conta

Désiré NGuessan 82

Modelo Relacional
• Relação:
NomeCliente NroConta

João
100
Paulo
200
Maria
300
Marta

Désiré NGuessan 83

Modelo Relacional
• Tabelas
– Representação usual de uma relação
– Cada qual designada por um nome único
– Composta por:
• linhas (tuplas)
– Uma linha numa tabela representa um
relacionamento entre conjunto de valores
• colunas (atributos)
– Relacionadas através de
• Chaves estrangeiras

Désiré NGuessan 84

28
Modelo Relacional

• Tabelas
– Cardinalidade da relação: número de tuplas da
tabela
– Grau da relação: número de colunas da tabela
• O número de conjuntos sobre o qual a relação (tabela)
está definida.
• unária, binária, ..., n- ária

Désiré NGuessan 85

Modelo Relacional

• Atributo
– Representa o uso de um domínio dentro de uma
relação
– Vários atributos podem pertencer a um mesmo
dominio
– Em uma tabela, representa a descrição
(cabeçalho) das colunas
– Exemplo: relação Clientes

Désiré NGuessan 86

Modelo Relacional
Nome de
Atributo
• Estrutura de DB Relacional
Tuplas
Num Nome Status Cidade
C1 Santo devedor Sao Paulo
Cardinalidade

C2 Souza Com credito Campinas


C3 Silva Com credito Campinas
C4 Soares Inativo São Paulo

Grau

Désiré NGuessan 87

29
Terminologia
Profissional Acadêmico
Tabela Relação
Linha ou Registro Tupla
Coluna ou Campo Atributo
Valor do Campo Valor do atributo
Identificador exclusivo Chave Primaria
Conjunto de Valores Validos Domínio

Désiré NGuessan 88

Modelo Relacional

• Chave
– Conceito usado para especificar restrições de
integridade básicas de um SGBD relacional
• permite a identificação de tuplas em uma tabela
• permite o estabelecimento de relacionamentos entre
tabelas

Désiré NGuessan 89

Modelo Relacional

• Chave
– Três tipos:
• Chave primária
• Chave alternativa
• Chave estrangeira

Désiré NGuessan 90

30
Modelo Relacional

• Chave Primaria:
– Uma chave primária é uma coluna ou uma
combinação de colunas cujos valores distinguem
uma linha das demais dentro de uma tabela
– Identifica univocamente uma tupla

Désiré NGuessan 91

Chave Primaria:

CodEmp NoDepen Nome Tipo DataNasc


Dependente

C1 01 Santo filho 12/01/87


C1 02 Maria filha 20/12/98
C3 01 Silva esposa 04/05/68
C4 01 Soares filho 06/10/90

Chave Primaria

Désiré NGuessan 92

Modelo Relacional

• Chave Estrangeira:
– Uma coluna ou uma combinação de colunas,
cujos valores aparecem necessariamente na
chave primária de uma tabela
– Mecanismo que permite a implementação de
relacionamentos em um banco de dados
relacional

Désiré NGuessan 93

31
Chave Estrangeira :
CodDpto NomeDpto
DEPTO

D1 compras CodigoDepto em EMP é


D2 engenharia uma chave estrangeira em
relação a tabela DEPTO
D3 vendas

CodEmp Nome CodDpto Categoria Cic


E1 Santo D1 344334
E2 Maria D2 C5 565565
E3 Silva D2 C5 787877
E4 Soares D1 C2 990909

EMP
Désiré NGuessan 94

Projeto de Banco de Dados


Linguagem - SQL

NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan 95

SQL

• SQL (Structured Query Language) é uma linguagem


comercial de definição e manipulação de dados
relacionais
• Inicialmente chamada de SEQUEL
– origem: Sistema R (IBM)
• Structured Query Language
– Padrão de fato para bancos de dados relacionais
• Ex.: Oracle, SQL/Server, DB2, Sybase, Ingres, etc.
– 1986: padrão ANSI (SQL1)
• Modificado em 89
– outros padrões: SQL2 (92), SQL3 (99)

Désiré NGuessan 96

32
Componentes do SQL
• DDL (Data Definition Language)
– criação, atualização e remoção de relações e índices
– visões, etc
• DML (Data Manipulation Language)
– consultas
– inserção, atualização e remoção de tuplas
– controle de transações
– embutida vs interativa
• DCL (Data Control Language)
– segurança
– integridade

Désiré NGuessan 97

Componentes do SQL
SQL DDL – Criando Tabelas
CREATE TABLE <nome-tabela>
(<nome-atributo> <tipo> [NOT NULL
[PRIMARY KEY]]
[,<nome- atributo > <tipo> [NOT NULL
[UNIQUE]]]...
)

Désiré NGuessan 98

Componentes do SQL
SQL DDL – Criando Tabelas
Character Varying (x)
CREATE TABLE Cliente1 [VARCHAR] – armazena
( exatamente o número de
CodCliente int NOT NULL, caracteres digitados
Nome varchar(50),
CPF varchar(11) NULL,
DataCadastro datetime NOT NULL DEFAULT (getdate()),
Cidade varchar(20) NULL,
UF char(2) NULL,
País varchar(20) DEFAULT ('Brasil')
)
• NULL ou NOT NULL, indicando se esta permite
valores nulos ou não.

Désiré NGuessan 99

33
Componentes do SQL
SQL DDL – Removendo Tabelas

DROP TABLE <nome-tabela>

Drop Table Cliente1

Désiré NGuessan 100

Componentes do SQL
SQL DDL – Alterando Tabelas

ALTER TABLE [banco_dados.[owner.]]nome_tabela


{
[ALTER COLUMN nome_coluna
{novo_tipo_de_dados [(precisão[, escala])]
| ADD {nome_coluna dados_coluna
| [WITH CHECK | WITH NOCHECK]}

Désiré NGuessan 101

Componentes do SQL
SQL DDL – Alterando Tabelas

ALTER TABLE [banco_dados.[owner.]]nome_tabela


{
[ALTER COLUMN nome_coluna
{novo_tipo_de_dados [(precisão[, escala])]
| ADD {nome_coluna dados_coluna
| [WITH CHECK | WITH NOCHECK]}

Désiré NGuessan 102

34
Componentes do SQL
SQL DDL – Alterando Tabelas
ALTER TABLE Cliente
ADD ender varchar(50) NULL

ALTER TABLE Cliente


ALTER COLUMN CIDADE VARCHAR (25)

Désiré NGuessan 103

Componentes do SQL
SQL DDL – Alterando Tabelas
ALTER TABLE Cliente
ADD ender varchar(50) NULL

ALTER TABLE Cliente


ALTER COLUMN CIDADE VARCHAR (25)

Désiré NGuessan 104

DML
Data Manipulation Language
• Inserindo Linhas
– O comando INSERT insere linhas em uma tabela. A forma
mais simples do comando
• INSERT insere somente uma linha , dados os valores.
– Sintaxe
• INSERT [INTO] nome_tabela (colunas)
VALUES (valores)

Désiré NGuessan 105

35
DML
Data Manipulation Language
• Inserindo Linhas
– O comando INSERT insere linhas em uma tabela. A forma
mais simples do comando
• INSERT insere somente uma linha , dados os valores.
– Sintaxe
• INSERT [INTO] nome_tabela (colunas)
VALUES (valores)
Onde:
• nome_tabela é o nome da tabela que deseja incluir os dados.
• colunas são os nomes das colunas da tabela que deseja
acrescentar os dados.
• valores são os conteúdos de cada coluna.

Désiré NGuessan 106

DML
Data Manipulation Language
• Exemplos
– INSERT into Funcionario
values (1, 'Primeiro Funcionário', 2, 122, 234.23,
'01/01/1998', '01/01/1998', 'M')

– INSERT into Funcionario (CodFuncionario, Nome,


CodDepartamento, Sexo,Salario, DataAdmissao) values (2,
'Segundo Funcionário', 1, 'F', 4360.00, '01/01/1996')

• Nesse caso, os nomes das colunas que serão inseridas são


especificados entre parênteses após o nome da tabela. A
ordem não precisa ser a mesma das colunas na tabela. Mas a
ordem dos valores em VALUES corresponde à ordem dos
nomes de colunas informados.

Désiré NGuessan 107

DML
Data Manipulation Language
• Exemplos
• insert INTO Vehiculo
(placa,chassi,motor,cor,codigotipo,codigofilial)
values ('dav002', '00000102','00000303','prata','P2',
'SP18 ‘ )

Désiré NGuessan 108

36
insert INTO Vehiculo
(placa,chassi,motor,cor,codigotipo,codigofilial)
values ('dav002',
'00000102','00000303','prata','P2', 'SP18 ‘ )

Désiré NGuessan 109

DML
Data Manipulation Language
• Excluindo Linhas
– O comando DELETE exclui permanentemente uma ou mais
linhas de uma tabela, baseado em alguma condição.

– Sintaxe
• DELETE FROM nome_tabela WHERE condicao
• Onde:
• nome_tabela é o nome da tabela que deseja excluir os dados.
• condicao é condição para selecionar as dados que deseja
excluir.

Désiré NGuessan 110

DML
Data Manipulation Language
• Excluindo Linhas
– Exemplo
• DELETE from CopiaCliente
where Codigo = 2
• Note que a exclusão não pode ser desfeita.

– Para excluir todas as linhas de uma tabela, existe a opção.


comando DELETE sem condição WHERE:
• DELETE from CopiaCliente

Désiré NGuessan 111

37
delete from vehiculo where
placa ='dav0001'

Désiré NGuessan 112

SQL DML
Data Manipulation Language
• Consulta simples
– O comando SELECT recupera dados de uma ou
mais tabelas. A sua sintaxe mais simples pode ser
resumida da forma:
– Sintaxe Geral:
• SELECT <atributos> [INTO <nova_tabela>]
FROM <relações>
[WHERE <condições>]
[ORDER BY <atributos-ordenacao> [descending]]
[GROUP BY <formato-agrupamento>
[HAVING <condicoes>]]

Désiré NGuessan 113

SQL DML
Data Manipulation Language
• Consulta simples (continuação)
– onde
• A lista_de_colunas especifica quais colunas serão
retornadas como resultado, separadas por vírgulas ou um
asterisco (*) que indica todas as colunas da tabela.
• A cláusula FROM, com uma lista_de_tabelas, especifica
quais tabelas serão consultadas.
• A cláusula WHERE especifica condições que devem ser
satisfeitas pelas linhas das tabelas.
• O comando Select pode ser utilizado para mostrar o
conteúdo de variáveis, valores iterais, etc...

Désiré NGuessan 114

38
SQL DML
Data Manipulation Language
• Consulta simples (continuação)
– Cláusula Where
• condições
– operadores lógicos (AND, OR, NOT), parênteses,
operadores comparadores (<, >, <>, = , etc)
– constantes, atributos, operadores aritméticos
– between (>= and <=)
– LIKE
» % : substitui cadeias de caracteres
» _ : substitui caracteres
– subconsultas

Désiré NGuessan 115

SQL DML
Data Manipulation Language
• Consulta simples (continuação)
– Cláusula order by condições
• ordenação das tuplas resultado em função de um
ou mais atributos
• opcional
• ORDER BY<atr> [<ord>] [,<atr> [<ord>] ...]
– <atr> ::= atributo
– <ord> ::= ASC (default)
DESC
• Ex.: Select * from Compradores order by Nome
DESC

Désiré NGuessan 116

SQL DML

Désiré NGuessan 117

39
SQL DML
Funções Matemáticas
• ABS(valor) retorna o valor absoluto (sem sinal) de um item.
• POWER(valor,p) retorna o valor elevado à potência p.
• ROUND(valor,n) arredonda o valor para n casas decimais.
• SQRT (valor) retorna a raiz quadrada do valor especificado.
• PI valor constante 3.141592563589793

• Por exemplo, para arredondar o valor do preço de cada livro para


duas casas decimais, pode ser feito o seguinte:
– Select price Preço , ROUND(price, 1) "Preço com 1 casa
decimal", title Título from titles

Désiré NGuessan 118

SQL DML

Désiré NGuessan 119

SQL DML
Funções de Manipulação de String
• ASCII(caractere)
– retorna o código ASCII de um caractere.
• CHAR(inteiro)
– retorna o caractere, dado o seu código ASCII
• LOWER(expr)
– converte para minúsculas
• UPPER(expr)
– converte para maiúsculas
• LTRIM(expr)
– retira espaços à esquerda
• RTRIM(expr)
– retira espaços à direita
• REPLICATE(expr, n)
– repete uma expressão n vezes

Désiré NGuessan 120

40
SQL DML
Funções de Manipulação de String
• SUBSTRING(expr,início,tamanho)
– extrai uma parte de uma string desde início e com
tamanho caracteres
• RIGHT(expr,n)
– retorna n caracteres à direita da string
• REVERSE(expr)
– inverte uma string
• CHARINDEX('caractere', expr)
– retorna a posição de um caractere dentro da string
• SPACE(n)
– retorna uma string com n espaços

Désiré NGuessan 121

• Selecione todos os departamentos cujo orçamento


mensal seja maior que 100000. Apresente o Nome de
tal departamento e seu orçamento anual, que será
obtido multiplicando-se o orçamento mensal por 12.

– SELECT DEPNOME, DEPORCA * 12 FROM DEPT


WHERE DEPORCA > 100000;

Désiré NGuessan 122

• Apresente todos os salários existentes na empresa,


porém omita eventuais duplicidades.

• Resp: A cláusula Distinct elimina duplicidades,


significando que somente relações distintas serão
apresentadas como resultado de uma pesquisa.

– SELECT DISTINCT EMPSERV FROM EMP;

Désiré NGuessan 123

41
• Apresente os nomes e funções da cada funcionário
contidos na tabela empresa, porém classificados
alfabeticamente (A..Z) e depois alfabeticamente
invertido (Z..A).

• Resp: A cláusula Order By modificará a ordem de


apresentação do resultado da pesquisa (ascendente ou
descendente).

SELECT EMPNOME, EMPSERV


FROM EMP ORDER BY EMPNOME;

SELECT EMPNOME, EMPSERV


FROM EMP ORDER BY EMPPNOME DESC;

Désiré NGuessan 124

• SELECT EMPNOME, EMPSALA FROM EMP


WHERE EMPSALA BETWEEN 500 AND 1000;

• SELECT EMPNOME, DEPNUME FROM EMP


WHERE DEPNUME IN (10,30);

• SELECT EMPNOME, EMPSERV


FROM EMP
WHERE EMPNOME LIKE 'F%';

• SELECT EMPNOME, EMPSERV


FROM EMP
WHERE EMPCOMI IS NULL;

• O símbolo "%" pode ser usado para construir a pesquisa ("%"


= qualquer sequência de nenhum até vários caracteres).

Désiré NGuessan 125

Operadores Negativos
Operador Descrição
<> diferente
not nome_coluna = diferente da coluna
not nome_coluna > não maior que
not between não entre dois valores
informados
not in não existente numa
dada lista de valores
not like diferente do padrao de
caracteres informado
is not null não é um valor nulo

Désiré NGuessan 126

42
Operadores Negativos
Operador Descrição
<> diferente
not nome_coluna = diferente da coluna
not nome_coluna > não maior que
not between não entre dois valores
informados
not in não existente numa
dada lista de valores
not like diferente do padrao de
caracteres informado
is not null não é um valor nulo

Désiré NGuessan 127

43

Você também pode gostar