INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E EDUCAÇÃO DA BAHIA CAMPUS JEQUIÉ
CURSO TÉCNICO DE INFORMÁTICA MODALIDADE SUBSEQÜENTE
PROF°.: ALEXANDRO DOS SANTOS SILVA BANCO DE DADOS
LISTA DE EXERCÍCIOS 04 - GABARITO
1. Qual dos seguintes termos normalmente NÃO é utilizado quando da abordagem de bancos de dados relacionais? a) Relação ou entidade; b) Tupla; c) Chave primária; d) Classe; e) Atributo. Resp.: item e.
2. Em uma relação de um modelo relacional, uma chave candidata deve possuir quais propriedades? a) Irredutibilidade, apenas;
b) Unicidade, apenas;
c) Unicidade e a irredutibilidade; d) Unicidade e a redutibilidade; e) Redutibilidade, apenas.
Resp.: item c. Uma chave, além de compartilhar da propriedade de unicidade manifestada por superchaves, não admite a remoção de atributos (entre eles que já compõe a referida chave) de modo que a identificação de uma tupla específica em relação às demais permaneça viável.
3. Considere o esquema relacional abaixo: Aluno (matrícula, nome, curso)
Livro (isbn, título, editora) Empréstimo (matrícula, isbn, data)
Qual das afirmações abaixo se encontra correta, a respeito do esquema relacional exposto?
a) O atributo título é uma chave candidata para a relação Livro;
b) O atributo matrícula é uma chave estrangeira para a relação Aluno;
c) Os atributos matrícula e isbn são chave primária para a relação Empréstimo;
d) Diferente tuplas da relação Livro são impossíveis de se distinguir.
Resp.: item c. Sobre o item a, é perfeitamente possível a existência de dois ou mais livros com o mesmo título (vide os diversos catálogos online oferecidos por vários instituições para consulta aos acervos de suas bibliotecas), não havendo aqui, portanto, a propriedade de unicidade. Sobre o item b, o campo de matrícula compõe a chave primária da relação Aluno, ao invés de uma suposta chave estrangeira (lembre-se da notação para descrição
textual de esquemas relacionados demonstrado em sala de aula). Sobre o item d, é possível sim a identificação de tuplas diferentes da relação Livro, através do atributo isbn (motivo pelo qual o mesmo se encontra subblinado).
4. Considere o seguinte contexto: os funcionários de uma empresa podem usar muitos idiomas em qualquer um dentre os muitos projetos em execução; cada projeto dispõe de muitos funcionários com vários idiomas; funcionários chefiam outros funcionários na razão 1:n; dado um projeto, é necessário que se identifique quais funcionários e quais idiomas são usados por eles nesse projeto; além disso, é necessário que se saiba (independentemente do projeto) quem é o chefe de quem. Numa suposta modelagem deste contexto para um modelo relacional, o modelo será constituído de quantas tabelas?
a) Uma tabela; b) Duas tabelas; c) Três tabelas; d) Quatro tabelas; e) Cinco tabelas.
Resp.: item d. Segue o esquema relacional (acrescentam-se aqui alguns atributos além daqueles previstos no contexto relatado):
Funcionário (codFuncionario, nome, codChefe) codChefe referencia Funcionário (codFuncionario)
Idioma (codIdioma, nome) Projeto (codProjeto, nome)
Alocação (codProjeto, codFuncionario, codIdioma) codProjeto referencia Projeto
codFuncionario referencia Funcionario codIdioma referencia Idioma
Convém observar aqui a existência de uma chave primária composta por três atributos, na relação Alocação. A identificação de qual funcionário atua em quais projetos com quais idiomas é viabilizada apenas a partir do uso dos atributos identificadores desses três entes, o que justifica a existência de uma quarta tabela.
5. Por qual denominação é conhecida a restrição de chave estrangeira na qual a operação de exclusão sobre a tabela referenciada se propaga para todas as chaves estrangeiras correspondentes?
b) on update cascade; c) on delete set null; d) on delete cascade; e) on delete set default. Resp.: item d.
6. O princípio da integridade de dados caracteriza-se por condições obrigatórias impostas pelo modelo de banco de dados. Nesse contexto, a restrição de integridade referencial implica em qual das seguintes imposições?
a) Nenhum valor de chave primária pode ser nulo; b) O valor de cada campo deve ser um valor nulo
ou um valor único dentro dos valores permitidos para o campo;
c) Os valores das chaves primárias devem ser atômicos;
d) Uma linha de uma tabela S que se refere à tabela V deve referenciar uma linha existente na tabela V;
e) Uma tabela deve ter pelo menos uma chave. Resp.: item d. Sobre o item a, trata-se de uma restrição de integridade de vazio/nulo (embora alguns SGBDs permitem a implementação de tabelas com chaves primárias cujos campos admitem valores nulos). Sobre o item b, trata-se de uma restrição de integridade de domínio. Sobre o item e, é perfeitamente possível a existência de tabelas que não dispõem de chaves estrangeiras.
7. Considerando o esquema relacional e o estado de relação correspondente abaixo, identifique todas as restrições de integridade violadas em cada uma das operações de atualização abaixo, se houver, e as diferenças maneiras de lidar com essas restrições (sem que haja alteração do esquema relacional).
FUNCIONARIO (Pnome, Minicial, Unome, Cpf, Datanasc, Endereço, Sexo, Salario, Cpf_supervisor, Dnr) Dnr referencia DEPARTAMENTO
Cpf_supervisor referencia FUNCIONARIO (Cpf)
DEPARTAMENTO (Dnome, Dnumero, Cpf_gerente, Data_inicio_gerente) Cpf_gerente referencia FUNCIONARIO
LOCALIZACAO_DEP (Dnumero, Dlocal) Dnumero referencia DEPARTAMENTO
PROJETO (Projnome, Projnumero, Dnum, Projlocal) Dnum, Projlocal referencia DEPARTAMENTO_DEP TRABALHA_EM (Fcpf, Pnr, Horas)
Fcpf referencia FUNCIONARIO Pnr referencia PROJETO
DEPENDENTE (Fcpf, Nome_dependente, Sexo, Datanasc, Parentesco) Fcpf referencia FUNCIONARIO
a) Inserção da tupla <’Roberto’, ‘F’, ‘Santos’, ‘94377554355’, ‘21/06/1972’, ‘Rua Benjamin, 34, Santo André, SP’, M, 58.000, ‘88866555576’, 1> na relação FUNCIONARIO;
Resp.: violação de restrição de integridade de domínio, já que o valor especificado para o atributo de sexo (alfanumérico) deveria ser representado entre aspas simples. Para tratamento da violação, seguem as sugestões:
Rejeição da operação de inserção;
Correção da representação do valor do atributo (ou seja, teríamos a tupla <’Roberto’, ‘F’, ‘Santos’, ‘94377554355’, ‘21/06/1972’, ‘Rua Benjamin, 34, Santo André, SP’, ‘M’, 58.000, ‘88866555576’, 1>), seguido da repetição da execução da operação de inserção.
b) Inserção da tupla <’ProdutoA’, 4, 2, ‘Santo André’> na relação PROJETO;
Resp.: violação de restrição de integridade referencial, já que o departamento (atributo Dnum) ao qual está vinculado o projeto não dispõe de localização na cidade de Santo André (atributo Projlocal), conforme representação gráfica do estado da relação LOCALIZACAO_DEP (relação responsável pelo armazenamento de informações relativas às cidades nas quais estão localizadas os departamentos). O próprio número de departamento especificado (2) inexiste igualmente na relação DEPARTAMENTO. Para tratamento da violação, seguem as sugestões:
Rejeição da operação de inserção;
Alteração dos valores especificados para os atributos Dnum e Projlocal na referida tupla, de forma que tal combinação de valores esteja disponível em alguma linha da relação LOCALIZACAO_DEP (atributos Dnumero e Dlocal, respectivamente), seguido da repetição da execução da operação de inserção. Se os atributos em questão forem opcionais, é possível ainda o uso do valor vazio/nulo.
Resp.: duas violações são aqui registradas, como se segue:
Restrição de integridade de chave, já que existe outra linha em que o valor do atributo Dnumero é 4 (ou seja, já existe um departamento para o qual adota-se tal código);
Restrição de integridade referencial, referente ao valor especificado para o atributo Cpf_gerente, já que o valor em questão não aparece em nenhuma linha da relação FUNCIONARIO (atributo Cpf).
Para tratamento das violações, seguem as sugestões:
Rejeição da operação de inserção;
Alteração dos valores especificados para os atributos Dnumero e Cpf_gerente na referida tupla, de forma que o valor informado para o atributo Dnumero (número de departamento) não esteja em uso em nenhuma outra linha da própria relação DEPARTAMENTO, ao passo que o novo valor informado para o atributo Cpf_gerente conste em alguma linha da relação FUNCIONARIO (ou ainda o valor vazio/nulo, se o atributo Cpf_gerente for opcional); segue-se a isso a repetição da execução da operação de inserção.
d) Inserção da tupla <’67767898944’, NULL, ’40,0’> na relação TRABALHA_EM; Resp.: duas violações são aqui registradas, como se segue:
Restrição de integridade referencial, referente ao valor especificado para o atributo Fcpf, já que o valor em questão não aparece em nenhuma linha da relação FUNCIONARIO (atributo Cpf);
Restrição de integridade de vazio/nulo, com a especificação do valor vazio/nulo para o atributo Pnr (lembre-se de que atributos que compõe chaves primárias normalmente são obrigatórios).
Para tratamento das violações, seguem as sugestões:
Rejeição da operação de inserção;
Alteração dos valores especificados para os atributos Fcpf e Pnr na referida tupla, de forma que o valor informado para o atributo Fcpf (CPF do funcionário) conste em alguma linha da relação FUNCIONARIO, ao passo que o novo valor informado para o atributo Pnr conste igualmente em alguma linha da relação PROJETO; segue-se a isso a repetição da execução da operação de inserção.
e) Inserção da tupla <’45345345376’, ‘João’, ‘M’, ‘12/12/1990’, ‘Marido’> na relação DEPENDENTE;
Resp.: violação de restrição de integridade referencial, já que o CPF do funcionário informado (atributo Fcpf) ao qual está vinculado o dependente não aparece em nenhuma linha da relação FUNCIONARIO (atributo Cpf). Para tratamento da violação, seguem as sugestões:
Rejeição da operação de inserção;
Alteração do valor especificado para o atributo Fcpf na referida tupla, de forma que tal valor conste em alguma linha da relação FUNCIONARIO (atributo Cpf), seguido da repetição da execução da operação de inserção.
f) Exclusão de tuplas da relação TRABALHA_EM com Fcpf = ‘33344555587’;
Resp.: nenhuma violação constatada. Convém observar que tal relação não é referenciada em nenhuma outra relação (se assim o fosse, violações de restrição de integridade referencial seriam possíveis).
g) Exclusão de tupla da relação FUNCIONARIO com Cpf = ‘98765432168’;
Resp.: violação de restrição de integridade referencial, já que o CPF do funcionário especificado (atributo Cpf) é referenciado em outras relações, a saber:
Relação TRABALHA_EM (atributo Fcpf): estão registradas alocações do referido funcionário nos projetos intitulados “Reorganização” e “Novos benefícios”.
Relação DEPENDENTE (atributo Fcpf): dependente de nome “Antônio”. Para tratamento da violação, seguem as sugestões:
Rejeição da operação de exclusão;
Exclusão das linhas referenciadas nas relações TRABALHA_EM e DEPENDENTE (conforme discriminado anteriormente), seguida da repetição de exclusão da tupla da relação FUNCIONARIO com Cpf = ‘98765432168’.
h) Exclusão de tupla da relação PROJETO com Projnome = ‘ProdutoX’;
Resp.: violação de restrição de integridade referencial, já que o projeto especificado, intitulado “ProdutoX” (atributo Projnome) aparece em algumas linhas da relação TRABALHA_EM (atributo Pnr). Para tratamento da violação, seguem as sugestões:
Exclusão das linhas referenciadas na relação TRABALHA_EM (conforme discriminado anteriormente), seguida da repetição de exclusão da tupla da relação PROJETO com Projnome = ‘ProdutoX’.
i) Modificação de valor dos atributos Cpf_gerente e Data_inicio_gerente em tuplas da relação DEPARTAMENTO com Dnumero = 5 para ‘12345678966’ e ‘01/10/2007’, respectivamente;
Resp.: nenhuma violação constatada.
j) Modificação de valor do atributo Cpf_supervisor em tuplas da relação FUNCIONARIO com Cpf = ‘99988777767’ para ‘94377554355’;
Resp.: violação de restrição de integridade referencial, já que o novo valor especificado para o atributo Cpf_supervisor (‘94377554355’) não aparece em nenhuma outra linha da própria relação FUNCIONARIO (ou seja, não existe nenhum funcionário com o número de CPF 94377554355). Para tratamento da violação, seguem as sugestões:
Rejeição da operação de modificação;
Alteração do valor especificado para o atributo Cpf_supervisor, de forma que o mesmo conste em alguma outra linha da própria relação FUNCIONARIO (atributos Cpf), seguido da repetição da execução da operação de modificação. Se o atributo em questão for opcional, é possível ainda o uso do valor vazio/nulo. k) Modificação de valor do atributo Horas em tuplas da relação TRABALHA_EM com Fcpf = ‘99988777767’ e
Pnr = 10 para ‘5,0’.
Resp.: nenhuma violação constatada.
Observação: para expressão de valores em domínios alfanuméricas e relacionados à datas, considere válidos apenas aqueles expressos entre aspas simples, quando da identificação das restrições de integridade violadas; para valores numéricos, não é requerido o uso de aspas simples ou duplas, bem como adota-se como separador decimal o símbolo de vírgula e como separador de milhares o símbolo ponto. Sobre o atributo Cpf na relação FUNCIONARIO, assuma, excepcionalmente, que o mesmo esteja associado a um domínio alfanumérico, apesar dos valores em uso (conforme estado da relação) conterem apenas dígitos; aplica-se o mesmo princípio para os atributos que referenciam tal campo (chaves estrangeiras).