40
Banco de Dados Aula 7 - Prof. Bruno Moreno 13/09/2011

Banco de Dados - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/05/BD_Aula7.pdf · Banco de Dados Aula 7 - Prof. Bruno Moreno 13/09/2011. MODELO RELACIONAL Banco de

  • Upload
    lamdang

  • View
    219

  • Download
    0

Embed Size (px)

Citation preview

Banco de Dados

Aula 7 - Prof. Bruno Moreno

13/09/2011

MODELO RELACIONALBanco de Dados I

21:24

Restrições de chave

• Chave candidata

– É uma superchave com uma propriedade adicional

21:24

Uma chave tem que ser

mínima!

Restrições de chave

• Chave candidata

21:24

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}

SK2 = {Time1, Time2, Dia, Horário}

SK3 = {Time1, Dia, Horário, Placar}

SK4= {Time2, Dia, Horário, Placar}

SK5= {Time1, Dia, Horário}

SK6= {Time2, Dia, Horário}

Restrições de chave

• Chave candidata

21:24

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}

SK2 = {Time1, Time2, Dia, Horário}

SK3 = {Time1, Dia, Horário, Placar}

SK4= {Time2, Dia, Horário, Placar}

SK5= {Time1, Dia, Horário}

SK6= {Time2, Dia, Horário}

Chaves candidatas

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

21:24

Propriedade das superchaves

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 identificartuplas na relação

21:25

Chave Primária

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)

21:25

20/02/1985São Diego 310/3401427Maria

03/07/1976Capote Valente, 3502467Vânia

Rua das Flores, 210

Endereço

12/11/198001035Renata

DataNascCPFNome

Aluno

Qual(is) atributo(s) representam unicamente uma tupla?

Chave Primária (PK)

21:25

20/02/1985São Diego 310/3401427Maria

03/07/1976Capote Valente, 3502467Vânia

Rua das Flores, 210

Endereço

12/11/198001035Renata

DataNascCPFNome

Aluno

Qual(is) atributo(s) representam unicamente uma tupla?

Aluno(CPF, Nome, Endereço, DataNasc)

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 chaveprimária

21:25

347685784432

693529876987

701034263890

CPF

20/02/198501427Maria

03/07/197602467Vânia

12/11/198001035Renata

DataNascMatrículaNome

Aluno

Chave Candidata

• Possui as mesmas propriedades que a chaveprimária

21:25

347685784432

693529876987

701034263890

CPF

20/02/198501427Maria

03/07/197602467Vânia

12/11/198001035Renata

DataNascMatrículaNome

Aluno

Chaves candidatas

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

21:25

347685784432

693529876987

701034263890

CPF

20/02/198501427Maria

03/07/197602467Vânia

12/11/198001035Renata

DataNascMatrículaNome

Aluno

Chave Primária 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

1

2

1

Curso

347685784432

693529876987

701034263890

CPF

01427Maria

02467Vânia

01035Renata

MatrículaNome

Chave Estrangeira

21:25

1

2

1

Curso

347685784432

693529876987

701034263890

CPF

01427Maria

02467Vânia

01035Renata

MatrículaNome

Chave Estrangeira

Aluno

Ciências Jurídicas e Sociais

Administração de Empresas

Ciência da Computação

Descrição

3

2

1

Codigo

1

2

1

Curso

347685784432

693529876987

701034263890

CPF

01427Maria

02467Vânia

01035Renata

MatrículaNome

Chave Estrangeira

21:25

Aluno

Curso

Chave Estrangeira

21:25

Aluno(CPF, Nome, Endereço, DataNasc, #Curso)‏

Curso (Codigo, Descrição)‏

Chave Estrangeira

21:25

Funcionário (CodFunc, Nome, Endereço, #Cod_Chefe)‏

2Carlos Gomes, 50Carla4

1

3

4

Cod_Chefe

Anita Garibaldi, 12

Oscar Freire, 10

Av. Joaquim 2

Endereço

Pedro3

João2

Maria1

NomeCodFun

Restrições sobre valores NULL

• Especifica se valores NULL são permitidos

21:25

NOT NULL 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

21:25

Nome Matrícula CPF Curso

João 123456 11222333443 1

José 654321 44383799092 1

Maria 123123’ 73248762347 2

Curso Nome

1 Ciência da Computação

2 Ecologia

3 Contabilidade

Se excluir o curso 1, o que o SGBD deve fazer?

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

21:25

Nome Matrícula CPF Curso

João 123456 11222333443 1

José 654321 44383799092 1

Maria 123123’ 73248762347 2Curso 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

21:25

Nome Matrícula CPF Curso

João 123456 11222333443 1

José 654321 44383799092 1

Maria 123123’ 73248762347 2Curso Nome

1 Ciência da Computação

2 Ecologia

3 Contabilidade

Ao tentar excluir o curso 1...

A exclusão não é aceita porque ainda existem tuplas em ALUNO

que referenciam CURSO

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

21:25

Nome Matrícula CPF Curso

João 123456 11222333443 1

José 654321 44383799092 1

Maria 123123’ 73248762347 2Curso Nome

1 Ciência da Computação

2 Ecologia

3 Contabilidade

Ao tentar excluir o curso 1...

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

21:25

Nome Matrícula CPF Curso

João 123456 11222333443 1

José 654321 44383799092 1

Maria 123123’ 73248762347 2Curso Nome

1 Ciência da Computação

2 Ecologia

3 Contabilidade

Ao tentar excluir o curso 1...

As tuplas que refereciam CURSO com id = 1 são excluídas

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

21:25

Nome Matrícula CPF Curso

João 123456 11222333443 1

José 654321 44383799092 1

Maria 123123’ 73248762347 2Curso Nome

1 Ciência da Computação

2 Ecologia

3 Contabilidade

Ao tentar excluir o curso 1...

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

21:25

Nome Matrícula CPF Curso

João 123456 11222333443 NULL

José 654321 44383799092 NULL

Maria 123123’ 73248762347 2Curso Nome

1 Ciência da Computação

2 Ecologia

3 Contabilidade

Ao tentar excluir o curso 1...

Valor é modificado para NULL

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

21:25

Nome Matrícula CPF Curso

João 123456 11222333443 1

José 654321 44383799092 1

Maria 123123’ 73248762347 2Curso Nome

1 Ciência da Computação

2 Ecologia

3 Contabilidade

Ao tentar excluir o curso 1...

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

21:25

Nome Matrícula CPF Curso

João 123456 11222333443 3

José 654321 44383799092 3

Maria 123123’ 73248762347 2Curso Nome

1 Ciência da Computação

2 Ecologia

3 Contabilidade

Ao tentar excluir o curso 1...

Valor é modificado para 3, por exemplo

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 chavesestrangeiras

2) Explique o que deve ser feito pelo SGBD paragarantir a integridade referencial nasseguintes 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