ESCOLA SUPERIOR DE TECNOLOGIA DE VISEU CURSO: CONTABILIDADE E ADMINISTRAÇÃO APLICAÇÕES DE INFORMÁTICA 06-09-2004 Exame – Época de Recurso 1- Questões conceptuais 1.1- Considere as relações (tabelas) R1 e R2 e os respectivos atributos: R1: A B C D E R2: B C E F G Nota: Em cada tabela os atributos sublinhados definem a chave primária. Considere o seguinte conjunto característico de dependências funcionais entre atributos: AB CDE ; C DE ; BC EFG ; B G ; A D ; AC DE 1.1.1- Crie a estrutura de tabelas necessária para garantir a normalização à 3FN. Nota: Sublinhe com traço contínuo as chaves primárias e com traço descontínuo as chaves estrangeiras. 1.1.2- Indique as eventuais dependências funcionais redundantes e justifique a sua escolha. 1.2- Explicite as vantagens fundamentais que decorrem da adopção da arquitectura ANSI-SPARC. 1.3- Refira as consequências da ausência de normalização à 3FN. 2- Normalização relacional e estruturação de bases de dados Após a normalização das seguintes relações à 3ª FN, identifique as chaves de cada tabela e os relacionamentos necessários (apresenta-se o significado de alguns atributos, cuja interpretação pode suscitar alguma dúvida): Nota 1: Sublinhe as chaves primárias (traço contínuo) e as chaves estrangeiras (traço descontínuo). Nota 2: Apresente os relacionamentos entre as tabelas. LEITORES Número Nome Morada CódPostal CódLeit : Código de identificação do leitor REQUISIÇÕES NúmReq DataReq CódLivro1 Localidade Título CódEdit CódCateg Categoria CódCateg : Código da categoria do leitor Categoria : Designação da categoria do leitor (exemplo: Assinante, Visitante, Sócio, etc....) CódLivro2 CódLivro3 NúmReq : Número da requisição de livros DataReq : Data da requisição LIVROS CódLivro Telefone DataEntr CódLivroN : Código do Nº livro da requisição ( N = 1 , 2 , 3 ) DataEntr : Data de entrega dos livros da requisição Editora TelefEdit FaxEdit CódPostal Localidade CódTópico Tópico REQUISIÇÕES NúmReq DataReq CódLivro1 CódLivro2 CódLivro3 NúmReq : Número da requisição de livros DataReq : Data da requisição LIVROS CódLivro Título CódEdit CódLivroN : Código do Nº livro da requisição ( N = 1 , 2 , 3 ) DataEntr : Data de entrega dos livros da requisição Editora CódLivro : Código de identificação do livro na biblioteca CódEdit : Código de identificação da editora do livro Editora : Designação da editora do livro TelEdit : Telefone da editora AUTORES CódAutor Autor DataEntr TelefEdit FaxEdit CódPostal Localidade CódTópico Tópico FaxEdit : Fax da editora CódTópico : Código de identificação do tópico ou área temática em que o livro se enquadra (exemplo: História, Economia, Informática, etc.) Tópico : Designação do tópico ou área temática em que o livro se enquadra Nacion CódAutor : Código de identificação do autor de um livro Autor : Nome do autor de um livro Nacion : Nacionalidade do autor Informações adicionais: - Uma requisição é feita por um leitor e pode conter até três livros ; - Um livro pode ser escrito por um ou vários autores e está associado a um único tópico . 3- Linguagem SQL A partir da base de dados ‘Fornecedores, Peças e Projectos’ (em anexo), execute as seguintes consultas em linguagem SQL padrão: 3.1- Inserir um novo fornecedor S10 na tabela S. O nome e a cidade são respectivamente, ‘White’ e ‘New York’, o status ainda não é conhecido; 3.2- Obter os números das peças fornecidas para qualquer projecto por um fornecedor da mesma cidade que o projecto; 3.3- Obter os fornecimentos em que as quantidades se situam entre 300 e 750, inclusive; 3.4- Obter os números das peças fornecidas por fornecedores londrinos para projectos em Londres (‘London’); 3.5- Quantos projectos são fornecidos pelo fornecedor S1? Base de dados Fornecedores - Peças - e - Projectos Base de dados de Fornecimentos: Fornecedores-Peças-Projectos S P P# S# SNAME STATUS CITY S1 Smith 20 London S2 Jones 10 Paris S3 Blake 30 Paris S4 Clark 20 London S5 Adams 30 Athens PNAME COLOR SPJ S# P# J# QTY S1 P1 J1 200 S1 P1 J4 700 S2 P3 J1 400 S2 P3 J2 200 S2 P3 J3 200 S2 P3 J4 500 S2 P3 J5 600 WEIGHT CITY S2 P3 J6 400 P1 Nut Red 12 London S2 P3 J7 800 P2 Bolt Green 17 Paris S2 P5 J2 100 P3 Screw Blue 17 Rome S3 P3 J1 200 P4 Screw Red 14 London S3 P4 J2 500 P5 Cam Blue 12 Paris S4 P6 J3 300 P6 Cog Red 19 London S4 P6 J7 300 S5 P2 J2 200 S5 P2 J4 100 S5 P5 J5 500 S5 P5 J7 100 S5 P6 J2 200 S5 P1 J4 100 S5 P3 J4 200 S5 P4 J4 800 S5 P5 J4 400 S5 P6 J4 500 J J# JNAME CITY J1 Sorter Paris J2 Punch Rome J3 Reader Athens J4 Console Athens J5 Collator London J6 Terminal Oslo J7 Tape London 4- Implementação de uma base de dados 4.1- A partir do ficheiro SweetLil.mdb , proceda às seguintes alterações: - A data do prazo de validade não pode ser anterior à data de encomenda e o operador deve ser avisado sempre que isso não se verifique; - O método de encomenda é '1', por defeito; - A quantidade disponível de cada bombom, numa caixa, não deve ser inferior a 3; - O telefone e a morada de cada cliente nunca poderão ser valores "null"; - Em todos os objectos da base de dados o campo correspondente à data do prazo de validade ("válido até") deverá aparecer como "Limite de validade"; 4.2- Construa uma consulta de referência cruzada que permita visualizar as quantidades encomendadas de cada bombom (nome do bombom) por cada cliente (nome do cliente). Nota 1: Restrinja a consulta para apenas obter os bombons cujo nome começa pela letra ‘B’ e os nomes dos clientes também começam pela letra ‘B’. Nota 2: Na consulta de referência cruzada deverá constar uma coluna onde é visualizada a quantidade total de cada bombom. 4.3- Crie um formulário para encomendas, onde o campo ‘método de encomenda’ deve ser preenchido por um grupo de opções e o número do cliente deve ser preenchido por uma caixa de combinação, onde é seleccionado o nome do cliente (o número fica oculto). 4.4- Personalização de formulários 4.4-1. Crie duas macros que deverão realizar as seguintes operações: - Macro1: Fecha o formulário de encomendas e abre o formulário de clientes; - Macro2: Fecha o formulário de clientes e abre o formulário de encomendas; 4.4-2. Cada macro anterior deve ser executada com um clique de rato sobre um botão de comando. Crie dois botões, um para cada macro, no formulário adequado. 4.5- Crie um menu para a base de dados, com o título “Menu Principal”, com as seguintes características: - o nome do formulário é “Start Application” - um botão de comando para sair da aplicação; - um botão de comando para abrir os formulários de encomendas; - um botão de comando para abrir os formulários de clientes; - um botão de comando para executar a consulta de referência cruzada criada em 4.2.; - o formulário do menu não deve conter botões Min/Max, selectores de registo, navegador de registo e linhas divisoras ou barras de deslocamento; - os limites do formulário não devem ser dimensionáveis (estilo “diálogo”); - o formulário principal deverá arrancar automaticamente com o início da aplicação.