Licenciatura em Engenharia Informática e Computação
Tecnologias de Sistemas de Gestão de Bases de Dados
Ano lectivo de 2001/2002

Trabalho Prático sobre Eficiência

Passos a Seguir no Trabalho

  1. Formar um grupo de projecto
  2. Escolher um tema para a BD
  3. Obter um esquema relacional correspondente, incluindo as restrições de integridade que têm que ser satisfeitas por cada instância da BD
  4. Preparar um exemplo de BD de dimensão adequada ao estudo de eficiência
  5. Implementar no SGBD Oracle 9i
  6. Elaborar perguntas e traduzi-las para SQL, no Oracle
  7. Analisar a eficiência de diferentes estratégias de responder às perguntas, do ponto de vista temporal, de análise de planos de execução e do efeito da existência ou não de índices
  8. Entregar o relatório at 5 de Abril de 2002
  9. Discutir o trabalho.

Estrutura Típica do Realatório

  1. Introdução e especificação do problema
  2. Projecto da Base de Dados
    1. Esquema relacional incluindo restrições de integridade adicionais
  3. Implementação em ORACLE 9i
    1. Script de criação da base de dados
    2. Descrição dos dados exemplo
    3. Interrogações à base de dados
  4. Análise de eficiência
  5. Conclusões

Descrição dos Trabalhos

1. Cruz Vermelha Portuguesa

Pretende-se informatizar os serviços prestados pelas Unidades de Socorro (US) da Cruz Vermelha Portuguesa (CVP). Cada US tem um código (único) e um nome. As US dispõem de colaboradores e viaturas. Relativamente a cada colaborador interessa saber o seu número (único em toda a CVP), o nome e o posto. As US efectuam vários serviços. Cada serviço tem um código (único), um tipo, uma data de início e uma data de fim. Num serviço participam vários colaboradores que podem assumir uma ou mais funções dentro do serviço. As funções são R (responsável); C (condutor); S (socorrista); E (enfermeiro); M (médico); qualquer combinação destes símbolos; ou outras que possam surgir. A realização de um serviço pode envolver várias saídas. Cada saída tem um código, uma hora de partida e uma hora de chegada e usa uma viatura. Existem três tipos de serviços: 1- Normal; 2 - Emergência; 3 - Instrução. Interessa garantir que cada serviço usa apenas recursos próprios ou seja, usa viaturas e colaboradores que lhe pertencem.

2. Canais de Televisão

Pretende-se informatizar a programação dos diferentes canais de televisão portugueses. Existem 4 canais de televisão cada um com a sua programação. Os programas têm um nome, duração e tipo (cultural, entretenimento, informativo, publicitário, etc.). Cada programa pode ter nos seus intervalos vários programas publicitários. Um programa pode ser repetido em diferentes horários. Pretende-se registar a programação dos diferentes canais bem como a audiência nos diferentes horários para elaboração de estatísticas. Interessa garantir que a programação não tem programas em horários sobrepostos.

3. Projectos

Pretende-se projectar uma base de dados para guardar informação sobre o trabalho desempenhado pelos alunos em diversos projectos de uma disciplina. Cada aluno pertence a um só grupo. Cada grupo tem um número, o nome do trabalho realizado pelo grupo e o URL do site mantido pelo grupo. Cada aluno tem um número, o endereço de email e um nome. Cada aluno desempenha uma ou mais funções dentro do grupo sendo que não pode desempenhar duas funções simultaneamente. Cada função é caracterizada por uma abreviatura, um nome, uma data de início e uma data de fim. Os grupos produzem documentos diversos. Relativamente a cada documento interessa guardar o código (único dentro do grupo), o URL, o título, a data e o autor ou autores (alunos do grupo a que pertence o documento).

4. Agenda

Pretende-se implementar uma base de dados para guardar informação de uma agenda electrónica. Na agenda guardam-se tópicos de dois tipos, contactos ou tarefas. Nos contactos pretende-se guardar o nome, vários números de telefone, várias moradas, email e URL. Das tarefas pretende-se guardar a data de início, a duração, um tipo e um local. O local tem um código único, uma designação e uma morada. Interessa garantir que não há eventos sobrepostos (uma pessoa não pode estar em duas tarefas simultaneamente e não podem ocorrer dois eventos ao mesmo tempo no mesmo local).

