Banco de Dados
Aula 7 - Prof. Bruno Moreno
13/09/2011
Banco de Dados I
MODELO RELACIONAL
21:24
Restrições de chave
• Chave candidata
– É uma superchave com uma propriedade adicional
Uma chave
tem que ser
mínima!
21:24
Restrições de chave
• Chave candidata
Jogo
Time1
Time2
Dia
Horário
Placar
Botafogo-PB
Treze
10/10/10
20:00
2x0
Botafogo-PB
Treze
10/10/11
20:00
2x2
SK1 = {Time1, Time2, Dia, Horário, Placar} SK4= {Time2, Dia, Horário, Placar}
SK2 = {Time1, Time2, Dia, Horário}
SK5= {Time1, Dia, Horário}
SK3 = {Time1, Dia, Horário, Placar}
SK6= {Time2, Dia, Horário}
21:24
Restrições de chave
• Chave candidata
Jogo
Time1
Time2
Dia
Horário
Placar
Botafogo-PB
Treze
10/10/10
20:00
2x0
Botafogo-PB
Treze
10/10/11
20:00
2x2
SK1 = {Time1, Time2, Dia, Horário, Placar} SK4= {Time2, Dia, Horário, Placar}
SK2 = {Time1, Time2, Dia, Horário}
SK5= {Time1, Dia, Horário}
SK3 = {Time1, Dia, Horário, Placar}
SK6= {Time2, Dia, Horário}
Chaves candidatas
21:24
Restrições de chave
• Propriedades de uma chave candidata
(1) Duas tuplas distintas, em qualquer estado da
relação, não podem ter valores idênticos para
todos os atributos chave
(2) Ela é uma superchave mínima
Propriedade das superchaves
21:24
Restrições de chave
• O esquema de uma relação pode ter mais do
que uma chave candidata
21:24
Placa e Numero_chasse são chaves candidatas de CARRO
Restrições de chave
• Deve-se escolher uma chave candidata como
a chave que será utilizada para identificar
tuplas na relação
Chave Primária
21:25
Chave Alternativa
Revisando: chaves
• Conjunto de um os mais atributos de uma
relação
– Chave Primária (primary key) – PK
– Chave Candidata
– Chave Alternativa
– Chave Estrangeira (foreign key) - FK
21:25
Chave Primária (PK)
• Conjunto de atributos que identifica
unicamente uma tupla em uma relação
• Unicidade de valores na coluna que compõe a
chave
21:25
Chave Primária (PK)
Aluno
Nome
Renata
Vânia
Maria
CPF
01035
02467
01427
Endereço
Rua das Flores, 210
Capote Valente, 35
São Diego 310/34
DataNasc
12/11/1980
03/07/1976
20/02/1985
Qual(is) atributo(s) representam unicamente uma tupla?
21:25
Chave Primária (PK)
Aluno
Nome
Renata
Vânia
Maria
CPF
01035
02467
01427
Endereço
Rua das Flores, 210
Capote Valente, 35
São Diego 310/34
DataNasc
12/11/1980
03/07/1976
20/02/1985
Qual(is) atributo(s) representam unicamente uma tupla?
Aluno(CPF, Nome, Endereço, DataNasc)
21:25
Chave Primária (PK)
• PK Composta
• Exemplo
– Minimundo: “Um funcionário pode estar em mais
de um projeto”
Alocação (Cod_Projeto, Cod_Func, DataIni, Tempo)‫‏‬
21:25
Chave Primária (PK)
• PK Composta
• Exemplo
– Minimundo: “Um funcionário pode estar em mais
de um projeto”
Alocação (Cod_Projeto, Cod_Func, DataIni, Tempo)‫‏‬
21:25
Chave Candidata
• Possui as mesmas propriedades que a chave
primária
Aluno
Nome
Renata
Vânia
Maria
21:25
Matrícula
CPF
01035
701034263890
02467
693529876987
01427
347685784432
DataNasc
12/11/1980
03/07/1976
20/02/1985
Chave Candidata
• Possui as mesmas propriedades que a chave
primária
Aluno
Nome
Renata
Vânia
Maria
Matrícula
CPF
01035
701034263890
02467
693529876987
01427
347685784432
Chaves candidatas
21:25
DataNasc
12/11/1980
03/07/1976
20/02/1985
Qual chave candidata
escolher para se tornar
chave primária?
21:25
Chave Primária
• Escolhe-se aquela candidata com o menor
número de caracteres ou que esteja mais de
acordo com as regras de negócio
Aluno
Nome
Renata
Vânia
Maria
21:25
Matrícula
CPF
01035
701034263890
02467
693529876987
01427
347685784432
Chave Primária
DataNasc
12/11/1980
03/07/1976
20/02/1985
Chave Alternativa
Chave Estrangeira
• Foreign Key (FK)‫‏‬
• Atributo(s) de uma relação, cujos valores
devem obrigatoriamente aparecer na chave
primária de outra relação
– A relação pode se auto-referenciar
• Implementa o relacionamento em um BD
relacional
21:25
Chave Estrangeira
21:25
Nome
Matrícula
CPF
Curso
Renata
01035
701034263890
1
Vânia
Maria
02467
01427
693529876987
347685784432
2
1
Chave Estrangeira
Aluno
Nome
Matrícula
CPF
Renata
01035
701034263890
1
Vânia
Maria
02467
01427
693529876987
347685784432
2
1
Chave Estrangeira
21:25
Curso
Chave Estrangeira
Aluno Nome
Renata
Vânia
Maria
Curso Codigo
21:25
Matrícula
01035
02467
01427
CPF
701034263890
693529876987
347685784432
Descrição
1
Ciência da Computação
2
Administração de Empresas
3
Ciências Jurídicas e Sociais
Curso
1
2
1
Chave Estrangeira
Aluno(CPF, Nome, Endereço, DataNasc, #Curso)‫‏‬
Curso (Codigo, Descrição)‫‏‬
21:25
Chave Estrangeira
Funcionário (CodFunc, Nome, Endereço, #Cod_Chefe)‫‏‬
CodFun Nome
Endereço
1
Maria Av. Joaquim 2
21:25
Oscar Freire, 10
Cod_Chefe
4
2
João
3
Pedro Anita Garibaldi, 12
1
4
Carla
2
Carlos Gomes, 50
3
Restrições sobre valores
NULL
• Especifica se valores NULL são permitidos
NOT NULL
21:25
PERMITE NULL!
Operações de atualização
• Operações do modelo relacional são
categorizadas em recuperações e atualizações
• Operações básicas que podem mudar os
estados das relações no banco de dados:
– Inserir
– Excluir
– Alterar (ou Modificar)
21:25
Operação INSERIR
• Oferece uma lista de valores de atributo para que
uma nova tupla t possa ser inserida em uma
relação R
• Pode violar quatro tipos de restrições
–
–
–
–
Domínio: valor não é do domínio
Chave: valor já existe
Entidade: chave primária é nula
Referencial: valor de FK refere-se a tupla inexistente
• Se uma inserção violar uma ou mais restrições
– A opção padrão é rejeitar a inserção
21:25
Operação EXCLUIR
• Pode violar apenas a integridade referencial
– Se a tupla que está sendo excluída for
referenciada por chaves estrangeiras de outras
tuplas
Nome Matrícula
CPF
Curso
João
123456
11222333443
1
José
654321
44383799092
1
Maria
123123’
73248762347
2
Se excluir o curso 1, o que o
SGBD deve fazer?
21:25
Curso
Nome
1
Ciência da Computação
2
Ecologia
3
Contabilidade
Operação EXCLUIR
•
•
•
•
RESTRICT: rejeita exclusão
CASCADE: propaga a exclusão para referências
SET NULL: Modifica valores para NULL
SET DEFAULT: Modifica para valor específico
Nome Matrícula
CPF
Curso
João
123456
11222333443
1
José
654321
44383799092
1
Maria
123123’
73248762347
2
21:25
Curso
Nome
1
Ciência da Computação
2
Ecologia
3
Contabilidade
Operação EXCLUIR
•
•
•
•
RESTRICT: rejeita exclusão
CASCADE: propaga a exclusão para referências
SET NULL: Modifica valores para NULL
SET DEFAULT: Modifica para valor específico
Nome Matrícula
CPF
Curso
João
123456
11222333443
1
José
654321
44383799092
1
Maria
123123’
73248762347
2
A exclusão não é aceita porque
ainda existem tuplas em ALUNO
que referenciam CURSO
21:25
Ao tentar excluir o
curso 1...
Curso
Nome
1
Ciência da Computação
2
Ecologia
3
Contabilidade
Operação EXCLUIR
•
•
•
•
RESTRICT: rejeita exclusão
CASCADE: propaga a exclusão para referências
SET NULL: Modifica valores para NULL
SET DEFAULT: Modifica para valor específico
Nome Matrícula
CPF
Curso
João
123456
11222333443
1
José
654321
44383799092
1
Maria
123123’
73248762347
2
21:25
Ao tentar excluir o
curso 1...
Curso
Nome
1
Ciência da Computação
2
Ecologia
3
Contabilidade
Operação EXCLUIR
•
•
•
•
RESTRICT: rejeita exclusão
CASCADE: propaga a exclusão para referências
SET NULL: Modifica valores para NULL
SET DEFAULT: Modifica para valor específico
Nome Matrícula
CPF
Curso
João
123456
11222333443
1
José
654321
44383799092
1
Maria
123123’
73248762347
2
As tuplas que refereciam CURSO
com id = 1 são excluídas
21:25
Ao tentar excluir o
curso 1...
Curso
Nome
1
Ciência da Computação
2
Ecologia
3
Contabilidade
Operação EXCLUIR
•
•
•
•
RESTRICT: rejeita exclusão
CASCADE: propaga a exclusão para referências
SET NULL: Modifica valores para NULL
SET DEFAULT: Modifica para valor específico
Nome Matrícula
CPF
Curso
João
123456
11222333443
1
José
654321
44383799092
1
Maria
123123’
73248762347
2
21:25
Ao tentar excluir o
curso 1...
Curso
Nome
1
Ciência da Computação
2
Ecologia
3
Contabilidade
Operação EXCLUIR
•
•
•
•
RESTRICT: rejeita exclusão
CASCADE: propaga a exclusão para referências
SET NULL: Modifica valores para NULL
SET DEFAULT: Modifica para valor específico
Nome Matrícula
CPF
Curso
João
123456
11222333443
NULL
José
654321
44383799092
NULL
Maria
123123’
73248762347
2
Valor é modificado para NULL
21:25
Ao tentar excluir o
curso 1...
Curso
Nome
1
Ciência da Computação
2
Ecologia
3
Contabilidade
Operação EXCLUIR
•
•
•
•
RESTRICT: rejeita exclusão
CASCADE: propaga a exclusão para referências
SET NULL: Modifica valores para NULL
SET DEFAULT: Modifica para valor específico
Nome Matrícula
CPF
Curso
João
123456
11222333443
1
José
654321
44383799092
1
Maria
123123’
73248762347
2
21:25
Ao tentar excluir o
curso 1...
Curso
Nome
1
Ciência da Computação
2
Ecologia
3
Contabilidade
Operação EXCLUIR
•
•
•
•
RESTRICT: rejeita exclusão
CASCADE: propaga a exclusão para referências
SET NULL: Modifica valores para NULL
SET DEFAULT: Modifica para valor específico
Nome Matrícula
CPF
Curso
João
123456
11222333443
3
José
654321
44383799092
3
Maria
123123’
73248762347
2
Valor é modificado para 3, por
exemplo
21:25
Ao tentar excluir o
curso 1...
Curso
Nome
1
Ciência da Computação
2
Ecologia
3
Contabilidade
Operação ALTERAR
• Seleciona-se a tupla (ou tuplas) a ser
modificada
• Se o atributo alterado não faz parte de uma
chave primária nem de uma chave estrangeira
– Em geral não causa problemas
• Alterando uma chave primária/estrangeira
– Questões semelhantes ao Inserir/Excluir
– Definir operações: SET NULL, SET CASCADE...
21:25
Exercício
• Considere o seguinte esquema relacional:
– Categoria(CodCategoria, Descrição)‫‏‬
– Cliente (CodCli, Nome, Endereco, CPF,
CodCategoria)‫‏‬
– Funcionário (CodFunc, Nome, CT, CPF, End, Fone)‫‏‬
– Fornecedor (CodFornec, Nome, Cidade)‫‏‬
– Produto (CodProd, CodFornec, Nome, Peso, Valor)‫‏‬
21:25
Exercício
1) Identificar as chaves primárias e chaves
estrangeiras
2) Explique o que deve ser feito pelo SGBD para
garantir a integridade referencial nas
seguintes situações:
a) Uma tupla é excluída na tabela Categoria
b) Uma tupla é alterada na tabela Fornecedor
21:25
Freqüência!
Aula 7 - Prof. Bruno Moreno
13/09/2011
Download

Aula 7 - Bruno Neiva Moreno