Banco de Dados I
Modelo Relacional
2
ConteúdoParada técnica
...onde estamos...de onde viemos..
e para onde vamos.. Modelo Relacional
Características do Modelo RelacionalRegras de Integridade Regras de Mapeamento
Exercício
3
Parada técnica Ciclo de vida do Proj. de Banco de
Dados ou Engenharia de Software
Projeto Conceitual
(Análise) Projeto Lógico (Projeto)
Projeto Físico (Implementação)
4
Parada técnica Ciclo de vida do Proj. de Banco de
Dados ou Engenharia de SoftwareProjeto Conceitual
(Análise)
(de onde viemos) Projeto Lógico
(Projeto)
(estamos aqui) Projeto Físico (Implementação)
(para onde vamos)
5
Parada técnicaMundo Real
Diag. Entidade Relacionamento(de onde viemos)
Modelode
Dados
Diagrama Relacional(estamos aqui)
Modelo Lógico
SQL(para onde vamos)
Projeto Conceitual
Projeto Lógico
Projeto Físico
6
Projeto Lógico
Diag. R(Modelo Relacional)
Modelode
Dados
Projeto Lógico
O esquema Conceitual de alto nível- DER - é mapeado para modelo de implementação de dados do SGBD que será usado, no caso, modelo Relacional.
Conceitos:SGBDRelacional •notação gráfica
Diag. E-R( Modelo ER)
Modelo Lógico
7
Projeto LógicoBaseado no Modelo* Relacional .
Conjunto de 12 Regras, estabelecida por Edgard F Codd, 1977.
Estas regras é que definem se um sistema pode ser chamada de Relacional ou não
Toda coluna deve somente conter valores atômico (regra)
Baseado na teoria de Conjunto: Álgebra Relacional
Os modelos comerciais: Rede, Hieráquico, Relacional, Relacional Extendido, OO
* O modelo é o que define as características e funcionalidades que o SGBD oferece
8
Modelo Relacional: regrasRegras de Integridade
Integridade identidade: chave primária: – única e– não nula ... identifica um único elemento num
conjunto
Integridade referencial: chave estrangeira: – pode ser nula– ou existir uma chave primária
9
Regras de Mapeamento
Transformação do DER em DR
Clientes
codigo nome fone*
Pedidos
número data
possui N1
Tabelas Tabelas
10
Entidade: ?
Clientes
codigo nome fone
11
1. Entidade:
Toda entidade vira tabela seus atributos serão colunas, cuidado com os atributos
composto* e multivalorado** atributo determinante = chave primária segue a mesma notação
Clientes
codigo nome foneClientes
codigo nome fone
521001 José 123333
521002 Ana 85256
Clientes
codigo nome fone
DER DR
12
2. Relacionamento
Clientes
codigo nome fone
Pedidos
número data
possui N1
O que determina a estrutura de uma tabela:• cardinalidade• restrições de totalidade no relacionamento
13
Cardinalidade: 1:1
Motorista
codigo nome fone*
CNHabilitação
número data_expedição
possui 11
m1 cnh1
m2 cnh2
m3 cnh3
m4 cnh4
14
Cardinalidade: 1:1
Motorista
codigo nome fone
CNHabilitação
número data_expedição
possui 11
Motorista
codigo nome fone
CNHabilitação
número data_expedição
DER
DRcódigo
(motorista)
CNHHabilitaçãonumero data_expedicao
521001 12/05/2000
521002 15/07/1974
Motoristacodigo nome fone
521001 José 123333
521002 Ana 85256
cnh (CE)
521001
521002
Motorista (CE)
15
Cardinalidade: 1:1
Motorista
codigo nome fone*
CNHabilitação
número data_expedição
possui 11
Estratégias:1. Chave estrangeira: Qualquer dos lados pode absorver a chave estrangeira, preferência do lado da totalidade, garante nunca vazia. ( em CNH)2. Agrupar Tabelas: quando os dois relacioanmentos são totais.3. Criar uma relação para o relacionamento, com cada uma das chaves
•Evitar colocar a chave em ambos os lados, dificuldade no gerenciamento
16
Cardinalidade: 1:N
Departamento
codigo nome ramall
possui N1
d1 f1
d2 f2
d3 f31
f4
Funcionário
codigo nome salario
17
Cardinalidade: 1:N
Departamento
codigo nome ramall
possui N1 Funcionário
codigo nome salario
Duas alternativas:1: Departamento ter várias colunas para indicar os funcionários. ???
2: Funcionário ter uma coluna adicionar para indicar o departamento???
18
Cardinalidade: 1:N
Departamento
codigo nome ramall
possui N1 Funcionário
codigo nome salario
Departamento
codigo nome ramall
Funcionário
codigo nome salario
codigo
(departamento)
DER
DR
departamento(CE)
19
Cardinalidade: 1:N
Departamento
codigo nome ramall
possui N1 Funcionário
codigo nome salario
Alternativas:2: Funcionário ter uma coluna adicionar para indicar o departamento:
o lado n absorve o lado 1
20
Cardinalidade: 1:N
Particularidade:1. Quando não há totalidade, pode-se criar uma tabela para representar o relacionamento:• vantagem:
não terá coluna nula para representar informação ganho de desempenho em determinadas consultas
• desvantagem: uma tabela a mais perda de desempenho na consultas (join)
2. Atributos do relacionamento?
Sócio
codigo nome ramall
aluga N1 Fita
codigo dt_aquisiçãodt_retradadt_prov_dev
21
Cardinalidade: N:N
Peças
codigo descrição preço
Fornecedores
codigo nome
possui NN
p1 f1
p2 f2
p3 f31
f4
CGC*
22
Cardinalidade: N:N
Peças
codigo descrição preço
Fornecedores
codigo nome
possui NN
CGC*
Peças
codigo descrição preço
Fornecedores
codigo nome CGC*
Possui codigo(fornecedor)
codigo(peca)
DER
DR
peca(CE) fornecedor(CE)
23
Cardinalidade: N:N
Peças
codigo descrição preço
Fornecedores
codigo nome CGC*
Possui codigo(fornecedor)
codigo(peca)
DR
Pecas Posssui Fornecedores pc forn01 porca 1,0 01 01 01 Rei da Porca02 parafuso 0,5 02 01 02 Rei do Parafuso03 prego 0,1 01 02 02 02 03 01
peca(CE) fornecedor(CE)
24
Cardinalidade: N:N
Peças
codigo descrição preço
Fornecedores
codigo nome
possui NN
CGC*
Sempre gera tabela, novo símbolo para indicar que a tabela é originada de um relacionamento.
Os atributos do relacionamento se mantém na tabela do relacionamento.
As chaves primárias é no mínimo a combinação da chaves estrangeiras, e dependendo do negócio, é mais algum outra atributo.
25
Restrição de Totalidade
Indica se uma determinada chave estrangeira poderá ser nula ou nãoTotalidade indica que a chave estrangeira não poderá ser NULAOu seja, o codigo de departamento em funcionário deverá ser definido como nunca receber um valor NULO
Departamento
codigo nome ramall
possui N1 Funcionário
codigo nome salario
26
Unário ou Auto-relacionamento
DER 1Funcionário
codigo nome salario
chefia
N
subordinado
superior
27
Unário ou Auto-relacionamento
• O determina é a cardinalidade, portanto neste caso a tabela Fucnionário ganha uma nova coluna com o nome do papel (superior).• Daí a importância dos nomes dos papéis nos auto-relacionamentos.
1Funcionário
codigo nome salario
chefia
N
subordinado
superior
1Funcionário
(superior)codigo
codigo nome salario superior (CE)
DER DR
28
Relacionamento: ternário ou n-ário
Funcionário
codigo nome salario
LinguagemPro
codigo nome
Projeto
codigo nome
participa NN
Ndescrição
DER
29
Relacionamento: ternário ou n-ário
LinguagemPro
codigo nome
Projeto
codigo nome
codigocodigo
descrição
participa(linguagem)
Funcionário
codigo nome salario
codigo
(projeto)
(funcionário)
linguagem(CE)
funcionário(CE)
projeto(CE)
• Relacionamentos ternários ou de grau maior (n-ários), sempre geram tabela. • A chave primária desta nova tabela é a combinação de todas as chaves estrangeiras.• Os atributos que existirem nete relacionamento mantém nesta tabela
DR
30
Atendimento
Agregação
nome
Medico
codigo nome especialidade
Pacienteatende NN
gera
Exame
codigo preço
N
N
codigo nome nacimento
31
Agregação
Medico
codigo nome especialidade
Paciente
codigo nome nacimento
nome
Exame
codigo preço
atendecodigo
(medico)
geramedico (CE)
exame (CE)
paciente (CE)
codigo(paciente)
medico (CE) paciente (CE)
codigo (exame)
medico,paciente
(medico, paciente)
32
GeneralizaçãoGeneralização
Contanumerosaldo
Conta_Poupança
juros dt_niv
Conta_Corrente
limite tarifa
33
GeneralizaçãoGeneralizaçãoConta
numerosaldo
Conta_Poupança
juros dt_niv
Conta_Corrente
limite tarifa
numeronumero (numero)(numero)
numero (CE) numero (CE)
• As Entidades filhas recebem a chave primária da entidade pai
34
GeneralizaçãoGeneralizaçãocuidadoscuidados
Deleção/remoção remover um elemento da classePai implica
em remover um elemento da classeFilha (total), vários (sobreposto) ou nenhum (parcial)
inserção na classePai implica em incluir em 1(total e não sobreposto) na classeFilha ou mais de um (sobreposição)
35
Atributo Multivalorado
Clientes
codigo nome fone*
Clientescodigo nome fone
521001 José 123333 54321 432211
521002 Ana 85256 , 4342423
Atributos atômico
36
Atributo Multivalorado
Clientes
codigo nome fone*
PossuiClientes
codigo nome fone
codigo(cliente)
Possuicliente fone
521001 325144
521002 01997877
37
Entidade Fraca
Funcionário
codigo nome endereço
possui N1 Dependente
nome data_nas
Funcionário
codigo nome endereço
Dependente
funcionário (CE) nome data_nas
codigo
(funcionário)
DR
DER
Chave estrangeira na tabela Dependente: funcionárioChave Primaria na tabela Dependente: funcionário e nome
38
Descrição da Tabela Nome_da_Tabela
nome_col1 nome_col2 nome_colN
tipo Chave (CP/CE)Nulo (NN)tipo da coluna*tamanhoexemplo
* Tipos: numérico, caracter, data
39
Exercício
1. Locadora de Vídeo (Mapeamento)
2. João de Barro (Mapeamento)3. Exercício 4 da prova
(Mapeamento)
40
FIM!!!!
41
Próxima aula
42
Bibliografia 1. ELMASRI, R e NAVATHE S. Fundamentos de Sistemas de Banco
de Dados. 3 ed. Rio de Janeiro: LTC 2002. Capítulo 7 2. MACHADO, Felipe Nery Rodrigues, ABREU, Maurício Pereira de.
Projetos de Banco de Dados: uma visão prática. 4ed. São Paulo: Érica, 1998. 298p. Capítulo 13
3. KORTH, Henry F. , Silberschatz , Abraham, Sistemas de Banco de Dados. 3ed. São Paulo: Makron Books 1999. 806p. Capítulo 2 – tópico 2.9