5. Imobiliária

Pretende-se informatizar os serviços prestados por uma imobiliária com várias agências espalhadas pelo país. Esta empresa vende apartamentos, vivendas e terrenos. Das vivendas e dos apartamentos pretende-se guardar o ano de construção, a área, a localização, a tipologia (T1, T2,...) e o preço. Dos terrenos pretende-se saber se estão em zona urbana ou rural. Dos clientes guardam-se os dados pessoais e os produtos que entregaram à empresa para venda. Os funcionários da empresa têm um código, nome, agência onde trabalham e salário mensal. Para cada venda regista-se a data, o vendedor que a efectuou, o produto que foi transaccionado e os clientes envolvidos (cliente que vendeu e cliente que comprou).

6. Galeria

Pretende-se implementar uma base de dados para guardar informação relativa ao calendário de exposições de galerias de arte. Cada galeria tem um horário de funcionamento e um conjunto de obras que fazem parte da sua colecção e que podem ser cedidas temporariamente para exposições noutras galerias. Interessa saber o período durante o qual se cedeu a obra e a que galeria. Cada galeria tem um calendário de exposições das quais de guarda o nome, a data de início, a data de fim, o preço do bilhete e o conjunto de obras expostas. As obras de arte têm um tipo (quadro, escultura,...), um autor, uma técnica, a data de criação e um dono. O dono pode ser uma galeria ou um particular. Os particulares têm um nome e um contacto.

7. Centro de Emprego

Pretende-se implementar uma base de dados que guarde informação das vagas disponíveis nos quadros de várias empresas assim como o perfil pretendido dos candidatos e a informação dos próprios candidatos. Das vagas pretende-se guardar um código e uma designação (ex.: 10 - chefe de vendas) relativos ao lugar de quadro a preencher, a duração do contrato (datas de início e de fim) e o salário. As candidaturas aos lugares podem ser efectuadas durante um determinado período de tempo definido pelas empresas. Os candidatos podem concorrer a vários lugares simultaneamente. Na candidatura devem constar os dados pessoais do candidato (nome, BI, morada, telefone,...), habilitações e experiência profissional anterior (empresas em que trabalhou e em que períodos de tempo).

8. Aluguer de automóveis

Pretende-se implementar uma base de dados que guarde informação sobre os alugueres dos carros de um empresa. Pretende-se saber quem alugou determinado carro e durante que período. Os automóveis têm custos diários de aluguer diferentes dependendo das suas características. Os clientes podem reservar automóveis antecipadamente e alguns poderão ter descontos no preço final. Pretende-se guardar informação sobre a percentagem de desconto aplicada em cada aluguer. Dos automóveis pretende-se guardar a matrícula, a data da primeira matrícula, a marca, os quilómetros percorridos e a cor. Dos clientes pretende-se guardar informação relativa aos dados pessoais (nome, contacto, morada,...). Os pagamentos podem ser efectuados em dinheiro, cheque, multibanco ou visa.

9. Gestão de material

Implementar uma base de dados que guarde informação sobre o material dos laboratórios de uma faculdade. Os funcionários têm um código, um nome, um horário e são responsáveis por laboratórios. Os laboratórios têm material que precisa de ser substituído logo que se encontre deteriorado. O responsável tem que fazer a encomenda e efectuar a substituição logo que possível. Das encomendas deve guardar-se informação dos materiais, custo unitário, quantidades encomendadas e o fornecedor. Os fornecedores têm um código, uma designação e um contacto. O material tem um código, uma designação, a data da entrada no laboratório e o preço de compra.

10. Leilão

Projectar e implementar uma base de dados que guarde informação sobre diversos leilões. Os leilões têm uma data, um horário e um local. Interessa saber que objectos são leiloados em cada leilão e qual é o preço base de cada peça. Pretende-se saber quem trouxe as peças a leilão e guardar informação sobre os diversos lançamentos (quem lança, a que horas e que preço está disposto a pagar por uma determinada peça). Uma mesma peça pode ser leiloada diversas vezes em leilões diferentes (possivelmente com preços base diferentes). Cada peça tem um código, uma designação e o ano da sua criação. Dos donos pretende-se guardar informação sobre os dados pessoais e o contacto.