Número Aluno: Nome: Instituto Superior Técnico Departamento de Engenharia Informática BASES DE DADOS 2004/05 LEIC e LERCI Tagus Park 18 de Novembro 2004 Duração: 1H15 Versão B Não se esqueçam de identificar todas as folhas Grupo I. Introdução às Bases de Dados 1. (1,5 v) Diga qual a diferença entre nível físico, nível lógico e nível de vista (ou de aplicação) num SGBD relacional. Explique ainda em que consistem a independência lógica e física suportadas também pelos SGBDRs. Nível físico: descreve como os dados são guardados, a estrutura física usada, se os registos estão ordenados ou não, etc. Nível lógico: descreve os dados que são guardados na base de dados e as relações entre eles (esquema lógico). Nível vista: consiste nos programas de aplicação que escondem os detalhes sobre os dados, quer ao nível de segurança quer ao nível de tipos. Independência lógica: o esquema lógico pode ser modificado sem afectar as vistas de utilizador. Independência física: a organização física dos dados pode ser modificada sem alterar o esquema lógico. 1 de 9 Número Aluno: Nome: 2. (1,5v) Explique o que é uma super-chave, uma chave e uma chave candidata no modelo relacional. Exemplifique. Uma chave é o conjunto mínimo de atributos que identificam univocamente um tuplo de uma relação. Ex: Pessoa (id, nome, morada), id é chave (primária) de Pessoa Podem existir várias chaves candidatas que são conjuntos mínimos de atributos que identificam univocamente os tuplos de uma relação; das várias chaves candidatas escolhe-se uma que é a primária Ex: Pessoa (id, bi, nome, morada), id e bi são chaves candidatas Uma super-chave é qualquer conjunto de atributos que contenham uma chave. Ex: {id, nome} é uma super-chave de Pessoa. 2 de 9 Número Aluno: Nome: Grupo II (ER) Considere as seguintes figuras: Figura 1 1. (1v) Considere a figura 1. Assuma que a grande maioria das operações (quer em variedade quer em quantidade) que os programas irão fazer sobre a Base de Dados são de consultas e pesquisas sobre o conceito de “person”, independentemente do facto de estes serem “employee” ou “customer”. Com base neste pressuposto, indique qual o cenário mais adequado à implementação do esquema apresentado. Implementar a generalização em apenas 1 tabela, agregando os conceitos de Person, Employee e Customer Implementar a generalização em 3 tabelas: Person, Employee e Customer Implementar a generalização em 2 tabelas: Employee e Customer Implementar a generalização em 4 tabelas: Person, Employee, Customer e uma quarta a estabelecer as relações entre as anteriores. Nenhuma das hipóteses anteriores. Ambas as alternativas foram consideradas correctas, mas a primeira era mais correcta. 2. (1,5v) Considere a figura 2. O facto da entidade “customer” ter apenas como identificador o atributo “customer-name”, significa que: (indique a afirmação verdadeira) 3 de 9 Número Aluno: Nome: Se uma instância de “customer” tiver o customer-name = “José Martins” (com um espaço entre “José” e “Martins”) e se outra instância tiver customer-name = “José Martins” (com dois espaços entre “José” e “Martins”), então representam o mesmo “customer”. Os valores dos atributos “customer-name”, “customer-street”, “customer-phone” e “customer-city”, em nada contribuem para perceber se se trata do mesmo “customer” ou não. Quando um cliente mudar de nome, por exemplo no casamento, passará necessariamente a ser visto como um novo cliente, distinto do anterior. Se duas instâncias de “customer” tiverem os mesmos valores nos atributos, “customer-street”, “customer-phone”, “customer-city”, então representam o mesmo “customer”. Nenhuma das anteriores é verdadeira 3. (1,5v) Considere a figura 3. O facto da entidade “customer” ter apenas como identificador o atributo “customer-id”, significa que: (indique a afirmação verdadeira. As afirmações são idênticas às da pergunta anterior) Se duas instâncias de “customer” tiverem os mesmos valores nos atributos, “customer-name”, “customer-street”, “customer-phone”, “customer-city”, então representam o mesmo “customer”. Se uma instância de “customer” tiver o customer-name = “José Martins” (com um espaço entre “José” e “Martins”) e se outra instância tiver customer-name = “José Martins” (com dois espaços entre “José” e “Martins”), então representam o mesmo “customer”. Os valores dos atributos “customer-name”, “customer-street”, “customerphone” e “customer-city” em nada contribuem para perceber se se trata do mesmo “customer” ou não. Quando um cliente mudar de nome, por exemplo no casamento, passará necessariamente a ser visto como um novo cliente, distinto do anterior. Nenhuma das anteriores é verdadeira 4 de 9 Número Aluno: Nome: Grupo III (SQL e Álgebra Relacional) 1. (2v) Considere o seguinte esquema relacional: LIVRO(ISBN, TITULO) EDICOES (ISBN, NREDITORA, ANOEDICAO) EDITORAS(NREDITORA, NOME, MORADA) Considere que: 1. EDICOES.ISBN é chave estrangeira para LIVRO.ISBN. 2. EDICOES.NREDITORA é chave estrangeira para EDITORAS.NREDITORA. 3. Não existem NULLS em nenhum dos atributos dos registos destas relações. Indique qual das hipóteses seguinte traduz o resultado da seguinte instrução: SELECT isbn FROM livro WHERE NOT EXISTS ( SELECT * FROM editoras WHERE NOT EXISTS ( SELECT * FROM edicoes WHERE livro.isbn = edicoes.isbn AND editoras.nreditora = edicoes.nreditora ) ) ) Indique a afirmação verdadeira: O isbn dos livros que não existem em nenhuma edição O isbn dos livros que foram editados em todas as edições de pelo menos uma editora. O isbn dos livros que foram editados por todas as editoras Nenhuma das outras 2. (2v) Considere as relações LIVRO, EDICOES e EDITORAS da pergunta anterior. Indique qual das hipóteses seguintes traduz o resultado da seguinte instrução: SELECT anoedicao, count(*) FROM edicoes GROUP BY anoedicao O número de edições feitas em cada ano. A lista das edições feitas em cada ano. Nenhuma das outras 5 de 9 Número Aluno: Nome: 3. (2v) Considere as seguintes tabelas CREATE TABLE Dep ( Nome CHAR(20) NOT NULL, Ndep CHAR(10), Chefe CHAR(10) NOT NULL, PRIMARY KEY (Ndep), FOREIGN KEY (Chefe) REFERENCES Emp) CREATE TABLE Emp ( Nome CHAR(20), Nemp CHAR(10), Ndep CHAR(10), PRIMARY KEY (Nemp)) Indique quais das seguintes frases são verdadeiras (com um V) ou falsas (com um F). Se não souber não responda. V A declaração “PRIMARY KEY(Ndep)” garante que não existem dois tuplos de Dep com valor igual de Ndep V A declaração “PRIMARY KEY(Nemp)” garante que o atributo Nemp tem sempre valor (isto é, nunca é NULL) V A declaração “FOREIGN KEY (Chefe) REFERENCES EMP” garante que todos os valores do atributo Chefe da tabela Dep existem também como valores do atributo Nemp da tabela Emp. F A declaração “FOREIGN KEY (Chefe) REFERENCES EMP” garante que é impossível apagar um tuplo da tabela Dep enquanto existirem tuplos na tabela Emp cujo valor de Ndep corresponda ao valor de Ndep do tuplo a ser apagado. F A declaração “FOREIGN KEY (Chefe) REFERENCES Emp” garante que o atributo Chefe tem sempre valor (isto é, nunca é NULL) 6 de 9 Número Aluno: Nome: 4. (3v) Considere o esquema relacional da pergunta II.1: LIVRO(ISBN, TITULO) EDICOES (ISBN, NREDITORA, ANOEDICAO) EDITORAS(NREDITORA, NOME, MORADA) 4.1. Escreva em álgebra relacional a seguinte interrogação: Qual o número de edições dos livros editados em 2003? [isbn]count(*) anoedicao = 2003 (edicoes) 4.2. Escreva em SQL a seguinte interrogação: Qual o ISBN e o título dos livros editados em 2003 por mais do que uma editora? (Tenha em conta que o desempenho da instrução SQL deve ser o melhor possível) select l.isbn, l.titulo from livro l, edicoes e where l.isbn = e.isbn and e.anoedicao = 2003 group by l.isbn, l.titulo having count(nreditora) > 1 7 de 9 Número Aluno: Nome: 8 de 9 Número Aluno: Nome: Grupo IV. Desenho de Bases de Dados Relacionais Considere a seguinte relação: R(A,B,C,D,E) na qual existem as seguintes dependências: A,B -> C,D,E e D->E. Considere que todos os atributos da relação são escalares. 1. (2v) Indique a frase verdadeira: A relação R está na 1ª FN, 2ª FN, 3ª FN e na BCNF. A relação R está na 1ª FN, 2ª FN, 3ª FN mas não está na BCNF. A relação R está na 1ª FN, 2ª FN, mas não está na 3ª FN nem na BCNF. A relação R está na 1ª FN, mas não está na 2ª FN nem na 3ª FN nem na BCNF. Nenhuma das anteriores. 2. (2v) Decomponha a relação R em duas relações R1 e R2 de tal modo que R1 e R2 obedeçam à BCNF. R1(A, B, C, D) R2(D, E) A B -> C D D -> E 9 de 9