Sistemas de Informação FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO Licenciatura em Engenharia Electrotécnica e de Computadores Sistemas de Informação Exame, 28 de Dezembro de 2001 DURAÇÃO MÁXIMA 2 horas e 30 minutos, com consulta Problema 1: Modelação de dados (6 valores) Suponha que se pretende projectar uma base de dados para um Sistema de Gestão de Projectos numa Organização, de acordo com os seguintes pressupostos: Um projecto é caracterizado por: número (identifica o projecto), designação, início e fim. Um projecto é decomposto em tarefas. Cada tarefa é caracterizada por: número (sequencial e único dentro do projecto), designação, início e fim. A cada tarefa são afectados recursos. Os recursos podem ser de dois tipos: colaboradores ou equipamentos. Na afectação de um recurso a uma tarefa, indica-se a percentagem do recurso que está afecta à tarefa. O mesmo recurso pode ser afectado a várias tarefas ao mesmo tempo, desde que a soma das percentagens de afectação não exceda 100%. Os colaboradores são caracterizados por: número (identifica o colaborador), nome e salário. Os equipamentos são caracterizados por: número (identifica o equipamento), designação e custo. Cada projecto tem um chefe, que é um colaborador da Organização. O mesmo colaborador pode ser chefe de mais do que um projecto. 1.1 (4.0) Obtenha um diagrama Entidade-Associação relativo a esta base de dados, empregando a notação das aulas. Indique também chaves e restrições adicionais. 1.2 (2.0) Converta o diagrama obtido em 1.1 para um esquema relacional, seguindo a metodologia exposta nas aulas. Justifique devidamente as opções tomadas. Utilize uma notação abreviada da forma R1(A1,A2,...,An), em que R1 é o nome de uma relação, A1, ...,An são nomes de atributos, e os atributos sublinhados constituem a chave primária. Indique à parte as chaves alternativas (chaves candidatas que não são chaves primárias) e as chaves estrangeiras. Problema 2: Dependências funcionais e normalização (2 valores) Considere uma relação Aluguer(codCassete, títuloCassete, numSócio, dataAluguer) na qual se verificam as seguintes dependências funcionais CDN e CT. Utilizam-se as abreviaturas: C codCassete, T - títuloCassete, N - numSócio, D - dataAluguer. 2.1 (0.5) Determine a(s) chave(s) candidata(s) de R. 2.2 (1.5) Determine se R obedece à forma normal de Boyce-Codd (BCNF) e, no caso negativo, decomponha R em duas ou mais relações na BCNF. Problema 3: Interrogação de dados em SQL e Álgebra Relacional (5 valores) Considere uma base de dados com as seguintes tabelas: Departamento(sigla, nome, siglaChefe[Empregado]) Empregado(sigla, nome, dataNascimento, siglaDept [Departamento], dataEntrada, salario) Para além das chaves primárias indicadas (a sublinhado) e das chaves estrangeiras indicadas (com setas), suponha que se verificam as seguintes restrições de integridade: R1: A data de entrada de um empregado tem de ser maior do que a sua data de nascimento. R2: O chefe de um departamento tem de trabalhar para esse departamento (o departamento para que um empregado trabalho é indicado pela coluna "siglaDept" da tabela "Empregado"). R3: O salário do chefe de um departamento não pode ser inferior ao salário dos empregados que trabalham nesse departamento. 3.1 (1.0) Escreva um comando em SQL para listar os nomes dos empregados do departamento com sigla "DEEC", por ordem alfabética. Nota: para obter esta informação basta aceder à tabela "Empregado". 3.2 (1.0) Escreva um comando em SQL para obter o nome do empregado que chefia o departamento com sigla "DEEC". João Pascoal Faria/Ana Paiva 28/DEZ/2001, página 1 de 2 Sistemas de Informação 3.3 (1.0) Escreva uma expressão em álgebra relacional com o mesmo objectivo da questão anterior. 3.4 (1.0) Escreva um comando em SQL para listar o número de empregados e o salário médio por departamento, com a sigla do departamento, o nome do departamento, o número de empregados e o salário médio. 3.5 (1.0) Escreva um comando em SQL para listar as violações da restrição R2, com o nome do departamento, o nome do seu chefe, e o nome do departamento para que esse chefe trabalha. Problema 4: Definição e manipulação de dados em SQL e PL/SQL (5 valores) Considere de novo a base de dados do Problema 3. 4.1 (2.0) Escreva comandos em SQL para criar as tabelas indicadas, com as chaves primárias e estrangeiras indicadas, impondo também a restrição R1. 4.2 (2.0) Escreva gatilhos em PL/SQL para impor a restrição R3, aumentando o salário do chefe do departamento sempre que necessário. Mais precisamente, os gatilhos devem assegurar o seguinte: - quando é inserido um departamento ou é actualizado o chefe de um departamento, é necessário verificar se o salário máximo dos empregados desse departamento excede o salário do chefe do departamento e, em caso afirmativo, o salário do chefe deve ser actualizado para igualar esse máximo; - quando é inserido um empregado ou é actualizado o departamento ou o salário de um empregado, é necessário verificar se o salário do empregado excede o salário do chefe do respectivo departamento e, em caso afirmativo, o salário do chefe deve ser actualizado para igualar o salário do empregado em causa. 4.3 (1.0) Escreva um procedimento denominado "MovDep" em PL/SQL para passar todos os empregados de um departamento de origem para um departamento de destino e de seguida eliminar o departamento de origem, numa única transacção. O procedimento deve receber como argumentos as siglas dos departamentos de origem e de destino. Problema 5: Transacções, Concorrência e Recuperação (2 valores) Considere as seguintes transacções, onde READ(X) e WRITE(X) são as primitivas de leitura e escrita de valor de um item de dados X. T1 READ(A) WRITE(A) READ(B) WRITE(B) COMMIT T2 READ(A) READ(B) COMMIT T3 WRITE(B) WRITE(A) COMMIT 5.1 (1.0) Apresente um escalonamento serializável destas 3 transacções, em que as mesmas sejam executadas concorrentemente (se possível). Qual é o escalonamento série que produz o mesmo estado final que o escalonamento serializável apresentado? 5.2 (1.0) Acrescente a cada uma das transacções apresentadas comandos do tipo RLOCK(X), WLOCK(X) e UNLOCK(X) (bloqueio partilhado para leitura, bloqueio exclusivo para escrita, e libertação de bloqueio, respectivamente) de acordo com o protocolo de bloqueio em duas fases estrito. (Fim.) João Pascoal Faria/Ana Paiva 28/DEZ/2001, página 2 de 2