PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO DE JANEIRO INF1383 - BANCO DE DADOS Sistema de Gerenciamento de Banco de Dados para o CCCI Grupo 4: Diego Silva Guido Paes Leme Ingrid Coda Matheus de Mello Paulo Schulze Thomas Botelho Rio de Janeiro Maio de 2016
ESPECIFICAÇÕES E DETALHAMENTO A Coordenação Central de Cooperação Internacional (CCCI) é responsável pelas parcerias e convênios de cooperação entre PUC-Rio e inúmeras instituições internacionais. A forma de parceria, talvez, mais procurada pelos estudantes é o intercâmbio, tanto para alunos dessa instituição que vão para o exterior quanto para alunos estrangeiros que querem estudar na PUC-Rio. Atualmente a CCCI utiliza apenas alguns meios digitais para armazenar todas as informações de alunos em intercâmbio, contando com formulários e anotações em papel e arquivos físicos para guardar todos os dados. Esse sistema, além de pouco confiável, é muito ineficiente. O CCCI oferece basicamente três tipos de intercâmbio para alunos da PUC-Rio: o intercâmbio de curta duração, o intercâmbio acadêmico e o intercâmbio de dupla diplomação. Será incluído um quarto tipo de intercâmbio, o especial, para tratar casos pontuais que não sejam os citados. Esse projeto pretende organizar todas as informações relevantes dos alunos da PUC que vão estudar em uma universidade conveniada. Serão tratados os quatro tipos de intercâmbio para facilitar a busca e manutenibilidade desses dados. Todos os cadastros devem obedecer a um padrão e conter todas as informações necessárias, podendo ou não conter algumas informações adicionais. A seguir, estão expostas algumas das informações que serão usadas para modelar e, posteriormente, criar o banco de dados. O banco de dados guardará informações de todas as universidades que têm ou já tiveram convênio com a PUC-Rio. Esses dados incluem: nome da instituição, país, estado, cidade, endereço, endereço de e-mail e telefone do coordenador de intercâmbio da instituição, idioma oficial da instituição. Deverão ser armazenados também os cursos oferecidos pelas universidades. Cada curso deverá possuir código, nome e departamento. As instituições também possuem diversas disciplinas, que devem ser armazenadas. Deverá ser possível obter o código da disciplina, seu nome, sua quantidade de créditos, seu departamento e seu tipo, que pode ser eletiva, optativa ou obrigatória. Cada aluno só pode estar inscrito em um único programa de intercâmbio por vez, podendo participar de inúmeros programas ao longo da sua vida acadêmica na PUC-Rio. O CCCI por sua vez coordena os inúmeros alunos simultaneamente. Em um intercâmbio, o aluno vai para exatamente uma instituição. Cada intercâmbio deve armazenar uma data de início, seu tipo e sua duração. Todo aluno tem diversas informações pessoais que precisam estar presentes em seu registro no sistema, tais como: nome completo, CPF, número do passaporte, data de nascimento, endereço no Brasil, endereço no exterior, telefone para contato, endereço de e- mail. Além disso deseja-se saber sua matrícula na PUC-Rio e seu coeficiente de rendimento. O sistema armazenará também as informações acadêmicas e profissionais do período de intercâmbio desses estudantes, dessa forma será possível acompanhar o desempenho acadêmico dos alunos e saber quais deles realizaram algum tipo de trabalho ou estágio. Para isso, o sistema deverá ter informações de todas as disciplinas cursadas pelos alunos e o grau obtido pelo aluno. No caso de alunos que venham a ser contratados em estágios ou trabalhos, essas informações seriam adicionadas ao sistema, que armazenaria dados da empresa que
fez a contratação, como: nome, país, área de atuação, função do aluno e tipo de contratação, este último podendo ser estágio ou funcionário de tempo integral. Os alunos podem ser contratados para nenhum ou vários estágios ou trabalhos. A proposta desse projeto é oferecer ao CCCI um sistema de banco de dados digital de alunos da PUC-Rio que estão fazendo, ou já fizeram, algum tipo de programa de intercâmbio através do CCCI. Com isso, se espera conseguir uma maior facilidade ao lidar com as informações, adicionando velocidade e poder de busca ao sistema.
MODELO DE ENTIDADE-RELACIONAMENTO BANCO DE DADOS PARA CCCI PUC-RIO
DESCRIÇÃO DE ATRIBUTOS DAS ENTIDADES I. Aluno Nome (1,1): atributo que descreve o nome do aluno da universidade. É composto pelo nome completo do aluno e é representando por uma string de 1 até 100 caracteres. CPF [Atributo identificador] (1,1): atributo que descreve o número do CPF do aluno. É composto por 11 caracteres, compostos pelos números naturais. Matrícula [Atributo Identificador] (1:1): atributo que descreve a matrícula que a universidade atribui ao aluno. É composto por uma string de 4 caracteres. Coeficiente de Rendimento (1:1): atributo que descreve o coeficiente de rendimento do aluno. Endereço no Brasil (1:1): atributo que descreve o endereço da residência do aluno. É composto pelo nome da rua e corresponde a uma string de até 50 caracteres. Endereço no Exterior (1:1): atributo que descreve o endereço da residência do aluno. É composto pelo nome da rua e corresponde a uma string de até 50 caracteres. Telefone (1:1): atributo que descreve um ou mais telefones para contato com o aluno. É composto por uma string de 11 caracteres. E-Mail (1:1): atributo que descreve o e-mail pessoal do aluno. Pelo e-mail o aluno receberá informações cruciais sobre seu processo acadêmico. É composto por uma string de até 50 caracteres. II. Universidade Nome [Atributo Identificador] (1:1): atributo que descreve o nome da universidade. É composto por uma string de até 100 caracteres. País [Atributo Identificador] (1:1): atributo que descreve o país onde se encontra a universidade. É composto por uma string de até 50 caracteres.
Estado (1:1): atributo que descreve o estado onde se encontra a universidade. É composto por uma string de até 50 caracteres. Cidade (1:1): atributo que descreve a cidade onde se encontra a universidade. É composto por uma string de até 50 caracteres. Endereço (1:1): atributo que descreve o endereço de onde a universidade se encontra. É composto por uma string de até 50 caracteres. E-Mail (1:1): atributo que descreve o contato eletrônico da universidade. Através desse e-mail, a faculdade enviará as informações cruciais sobre o período letivo. É composto por uma string de até 50 caracteres. Telefone (1:1): atributo que descreve os números dos telefones usados pela universidade. É composto por uma string de até 11 caracteres. Idioma (1:1): atributo que descreve os idiomas falados na universidade. É composto por uma string de até 20 caracteres. III. Disciplina Nome (1:1): atributo que descreve o nome da disciplina em questão. É composto por uma string de até 25 caracteres. Código [Atributo Identificador] (1:1): atributo que descreve o código referente a disciplina. É composto por uma string de até 10 caracteres. Créditos (1:1): atributo que descreve a quantidade de créditos oferecida pela disciplina. É composto por um valor inteiro de 1 até 6. Departamento (1:1): atributo que descreve o nome do departamento responsável por oferecer a disciplina. É composto por uma string de até 40 caracteres. Tipo (1:1): atributo que descreve o tipo de disciplina. É composto por uma string de até 15 caracteres.
IV. Curso Nome (1:1): atributo que descreve o nome do curso em questão. É composto por uma string de até 40 caracteres. Código [Atributo Identificador] (1:1): atributo que descreve o código do curso referente a disciplina. É composto por uma string de até 10 caracteres. Departamento (1:1): atributo que descreve a qual departamento o curso em questão pertence. É composto por uma string de até 40 caracteres. V. Intercâmbio Código [Atributo identificador] (1:1): atributo que descreve o código do intercâmbio. É composto por uma string de até 10 caracteres. Tipo (1:1): atributo que descreve qual o tipo de intercâmbio está sendo realizado. É composto por uma string de até 10 caracteres. Duração (1:1): atributo que descreve qual será a duração do intercâmbio, relacionado com o tipo do mesmo. É composto por uma string de até 20 caracteres. VI. Empresa Nome [Atributo Identificador] (1:1): atributo que descreve o nome da empresa na qual o aluno pode trabalhar. É composto por uma string de até 20 caracteres. País [Atributo Identificador] (1:1): atributo que descreve o país de origem da empresa. É composto por uma string de até 50 caracteres. Estado (1:1): atributo que descreve o estado onde se encontra a empresa. É composto por uma string de até 50 caracteres. Cidade (1:1): atributo que descreve a cidade onde se encontra a empresa. É composto por uma string de até 50 caracteres. Área de Atuação (1:1): atributo que descreve as áreas de atuação da empresa. A empresa pode atuar em mais de uma área. É composto por uma string de até 20 caracteres.
E-Mail (1:1): atributo que descreve o endereço eletrônico pelo qual a empresa se comunica com seus funcionários. É composto por uma string de até 50 caracteres. Telefone (1:1): atributo que descreve os telefones para contato da empresa. A empresa pode ter mais de um telefone. Endereço (1:1): atributo que descreve o endereço da empresa. É composto por uma string de até 50 caracteres. DESCRIÇÃO DOS ATRIBUTOS DAS RELAÇÕES I. Trabalha Função do Aluno (1:1): atributo que descreve a função que o aluno desempenha na empresa na qual trabalha. É composto por uma string de até 20 caracteres. Tipo de contrato (1:1): atributo que descreve qual o tipo do contrato que o aluno tem assinado com a empresa. É composto por uma string de até 10 caracteres. II. Cursa Nota (1:1): atributo que descreve a nota que o aluno recebeu em uma disciplina. É composto por um float que varia de 0.0 até 10.0. III. Realiza Data de Início (1:1): atributo que descreve a data de início do intercâmbio do aluno. É composto pelo tipo date. Data Final (1:1): atributo que descreve a data final do intercâmbio do aluno. É composto pelo tipo date.
ESQUEMA DO MODELO LÓGICO Universidade (nome, pais, estado, cidade, endereço, email, telefone, idioma) Aluno (CPF, matricula, nome, cr, endbrasil, endexterior, telefone, email) Empresa (nome, pais, areaatua, email, telefone, endereco, estado, cidade) Disciplina (codigo, nome, creditos, departamento, tipo) Curso (código, nome, departamento, universidade) o universidade referencia nome na tabela Universidade Intercambio (codigo, tipo, duração) Trabalha (cpf, empresa, funcao, tipocontrato) o cpf referencia CPF na tabela aluno o empresa referencia nome Cursa (matricula, codigo, nota) o matricula referencia matricula na tabela Aluno o codigo referencia codigo na tabela Disciplina Realiza (codigo, matricula, dtinicio, dtfim) o codigo referencia codigo na tabela Intercambio o matricula referencia matricula na tabela Aluno CONSULTAS AO BANCO DE DADOS USANDO ÁLGEBRA RELACIONAL 1. NATURAL JOIN E ATTRIBUTE RENAME Listar o nome de todas as universidades que oferecem o curso 'Odontologia'. δ nome cnome (Curso) AUX Universidade (Universidade.nome = Curso.universidade) Curso RES πnome(σcnome='odontologia'(aux)) 2. OUTER JOIN Mostrar o nome e CPF de todos os estudantes que fazem intercâmbio e seus estágios, caso façam algum. AUX Aluno (Aluno.cpf = Trabalha.cpf) Trabalha RES πnome, CPF, Empresa(AUX)
3. SELECT Mostrar as universidades que possuem convênio com a PUC que estão localizadas na França. UNI_COM_CONVENIO σpais=frança(universidade) 4. AGGREGATE OPERATION (COUNT) Quantos alunos estão fazendo intercâmbio na PUC? QUANT gcount(matricula)(aluno) 5. AGGREGATE OPERATION (MAX) Mostrar o nome e matrícula dos alunos intercambistas que possuem o maior CR. MAX_CR gmax(cr) as mcr(aluno) ALUNOS_MAX_CR πnome, matricula(σmcr=cr(alunos x ALUNOS_MAX_CR)) 6. SET DIFFERENCE Mostrar todos os alunos que não fazem/fizeram o intercâmbio especial. INTER_ESPEC σtipo='especial'(alunos) ALUNOS_NAO_ESPEC Alunos INTER_ESPEC 7. SET INTERSECTION Mostrar os alunos que fazem ou fizeram intercâmbio acadêmico e dupla diplomação. DUPLA_DIP σtipo='dupla Diplomação'(Alunos) INTER_ACAD σtipo='acadêmico'(alunos) DUPLA_EOU_INTER (DUPLA_DIP) (INTER_ACAD)
8. SET UNION Mostrar os alunos que fazem ou fizeram intercâmbio acadêmico ou dupla diplomação. DUPLA_DIP σtipo='dupla Diplomação'(Alunos) INTER_ACAD σtipo='acadêmico'(alunos) DUPLA_E_INTER (DUPLA_DIP) (INTER_ACAD) DUPLA_EOU_INTER (DUPLA_DIP) (INTER_ACAD) DUPLA_OU_INTER DUPLA_EOU_INTER DUPLA_E_INTER 8. AGGREGATE OPERATION (AVG) Mostrar a média do C.R dos intercambistas de fora. AVG_CR gavg(cr)(aluno) 9. GENERALIZED SELECTION (MENOR QUE < ) Mostrar quantos alunos estão abaixo da média. AVG_CR gavg(cr) as acr(aluno) ALUNOS_ABAIXO σcr < acr(aluno x AVG_CR) QUANT_ABAIXO gcount(matricula) (ALUNOS_ABAIXO) 10. DIVISION Todos os alunos que fazem exatamente as mesmas disciplinas que o aluno Efraim La Rocque. AL_CURSA Aluno Cursa EFRAIM_CURSA (σnome='efraim La Rocque'(Aluno)) Cursa ALUNOS_COM_EFRAIM AL_CURSA EFRAIM_CURSA 11. RENAME / PROJECTION Mostrar as disciplinas cursadas pelos alunos intercambistas. AL_CURSA Aluno Cursa δnome dnome(disciplina) AL_DISCIPLINA πnome, matricula, dnome(al_cursa Disciplina)
CONSULTAS AO BANCO DE DADOS USANDO A LINGUAGEM SQL Mostrar todos os estudantes de fora e seus estágios, caso façam algum. SELECT aluno.nome, trabalha.empresa FROM aluno left outer join trabalha on (aluno.cpf = trabalha.cpf) Mostrar todos os dados das universidades que possuem convênio com a PUC que estão localizadas na França. SELECT * FROM universidade WHERE País = 'França' Quantos alunos fizeram/fazem intercâmbio? SELECT count(cpf) FROM aluno Mostrar os alunos intercambistas que possuem o maior CR. SELECT nome, cpf, matricula FROM aluno WHERE cr IN (SELECT max(cr) FROM aluno) Mostrar todos os alunos que não fazem/fizeram o intercâmbio especial. SELECT nome, cpf, matricula FROM aluno, realiza, intercambio
WHERE aluno.matricula = realiza.matricula AND intercambio.tipo NOT IN (SELECT tipo FROM intercambio) Mostrar os alunos que fazem intercâmbio acadêmico e/ou dupla diplomação. (SELECT nome, cpf, matricula FROM aluno, intercambio WHERE aluno.cpf = intercambio.cpf AND intercambio.tipo = 'acadêmico') UNION (SELECT nome, cpf, matricula FROM aluno, intercambio WHERE aluno.cpf = intercambio.cpf AND intercambio.tipo = 'dupla diplomação') Mostrar a média do C.R dos intercambistas. SELECT avg(cr) FROM aluno Quantos alunos estão com o cr abaixo da média. SELECT alunos, cpf, matricula FROM aluno WHERE cr < (SELECT avg(cr) FROM aluno) Mostrar as disciplinas cursadas pelos alunos intercambistas. SELECT d.nome, d.código FROM disciplina d, aluno a, cursa c WHERE a.matricula = c.matricula AND c.codigo = d.codigo
Listar o nome de todas as universidades que oferecem o curso 'Odontologia'. SELECT u.nome FROM universidade u, curso c WHERE u.nome = c.universidade AND c.nome = 'Odontologia'