LICENCIATURA EM ENGENHARIA ELECTROTÉCNICA E DE COMPUTADORES Sistemas de Informação 15 de Fevereiro de 2002 Duração máxima 2 horas, com consulta Problema 1: Modelação de dados (6 valores) Pretende-se projectar uma base de dados para guardar informação sobre o trabalho desempenhado pelos alunos a diferentes projectos de uma disciplina. Cada aluno pertence a um e um só grupo. Relativamente a cada grupo interessa guardar o número do grupo (identifica o grupo), o nome do trabalho realizado pelo grupo e o URL do site mantido pelo grupo. Não podem existir dois grupos com o mesmo trabalho ou com o mesmo url. Relativamente a cada aluno interessa guardar o número do aluno (identifica o aluno), o endereço de email e o nome. Não podem existir dois alunos com o mesmo endereço de e-mail. Cada aluno desempenha uma ou mais funções no seu grupo. Cada função é caracterizada por uma abreviatura (exemplo: CQ) e um nome (exemplo: CQ - Controlo de Qualidade), ambos únicos. Os grupos produzem documentos diversos. Relativamente a cada documento interessa guardar o código (único dentro do grupo), o URL (único), o título, a data e o autor ou autores (alunos do grupo). 1.1 (4.0) Obtenha um diagrama Entidade-Associação relativo à base de dados para este sistema, empregando a notação das aulas. Indique também restrições de integridade adicionais. 1.2 (2.0) Converta o diagrama obtido em 1.1 para um esquema relacional. Utilize uma notação abreviada da forma R1(A1,A2,A3,,...,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 estrangeiras. Problema 2: Dependências funcionais e normalização (2 valores) Considere uma relação Exame(Cadeira, Época, Data, Hora, Sala) com as seguintes dependências funcionais (utiliza-se apenas a primeira letra de cada atributo): CEDHS (não há dois exames da mesma cadeira na mesma época) DHSC (não há dois exames na mesma sala ao mesmo tempo) DE (dois exames na mesma data são necessariamente da mesma época) 2.1 (1.0) Determine a(s) chave(s) candidata(s) de R. 2.2 (1.0) Determine se R obedece à forma normal de Boyce-Codd (BCNF) e, em 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: Pessoa(bi, nome, sexo, data_nascimento) Casamento(biMarido[Pessoa] , biMulher[Pessoa], data) 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: R2: R3: R4: A coluna sexo da tabela Pessoa só pode tomar valores 'M' (Masculino) ou 'F' (Feminino). A coluna biMarido da tabela Casamento tem de referenciar uma pessoa do sexo masculino. A coluna biMulher da tabela Casamento tem de referenciar uma pessoa do sexo feminino. A data de casamento tem de ser posterior à data de nascimento de qualquer dos cônjuges. 3.1 (1.25) Escreva um comando em SQL para listar todos os casamentos, mostrando a data de casamento e o número de bilhete de identidade, nome e data de nascimento dos dois cônjuges (marido e mulher), por ordem cronológica de datas de casamento. 3.2 (1.25) Escreva uma expressão em álgebra relacional para listas as violações às restrições R2 ou R3, isto é, para listar os dados dos casamentos (só os dados que constam na tabela Casamento) em que o marido não está registado como sendo do sexo masculino ou a mulher não está registada como sendo do sexo feminino. 3.3 (1.25) Escreva um comando em SQL para obter a data do último casamento do José Francisco. 3.4 (1.25) Escreva um comando em SQL para listar o nome, número de bilhete de identidade e número de casamentos das pessoas que se casaram mais do que uma vez. Problema 4: Definição e manipulação de dados em SQL e PL/SQL (4 valores) Considere de novo a base de dados do Problema 3. 4.1 (2.5) 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 (1.5) Escreva um ou mais gatilhos em PL/SQL para impor a restrição R4, lançando um erro quando a restrição é violada. Notar que a restrição R4 pode ser violada pelas seguintes operações: actualização da data de nascimento na tabela Pessoa, inserção de uma ocorrência na tabela Casamento e actualização da data de casamento na tabela Casamento. Problema 5: Concorrência, Recuperação e Segurança (3 valores) 5.1 (1.5) Considere o seguinte escalonamento de transacções: T1 READ A A:=A+K T2 A := 0 WRITE A WRITE A Diga, justificando, se o escalonamento apresentado é serializável. No caso de ser serializável, diga qual é o escalonamento série equivalente. No caso de não ser serializável, apresente um escalonamento serializável. Notas: A instrução "READ A" significa "ler o valor do item A da base de dados para uma variável em memória com o mesmo nome". A instrução "WRITE A" significa "escrever no item A da base de dados o valor que se encontra na variável em memória com o mesmo nome". As instruções "A:=A+K" e "A:=0" trabalham apenas com as variáveis em memória. 5.2 (1.5) (Fim.) Explique em que medida é que o protocolo de bloqueios em duas fases estrito está relacionado com o problema da recuperação de falhas.