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