Prova Escrita de Base de Dados 5 Novembro 2005 - V2 Número do Aluno: Nome do Aluno: 1º Teste (90 Minutos) Identifique esta prova preenchendo o seu nome e número nesta página, e o número em todas as restantes. A prova é sem consulta. As respostas erradas às perguntas de escolha múltipla indicadas descontam o valor indicado. Figura 1 Customers (CustomerID, Name, City) Orders (OrderID, OrderDate, CustomerID) OrderDetail (OrderID, ProductID, UnitPrice, Quantity) Products (ProductID, ProductName, UnitPrice, SupplierID) Supplier (SupplierID, Name, City, ZIPCode, Street) Onde Orders.CustomerID é uma chave estrangeira para Customers, OrderDetail.OrderID e OrderDetail.Product são chaves estrangeiras para Orders, e Products respectivamente, e Products.SupplierID é chave estrangeira para Suppliers. Figura 2 Página 1 de 7
1º Teste de Base de Dados Página 2 de 7 - ALUNO NÚMERO:... P1 (5 valores, 1 por alínea; não desconta) Considere o esquema relacional indicado na figura 1. Considere que o valor das relações são os expressos na figura 2. Assuma que todos os atributos estão declarados com a restrição de NOT NULL. Indique o valor das seguintes queries (em SQL Server), escrevendo o resultado das mesmas no quadro em frente de cada uma. Se achar que a query tem erros de sintaxe indique Erros de Sintaxe. alínea A) SELECT ProductID, Sum(OrderDetail.Quantity) AS S FROM OrderDetail GROUP BY ProductID ORDER BY S aliena B) SELECT Products.ProductID, Sum(OrderDetail.Quantity) AS S FROM Products INNER JOIN OrderDetail ON Products.ProductID=OrderDetail.ProductID GROUP BY Products.ProductID ORDER BY S aliena B) SELECT ProductID, ProductName FROM Products WHERE NOT EXISTS ( SELECT * FROM Orders WHERE NOT EXISTS ( SELECT * FROM OrderDetail WHERE OrderDetail.OrderID = Orders.OrderID AND OrderDetail.ProductID = Products.ProductID)) alínea D) SELECT productid FROM Products WHERE ProductID NOT IN ( SELECT productid FROM OrderDetail) alínea E) SELECT productid FROM Products WHERE ProductID NOT IN ( SELECT productid FROM OrderDetail INNER JOIN Orders ON Orders.orderID= OrderDetail.orderID INNER JOIN Customers ON Orders.customerID=Customers.CustomerID WHERE Customers.City = Porto )
1º Teste de Base de Dados Página 3 de 7 - ALUNO NÚMERO:... P2 ( 2 valores, 1 por alínea; não desconta) Assuma que o modelo da figura 1 está implementado numa base de dados relacional, mas sem declarações de chaves estrangeiras. Assuma que as relações contêm os valores apresentados na figura 2, com excepção da relação OrderDetail que contém mais um registo, o último, apresentado em baixo: Indique nos quadros à direita o resultado das queries das alíneas A) e B) da pergunta P1, agora com este registo adicional na relação OrderDetail. Se acha que a resposta é idêntica resposta à dada em P1, indique igual a P1 no respectivo quadro. P3 (2 valores, 1 por alínea; alínea A desconta 0,2; alínea B não desconta) Considere, à esquerda, a definição das classes person, customer, employee e officer numa linguagem Orientada por Objectos. Considere, à direita a declaração da relação employee em SQL.
1º Teste de Base de Dados Página 4 de 7 - ALUNO NÚMERO:... Considere que existe uma correspondência entre os tipos de dados string, int e date usados da declaração das classes com os tipos de dados char(20), numeric(8,2) e date usados na declaração em SQL. Comente a adequabilidade da relação employee em suportar a classe employee, ou por outras palavras, a possibilidade de cada registo da relação employee poder armazenar cada instância da classe employee (indique a frase verdadeira): Alínea A) (a) A relação não é adequada apenas porque falta um atributo com o identificação de cada objecto. (b) A relação é adequada, não sendo válidas as razões apresentadas em a) e b). (c) A relação não é adequada apenas porque os atributos person_name e person_address deviam pertencer a outra relação. (d) A relação não é adequada pelas duas razões expressas em a) e b). Alínea B) represente num diagrama Entidade Associação os conceitos person, customer, employee e officer expressos na linguagem Orientada por Objectos. Responda completando o diagrama em baixo. customer officier person employee P4 (1 valor; desconta 0,3 valores) Considere a cláusula WHERE da instrução SELECT, a qual tem como argumento um predicado:...where P.... Recorde-se que P é um predicado lógico. Indique a hipótese verdadeira. (a) WHERE P é verdadeiro se e só se P não for FALSE. (b) WHERE P assume sempre o valor lógico de P. (c) Nenhum dos casos anteriores é verdadeiro.
1º Teste de Base de Dados Página 5 de 7 - ALUNO NÚMERO:... P5 (3 valores, 1 por alínea; desconta 0,2 em cada alínea) Considere o seguinte esquema Entidade Associação: Alínea A) Relativamente à capacidade dos modelos Relacionais e Orientados por Objectos suportarem a implementação directa dos conceitos expressos na figura, indique a afirmação verdadeira: (a) O modelo relacional não suporta a implementação directa deste modelo porque não suporta estruturas que não estejam na 1º Forma Normal. (b) O modelo relacional suporta a implementação directa deste modelo porque suporta estruturas que não estejam na 1º Forma Normal. (c) O modelo Orientado a Objectos não suporta a implementação directa deste modelo porque não suporta estruturas que não estejam na 1º Forma Normal. (d) O modelo Orientado a Objectos não suporta a implementação directa deste modelo porque suporta estruturas que não estejam na 1º Forma Normal. Alínea B) Relativamente implementação do modelo Entidade Associação apresentado, podemos dizer que: (escolha a afirmação verdadeira) (a) Uma implementação no modelo relacional que não apresente anomalias obriga à utilização de pelo menos duas relações, uma para customer e outra para o phonenumber. (b) Uma implementação no modelo relacional que não apresente anomalias obriga à utilização de pelo menos quatro relações, uma para customer outra para city, outra para name, e uma última para address. (c) É possível ter uma implementação no modelo relacional com uma única relação que não apresente anomalias. (d) Uma implementação no modelo relacional que não apresente anomalias obriga necessariamente à conversão do atributo phone-number numa entidade do modelo Entidade Associação.
1º Teste de Base de Dados Página 6 de 7 - ALUNO NÚMERO:... Alínea C) Relativamente à conversão do modelo Entidade Associação apresentado podemos dizer que, se for implementado com uma única relação, a chave desta relação é: (escolha a afirmação verdadeira) (a) O atributo Customer_id (b) Os atributos (Customer_id, address, name) (c) Os atributos (Customer_id, phone-number) (d) Não é possível implementar este modelo numa única relação P6 (3 Valores, 1 por alínea; alíneas A e B não descontam, C desconta 0,2) Considere que na relação Supplier (SupplierID, Name, City, ZIPCode, Street) se verificam as seguintes dependências funcionais: SupplierID Name, City, ZIPCode, Street ZIPCode City Alínea A) Indique as (ou a) opções verdadeiras, assumindo que os atributos City e ZipCode não podem ser nulos. (Nota: apenas se consideram como certas as respostas completamente certas) (f) É possível registar nesta relação a informação de que um determinado ZIPCode está associado a uma determinada City, sem registar qualquer outra informação. (g) É possível eliminar desta relação a informação de que um determinado ZIPCode está associado a uma determinada City, sem eliminar qualquer outra informação. (h) É possível registar nesta relação a informação relativa a um Supplier, sem acrescentar qualquer outra informação relativa à associação entre City e ZipCode. (i) É possível eliminar desta relação a informação relativa a um Supplier, sem eliminar qualquer outra informação relativa à associação entre City e ZipCode.. (j) Nenhuma das anteriores. Alínea B) Indique as (ou a) opções verdadeiras opções verdadeiras, assumindo agora que os atributos City e ZipCode podem ser nulos. (Nota: apenas se consideram como certas as respostas completamente certas) (a) É possível registar nesta relação a informação de que um determinado ZIPCode está associado a uma determinada City, sem registar qualquer outra informação. (b) É possível eliminar desta relação a informação de que um determinado ZIPCode está associado a uma determinada City, sem eliminar qualquer outra informação. (c) É possível registar nesta relação a informação relativa a um Supplier, sem acrescentar qualquer outra informação relativa à associação entre City e ZipCode. (d) É possível eliminar desta relação a informação relativa a um Supplier, sem eliminar qualquer outra informação relativa à associação entre City e ZipCode.. Alínea C) Suponha que se pretende decompor a relação Supplier em duas outras relações: Supplier1 e City. Indique em que cenário de composição da relação Supplier se assegura que
1º Teste de Base de Dados Página 7 de 7 - ALUNO NÚMERO:... a relação original pode ser resconstituída pelo join natural das relações Supplier1 e City propostas? (a) Supplier1 (SupplierID, Name, City, Street) City (City, ZIPCode) (b) Supplier1 (SupplierID, Name, ZIPCode, Street) (c) Supplier1 (SupplierID, Name, City) (d) Supplier1 (SupplierID, Name, ZIPCode) (e) Nenhuma das decomposições propostas. City (City, ZIPCode) City (City, ZIPCode,Street) City (City, ZIPCode,Street) P7 (4 valores, 1 por alínea; não desconta) Admita que a figura seguinte representa um esquema relacional, no qual estão apenas representadas as relações (rectângulos), os atributos (dentro da parte mais clara rectângulos) e as chaves estrangeiras (as setas com origem e destino em atributos das relações). Responda apenas com base no que pode provar a partir deste modelo relacional. Alínea A) - apenas se consideram como correctas as respostas completamente correctas. Indique os atributos da relação customer que podem não ter valor. Customer-name customer-city customer-street nenhum Alínea B) - apenas se consideram como correctas as respostas completamente correctas. Indique os atributos da relação borrower que podem não ter valor. Customer-name loan-number customer-city nenhum Alínea C) - apenas se consideram como correctas as respostas completamente correctas. Indique, se existirem, as relações que são necessariamente entidades em qualquer modelo Entidade-Associação cuja implementação corresponda a este modelo relacional. branch account loan borrower depositior customer nenhuma Alínea D) - apenas se consideram como correctas as respostas completamente correctas. Indique as relações em que podemos identificar chaves candidatas branch account loan borrower depositior customer nenhuma