Disciplina: Banco de Dados I Professor Sérgio Lifschitz BRAFITEC Alunos: Bruna Bergmann Leonardo Lages Luís Fernando Matheus de Sousa Matheus Henriques Wellington Bezerra Rio de Janeiro, 11 de Outubro de 2015.
Sumário 1) Resumo:... 3 2) Esquema Entidade Relacionamento (E-R):... 4 Atributos... 5 3) Descrição de Atributos e Restrições de Integridade:... 6 4) Restrições Semânticas:... 10 5) Esquema Lógico:... 10 6) Consultas com Álgebra:... 12 A) Perguntas envolvendo seleção e/ou projeção, além de junção e suas variações:... 12 B) Perguntas envolvendo divisão:... 12 C) Perguntas envolvendo interseção e/ou união:... 13 D) Perguntas envolvendo função de agregação (somatórios, médias, etc.):... 13 E) Perguntas envolvendo subtração:... 14 7) Consultas com SQL:... 15 A) Perguntas envolvendo select (distinct), from e where:... 15 B) Perguntas envolvendo outer join, union e/ou intersection:... 15 C) Perguntas envolvendo average, max, all e/ou some:... 16 D) Perguntas envolvendo strings (comando like):... 17 E) Perguntas envolvendo except, not in e/ou is (not) null:... 17 F) Perguntas envolvendo exists e/ou order by:... 17 2
1) Resumo: Deseja-se representar, em um sistema de banco de dados, as informações referentes a inscrições de candidatos para BRAFITEC, uma associação da PUC com outras universidades francesas para intercâmbio de alunos ou dupla diplomação dos mesmos. Estes candidatos devem possuir informações relevantes a seu respeito, que são primeiramente: departamento ao qual pertencem, matrícula, curso, se possui dupla nacionalidade, estado civil, se possui cônjuge, informando seu nome, se possui filhos, o endereço de e-mail, quantidade de irmãos que possui e também a quantidade destes que estudam na PUC, além de informações médicas, como os tratamentos que faz e/ou medicações que toma ou usa com regularidade. Os alunos (outra denominação para os candidatos, já que todos estes são estudantes da PUC-Rio) possuem pai e mãe, devendo informar a profissão de cada um deles. Tanto alunos quanto seus pais possuem os seguintes dados em comum: nome, endereço, CEP, cidade e país onde vivem,telefone fixo, celular e de trabalho (um de cada tipo), nacionalidade, números de CPF e RG e o órgão expedidor da identidade. Bem como todas as informações estão relacionadas com os alunos, existe um histórico acadêmico que cada um deles possui, contendo período atual do aluno na faculdade, quantidade de trancamentos, quantidade de reprovações, total de créditos realizados, CR do último período, CR atual, previsão de data para formatura, como ingressou na PUC-Rio, nota e data do TOEFL, bem como nota, data e nome do Exame de Francês(ambos esses exames são obrigatórios), se a PUC está movendo processos acadêmicos/estudantis contra o aluno e se este está movendo algum processo contra a faculdade, sem contar que o histórico também retém as disciplinas que o aluno cursou na faculdade até o momento, com cada uma possuindo seu nome, código, nota final do aluno em cada disciplina e em quais delas foi aprovado. Porém ainda existem outras informações pertinentes, como saber se o candidato morou em algum país do exterior, devendo informar o nome deste em caso positivo, não esquecendo do período de tempo que permaneceu, o local onde ficou alojado, se foi por intercâmbio ou de outra maneira, o nome do colégio/escola que estudou e qual/quais série(s) cursou por lá. Cada aluno possui um responsável financeiro, devendo informar seu nome, número de identidade e CPF, não necessariamente possuindo alguma relação de parentesco com o próprio dependente. O aluno interessado na vaga deve informar as atividades acadêmicas complementares que desempenhou até o momento, pois as próprias atividades acadêmicas já foram informadas no histórico citado anteriormente, possuindo a data de início e a data de finalização de cada uma. As atividades acadêmicas complementares podem ser de três tipos: PIBIC, no qual deve-se saber o nome do professor orientador, monitoria, dizendo o nome e código da disciplina relacionada, e estágio, devendo informar o nome da empresa onde começou a atividade. Um detalhe importante é que o aluno não deve realizar atividades do mesmo tipo ao mesmo tempo, por exemplo, não se pode dar duas monitorias diferentes em um único semestre. Existem também as atividades extracurriculares que o aluno fez e/ou faz, que informam o nome do curso, a língua que aprendeu nele e qual o nível de proficiência registrado até o momento. Obviamente, para se inscrever em uma universidade francesa, o aluno deve preencher uma ficha com as seguintes informações: o tipo de bolsa que deseja, duração do intercâmbio, a área para a qual deseja encaminhar seus estudos, sua motivação e o semestre que iniciará. O aluno deve informar, também, qual a ordem de prioridade das universidades para ele. Deve ficar claro que, se a pessoa não possui alguma informação ou dado pedidos, deve informar no formulário da maneira que convir. 3
2) Esquema Entidade Relacionamento (E-R): 4
Atributos 5
3) Descrição de Atributos e Restrições de Integridade: Disciplina Disciplinas que são ou foram cursadas pelo aluno, enquanto na PUC. Nome: Nome da disciplina (Palavra com até 40 caracteres) Código: Código da disciplina (Palavra com 7 caracteres) Atividade Acadêmica Complementar Atividades extracurriculares de caráter acadêmico, vinculadas à PUC, feitas pelo aluno. Essas atividades são divididas em PIBIC, monitoria e estágio. DataIni: Data de início da atividade (Data no formato MM/AAAA) DataFim: Data de término da atividade (Data no formato MM/AAAA) PIBIC Atividade realizada pelo aluno dentro da universidade PUC-Rio Orientador: Nome do orientador do aluno (Palavra com até 40 caracteres) Monitoria Atividade realizada pelo aluno dentro da universidade PUC-Rio Disciplina: Código da disciplina da monitoria (Palavra com 7 caracteres) Estágio Atividade realizada pelo aluno enquanto estudava na PUC-Rio Empresa: Nome da empresa que realizou estágio (Palavra com até 40 caracteres) Atividade Extra Línguas cursadas pelo aluno, que podem ter vínculo ou não com a PUC. É necessário informar a instituição de ensino e a proficiência adquirida na respectiva língua. Curso: Nome da instituição de ensino da atividade (Palavra com até 40 caracteres) Língua: Nome da língua estudada (Palavra com até 10 caracteres) Nível: Nível alcançado na língua (Palavra com até 20 caracteres) País Exterior Qualquer país que foi destino de estadia de um aluno, durante algum momento de sua vida. Nome: Nome do país (Palavra com até 20 caracteres) 6
Aluno-País Exterior Dados relacionados a alguma viagem feita pelo aluno para o exterior Período: Período de duração da estadia no país em meses (Número de 0 a 50) Intercâmbio: Tipo de intercâmbio realizado pelo aluno (Palavra com até 20 caracteres) Local: Cidade de estadia (Palavra com até 20 caracteres) Colégio/Escola: Nome da instituição que promoveu a estadia (Palavra com até 40 caracteres) Série: Série enquanto estava fora (Palavra até 20 caracteres) Pessoa Pessoa que pode ser aluno ou pai do aluno CPF: Cadastro de Pessoa Física (CPF) da pessoa (Número de 11 dígitos) Nome: Nome da pessoa (Palavra com até 50 caracteres ) Endereço: Endereço da pessoa (Palavra com até 50 caracteres ) Número: Número da casa/prédio da pessoa (Número de 0 a 10.000 ) Apto: Número do apartamento da pessoa (Número de 0 a 10000) Complemento: Complemento do endereço da pessoa (Palavra com até 50 caracteres) Bairro: Bairro que a pessoa reside (Palavra com até 20 caracteres ) Cep: Número do CEP da pessoa (Número de 8 dígitos ) Cidade: Cidade que a pessoa reside (Palavra com até 20 caracteres ) País: País que a pessoa reside (Palavra com até 20 caracteres ) Tel.Fixo: Telefone fixo da pessoa (Número com 8 dígitos ) Celular: Celular da pessoa com DD ( Número com 11 dígitos ) TelTrab: Telefone do trabalho da pessoa (Número com 8 dígitos ) Nacionalidade: Nacionalidade da pessoa (Palavra com até 20 caracteres ) RG: Número do Registro Geral (RG) da pessoa (Número com 9 digitos ) OrgãoExp: Órgão de expedição do RG da pessoa (Número com até 10 caracteres ) Aluno Estudante da PUC, que se inscreveu no BRAFITEC. Matrícula: Matrícula do aluno (Número com 7 dígitos ) Dpto: Departamento do aluno (Palavra com até 40 caracteres) 7
Curso: Curso do aluno (Palavra com até 40 caracteres) Dupla Nac: Nacionalidade do aluno (Palavra com até 20 caracteres) Estado Civil: Estado civil do aluno (Palavra com até 10 caracteres ) Conjuge : Pessoa casada com o aluno ( Palavra com até 50 caracteres) Filhos: Quantidade de filhos do aluno (Número de 0 a 50 ) Email: Email do aluno (Palavra com até 30 caracteres) QtdIrmãos: Quantidade de irmãos do aluno (Número de 0 a 50 ) QtdIrmãosPUC: Quantidade de irmãos do aluno que estudam na PUC (Número de 0 até 50 ) Tratamento: Nome do tratamento médico realizado pelo aluno (Palavra com até 100 caracteres) Medicação (Nome do medicamento utilizado pelo aluno Palavra com até 20 caracteres ) Pais Pais de um ou mais alunos da PUC. Profissão: Nome da profissão (Palavra com até 20 caracteres) Responsável Responsável financeiro de um ou mais aluno da PUC. Nome: Nome do responsável (Palavra com até 40 caracteres) RG: RG do responsável (Número com 9 dígitos) CPF: CPF do responsável (Número com 11 dígitos) Histórico Acadêmico Histórico onde é guardado as informações acadêmicas de um aluno, vinculadas à PUC, bem como seu desempenho no TOEFL e no exame francês, caso os tenha feito. Formatura: Ano e mês em que o aluno deverá se formar (Data no formato MM/AAAA) Período Atual: Período atual do aluno na universidade em que estuda ( Número de 0 a 10) QtdTrancamento: Número de matérias trancadas pelo aluno (Número de 0 a 100) QtdReprovações Número de matérias que o aluno reprovou na universidade (Número de 0 a 100) TipoIngresso: Tipo de ingresso na PUC (Palavra com até 20 caracteres) TotCréditos: Total de créditos já cursados pelo aluno ( Número de 0 a 200) CRUltPeríodo: Coeficiente de Rendimento (CR) do aluno no último período (Número de 0.0 a 10.0) 8
CRAtual: Coeficiente de Rendimento(CR) Global do aluno (Número de 0.0 a 10.0) TOEFL: Nota do aluno obtida no exame TOEFL (Número de 0 a 120) DataTOEFL Data em que o aluno realizou o exame TOEFL (Data no formato MM/AAAA) ExameFrances: Nota do aluno obtida no exame francês ( Número de 0 a 700 ) DataExame: Data em que o aluno realizou o exame francês (Data no formato MM/AAAA) ProcessoContra: Explicação de algum processo acadêmico ou estudantil da PUC contra o aluno (Palavra com até 500 caracteres) ProcessoFavor: Explicação de algum processo acadêmico ou estudantil do aluno contra a PUC (Palavra com até 500 caracteres) Disciplina-Histórico Acadêmico Aprovação: Aprovação ou tipo de reprovação do aluno (AP para aprovado, RM para reprovado por média e RF para reprovado por falta). NotaFinal: Nota final do aluno na disciplina (Número real entre 0.0 e 10.0) Inscrição Onde se encontra os detalhes mais específicos e preferências do aluno diante ao BRAFITEC. TipoDeBolsa: O tipo de bolsa desejado pelo aluno (Palavra com até 20 caracteres) Duração: Duração em meses desejada pelo aluno (Número de 0 a 24) SemestreIni: Mês e ano do início do programa (Data no formato MM/AAAA) Motivação: Motivação que levou o aluno a escolher aquela faculdade (Palavra com até 300 caracteres) ÁreaEstudos: Área de estudos desejada pelo aluno ( Palavra com até 100 caracteres) Universidade Universidades que são selecionáveis para o BRAFITEC, pelo aluno. Nome: Nome da universidade (Palavra com 40 caracteres) Inscrição-Universidade Nível de prioridade do aluno Prioridade: Ordem de prioridade de preferência do aluno pela universidade (Número de 1 a 3) 9
4) Restrições Semânticas: Para se inscrever para as Universidades da ParisTech, o aluno deve estar cursando pelo menos o 6º período. Para poder se inscrever no programa o aluno deve ter CR atual maior que 7.5. Um aluno não pode se inscrever em mais de 3 universidades diferentes. Universidades diferentes não podem ter a mesma prioridade para um mesmo aluno. Um mesmo aluno não pode estar realizando mais de uma atividade acadêmica complementar do mesmo tipo. 5) Esquema Lógico: 1. Universidade (NomeUni) 2. AlunoPriorizaUniversidade (Matrícula, NomeUni, Prioridade) o Matrícula referencia Aluno o NomeUni referencia Universidade 3. Disciplina (Código, Nome) 4. Disciplina-Histórico (Matricula, Código, Aprovação, NotaFinal) o Matrícula referencia Aluno o Código referencia Disciplina 5. Atividade Extra (Matrícula, Curso, Língua, Nível) o Matrícula referencia Aluno 6. Pais ( Matrícula, CPFPes, Profissão) O CPFPes referencia Pessoa 7. Pessoa (CPFPes, Nome, Endereço, Número, Apto, Complemento, Bairro, Cep, Cidade, País, Tel.Fixo, Celular, TelTrab, Nacionalidade, RG, OrgãoExp) 8. Monitoria(Matricula, DataIni, DataFim, Disciplina) o Matrícula referencia Aluno 10
9. Estagio(Matricula, DataIni, DataFim, Empresa) o Matrícula referencia Aluno 10. PIBIC(Matrícula, DataIni, DataFim, Orientador) o Matrícula referencia Aluno 11. Responsável (Matrícula, Nome, ID, CPFRes) o Matrícula referencia Aluno 12. País Exterior (NomePaís) 13. Aluno-País Exterior (Matrícula, NomePaís, Período, Intercâmbio, Local, Escola, Série ) o Matrícula referencia Aluno o NomePaís referencia País Exterior 14. Aluno (CPFPes, Matrícula, Dpto, Curso, Dupla Nac., Estado Civil, Conjugue, Filhos, Email, QtdIrmãos, QtdIrmãosPUC, Trat. Méd., Medicação, TipoBolsa, Duração, SemestreIni, Motivação, ÁreaEstudos, Formatura, Período Atual, QtdTrancamento, QtdReprovações, TipoIngresso, TotCréditos, CRUtPeríodo, CRAtual, TOEFL, DataTOEFL, ExameFrances, DataExame, ProcessoFavor, ProcessoContra) O CPFPes referencia Pessoa Observações: Não terá uma tabela Aluno-Inscrição, pois os atributos de Inscrição serão incorporados pela tabela Aluno(visto que a relação é 1 para 1), assim como acontece com o histórico escolar. Sendo assim, Aluno 1:1 Inscrição, aluno incorpora atributos de Inscrição. Aluno 1:1 Histórico Acadêmico, aluno incorpora atributos do Histórico Acadêmico. Então, Aluno teria tudo que é de Aluno, Inscrição e Histórico Acadêmico (até porque não faria sentido separar as informações em suas próprias tabelas pra depois, nas relações, repetir tudo em 1:1). 11
6) Consultas com Álgebra: A) Perguntas envolvendo seleção e/ou projeção, além de junção e suas variações: 1 - Qual é o período de permanência de cada aluno no exterior? RESP π Duração, Matricula (Aluno) 2 - Quais são das escolhas de universidade do aluno de matrícula X juntamente com sua ordem de prioridade? T1 π Matricula (σ Matricula = X (Auno)) T2 T1 x AlunoPriorizaUniversidade RESP π Matricula, NomeUni, Prioridade (T2) 3 - Quais são os pais ou mães que também são responsáveis? T1 Pais x CPF_Pes=CPFRes Responsavel RESP π Nome, CPF_Pes (T1) 4 - Quais atividades extracurriculares o aluno de matrícula X faz? T1 π Matricula (σ MatricuLa = X (Aluno)) RESP π Matricula, Curso, Lingua (T1 x AtividadeExtra) 5 - Exiba os alunos e os países exteriores nos quais já moraram, inclusive os que não foram para nenhum. RESP π Matricula, NomePais ( Aluno ]x Morou ) B) Perguntas envolvendo divisão: 1 - Quais alunos já moraram nos mesmos países exteriores que o aluno com matrícula 1127345? t2 π Matricula, NomePais (Aluno x Morou) t4 π NomePais (σ Matricula=1127345 (t2)) RESP t3 t4 12
C) Perguntas envolvendo interseção e/ou união: 1 - Quais as matrículas dos alunos que realizaram pelo menos duas atividades complementares de tipos diferentes? t1 π Matricula (Aluno x Monitoria) t2 π Matricula (Aluno x Estagio) t3 π Matricula (Aluno x PIBIC) RESP (t1 t2) (t1 t3) (t2 t3) D) Perguntas envolvendo função de agregação (somatórios, médias, etc.): 1 - Quantos alunos são de cada departamento? RESP Dpto g count (Aluno) 2 - Quantas pessoas com C.R acima de X estão escritas na universidade Y? T1 π Matricula, CRatual (σ CRatual > X (Aluno)) T2 T1 x AlunoPriorizaUniversidade T3 σ NomeUni = Y (T2) RESP NomeUni g count (CRatua) (T3) 3 - Qual aluno tem mais atividades extras? T1 Matricula g count(curso) (AtividadeExtra) T2 g max(count(curso)) (T1) T3 T1 x count(curso) = max(count(curso)) T2 RESP π Matricula Aluno x T3 4 - Qual aluno tem maior C.R? T1 δ max(cratua) -> maiorcr (g max(cratual) (Aluno)) T2 π Matricula, CRatual (T1 x maiorcr = CRatual Aluno) 5 - Qual a média do C.R das pessoas inscritas na faculdade X? T1 σ NomeUni = X (AlunoPriorizaUniversidade) T2 Aluno x T1 RESP g average(cratua) (T2) 13
6 - Quantos alunos do periodo X estão fazendo intercambio? T1 σ periodoatual = X (Aluno) RESP g count(matricula) (T1) 7 - Quantas pessoas estão inscritas para a universidade X? T1 σ NomeUni = X (AlunoPriorizaUniversidade) T2 π Matricula, NomeUni (Aluno x T1) RESP g count(nome) (T2) 8 - Liste todos os alunos inscritos na universidade X e suas atividades extracurriculares, mesmo que nenhuma. T1 σ NomeUni = X (AlunoPriorizaUniversidade) T2 Aluno x T1 T3 π Matricula, NomeUni (T2) RESP T3 ]x AtividadeExtra E) Perguntas envolvendo subtração: 1 - Exiba os alunos que já deram monitoria, exceto os que fizeram PIBIC. t1 π Matricula (Aluno x Monitoria) t2 π Matricula (Aluno x PIBIC) RESP t1 - t2 14
7) Consultas com SQL: A) Perguntas envolvendo select (distinct), from e where: 1 - Quantas pessoas com C.R acima de Y estão escritas na universidade X? Select count (S.nome) from aluno as S, universidade, alunopriorizauniversidade where S.cratual > x and universidade.nome= Y and S.matricula = alunopriorizauniversidade.matricula and universidade.nome = alunopriorizauniversidade.nome 2 - Qual é a prioridade (ordem de escolha da faculdade) do aluno X? Select S.nome, S.matricula, T.nome, prioridade from aluno as S, universidade as T, alunopriorizauniversidade where S.matricula = X and T.nome = alunopriorizauniversidade.nome and S.matricula = alunopriorizauniversidade.matricula 3 - Qual é a período de permanência de todos os alunos no exterior? Select nome, duração, matricula from aluno 4 - Quais atividades extracurriculares o aluno X faz? Select nome, matricula, curso, língua from aluno, atividadeextra where matricula = X and aluno.matricula = atividadeextra.matricula B) Perguntas envolvendo outer join, union e/ou intersection: 1 - Quais os nomes e matrículas dos alunos que fizeram estágio ou deram monitoria? (União) (select distinct aluno.matricula, aluno.nome from aluno, monitoria where aluno.matricula = monitoria.matricula) union (select distinct aluno.matricula, aluno.nome from aluno, estagio where aluno.matricula = estagio.matricula) 15
2 - Quais os nomes e matrículas dos alunos que fizeram estágio e deram monitoria? (Interseção) (select distinct aluno.matricula, aluno.nome from aluno, monitoria where aluno.matricula = monitoria.matricula) intersect (select distinct aluno.matricula, aluno.nome from aluno, estagio where aluno.matricula = estagio.matricula) 3 - Exiba os alunos e os países exteriores nos quais já moraram, inclusive os que não foram para nenhum. (Sintaxe "outer join") select aluno.matricula, aluno.nome, alunopaisexterior.nomepais from (aluno left outer join alunopaisexterior on aluno.matricula = alunopaisexterior.matricula) C) Perguntas envolvendo average, max, all e/ou some: 1 - Qual a média de CR dos alunos que são dos departamentos que possuem "Computação" no nome? (Média e operações em strings) select AVG(CRatual) from aluno where dpto like '%Computação%' 2 - Quais os alunos do departamento de computação possuem C.R maior do que todos os alunos do departamento de produção? (sintaxe all e manipulação de strings) select nome,matricula from aluno,pessoa where dpto like %computacao% and pessoa.cpfpes=aluno.cpfpes and CRatual>all (select CRatual from aluno,pessoa where dpto like %producao% and pessoa.cpfpes=alunos.cpfpes) 3 - Citar os nomes e matriculas dos alunos do 5º período que possuam C.R maior que alguns alunos do 6º período (sintaxe some ) select nome,matricula from pessoa where pessoa.cpfpes=aluno.cpfpes and aluno.períodoatual= 5 and CRatual>some (select CRatual from aluno,pessoa where pessoa.cpfpes=aluno.cpfpes and aluno.períodoautal= 6 ) 16
D) Perguntas envolvendo strings (comando like): 1 - Qual o aluno com CR mais alto do departamento de elétrica? select max (CRatual),nome from aluno where dpto like %elétrica% E) Perguntas envolvendo except, not in e/ou is (not) null: 1 - Exiba os alunos que já deram monitoria, exceto os que fizeram PIBIC. (Sintaxe "except" ou "not in" com consulta aninhada) Opção 1: (select distinct aluno.matricula, aluno.nome from aluno, monitoria where aluno.matricula = monitoria.matricula) except (select distinct aluno.matricula, aluno.nome from aluno, pibic where aluno.matricula = pibic.matricula) Opção 2: select distinct aluno.matricula, aluno.nome from aluno, monitoria where aluno.matricula = monitoria.matricula and aluno.matricula not in (select matricula from pibic) 2 - Exiba os alunos que possuem algum processo contra a PUC. (Sintaxe "is null") select aluno.matricula, aluno.nome from aluno where aluno.processofavor is not null F) Perguntas envolvendo exists e/ou order by: 1 - Dizer se existe um aluno que fez iniciação cientifica, estágio e foi monitor de alguma matéria.(sintaxe exists ) select nome,matricula from pessoa where exists (select * from aluno,monitoria,estagio,pibic where pessoa.cpfpes=aluno.cpfpes and pibic.matricula=aluno.matricula and monitoria.matricula=aluno.matricula and aluno.matricula=estagio.matricula) 2 - Listar os nomes dos alunos do 4º período por ordem alfabética e que possuam C.R maior que 8 (sintaxe order by e distinct ) select distinct nome from pessoa,aluno where pessoa.cpfpes=aluno.cpfpes and aluno.cratual> 8 and aluno.períodoatual= 4 order by nome 17