Trabalho 1 Banco de Dados Prof. Sérgio Lifschitz Alessandro Faletti Alexandre Maxinsang Guilherme Araújo Gabriel Hering Matheus França Gabriel Oliveira
1. Descrição do Sistema A Coordenação Central de Cooperação Internacional deseja desenvolver um sistema de administração dos alunos inscritos para fazer intercambio pela PUC-Rio. Nesse banco de dados vai possuir os dados dos alunos, onde deve ser armazenado a matricula, o CPF, nome do aluno, endereço, CEP, número da casa, complemento, bairro, cidade, pais, telefone residencial, telefone celular, telefone de trabalho caso possua, nacionalidade, se possui ou não dupla nacionalidade e qual é, RG, Órgão expedidor, data de nascimento, Estado civil, se vive ou não com seu conjugue marital, nome do conjugue, nome dos filhos se possuir, E-mail, quantidade de irmãos, quantidade de irmãos que estudam na PUC, motivo da escolha das universidades indicadas e a área pretendida para o intercâmbio. Deve se armazenar o local de trabalho do aluno, onde deve ter o código do trabalho, matricula do aluno, nome da empresa e o vínculo com a empresa. Precisa-se de uma documentação que vai possuir a matricula do aluno, os caminhos para os arquivos escaneados do requerimento, do RG e o CPF do aluno, do RG e o CPF do responsável, da taxa de inscrição, do documento Projeto Profissional, do curriculum vitae, do comprovante da bolsa, das cartas de recomendação, dos comprovantes de outras atividades acadêmicas, do histórico médico, do histórico escolar, e de qualquer documento comprovante de outra atividade. Também precisa ser armazenado sua filiação, onde será armazenado a matricula e o nome do aluno, armazenar o tipo se é pai ou mãe, com nacionalidade, profissão, endereço, CEP, número da casa, complemento, bairro, cidade, estado, pais, telefone de residência, telefone celular e telefone de trabalho do mesmo. Se o aluno tiver feito algum curso de línguas, o mesmo também deve ser armazenado, com a matricula do aluno, o curso, a língua estudada, o nível atingido no curso, a nota do TOEFL, data do exame TOEFL, exame de proficiência na língua do pais pretendido, resultado da prova de proficiência e a data do exame de proficiência. Caso já tenha morado no exterior, precisara ter a matricula do aluno armazenada, junto com o pais, ano de início e ano de fim de sua estadia, qual o tipo de intercambio ele fez, o nome do curso, colégio ou escola o aluno estudou, o local do curso e as series que o aluno cursou no exterior. O sistema vai possuir os dados acadêmicos do aluno, onde vai incluir a matricula, a habilitação, o período, a data prevista de formatura, períodos onde podem ter ocorrido um trancamento, o tipo de bolsa que ele possui, percentual da bolsa, tipo de ingresso na PUC, total de créditos acumulados, o CR do último período, o CR acumulado, o período em que ele teve bolsa pelo PIBIC, nome do orientador do PIBIC, as respostas das perguntas : Moveu ou está movendo algum processo de qualquer tipo contra a PUC-Rio? Especifique., Respondeu ou está respondendo algum tipo de processo (administrativo, disciplinar, etc.) na PUC-Rio?, Está se submetendo a algum tratamento médico? Qual? e Toma alguma medicação regularmente? Qual?. A CCCI também necessita saber se o aluno já deu monitoria, e caso afirmativo, necessita-se guardar a matricula do aluno, a disciplina em que foi dada a monitoria como também o período e as atividades na monitoria.
No caso do aluno ter estagiado, será armazenado o código e a matricula, além da empresa em que estagiou junto com o período do estágio. Para o intercambio, o aluno deverá decidir entre as universidades cadastradas, opções para onde o mesmo deseja ir. Para isso terá o cadastro das universidades que possuem convenio com a faculdade possuindo um código identificador, o nome da instituição e o pais de origem. Já na escolha do aluno será armazenado a matricula do aluno, o código da universidade, a opção do aluno, o tipo de intercambio, a bolsa de estudos que será utilizado, o semestre de início do intercambio e a autorização ao CCCI da seleção para outra universidade caso não consiga vaga nas universidades escolhidas. Para finalizar se terá também um requerimento, com um código, matricula do aluno, nome da primeira testemunha, com RG e CPF da primeira, uma segunda testemunha, data de recebimento do requerimento e o nome de quem recebeu o requerimento.
2. Modelagem ER
3. Lista de Atributos 1. Aluno Matricula[Atributo Identificador] -Matrícula do aluno, número com 7 dígitos, de acordo com as regras de geração da PUC-RIO; CPF - atributo que descreve o número de CPF do aluno. O número do CPF é representado por um número de 11 dígitos tal que os dígitos podem ser apenas 0, 1, 2, 3, 4, 5, 6, 7, 8, e 9 ; Nome - Nome do alunocompleto, stringcom limite de 50 caracteres; Endereço - Endereço do aluno, stringcom limite de 20 caracteres; CEP - CEP do aluno, númerocom limite de 8 dígitos; Número - Número referente a casa/apartamento do aluno; Complemento - Atributo referente ao complemento do endereço do aluno, string de até 20 caracteres; Bairro -Atributo referente ao bairro da residência do aluno; Cidade - Atributo referente a cidade da residência do aluno; Tel_Res - Atributo referente ao telefone fixo do aluno, com limite de 8 dígitos; Tel_Celular - Atributo referente ao telefone celular do aluno, com limite de 8 dígitos; Nacionalidade - Atributo referente a nacionalidade do aluno, string com limite de 10 caracteres; Dupla_Nac - Atributo referente se aluno tem ou não tem dupla nacionalidade, e qual é, string com limite de 10 caracteres; RG - Atributo referente ao número da identidade do aluno, com limite de 9 dígitos; Org_Exp - Atributo referente ao orgão expedidor do documento de identidade aluno, string com limite de 10 caracteres; Data_Nasc - Atributo referente a data de nascimento do aluno, no formato dd/mm/aaaa; Estado_Civil - Atributo referente ao estado civil do aluno, string com limite de 10 caracteres; Nome_do_Conjuge - Atributo referente ao nome do cônjuge do aluno, se este vive maritalmente, string com limite de 50 caracteres; Filhos - Atributo referente a quantidade de filhos do aluno, caso o mesmo tenha, número com limite de 2 dígitos; Email - Atributo referente ao email do aluno, string com limite de 30 caracteres; Irmaos - Atributo referente a quantidade de irmãos do aluno, caso o mesmo tenha, número com limite de 2 dígitos; Irmaos_PUC - Atributo referente a quantidade de irmãos do aluno que estudam na PUC-RIO, caso o mesmo tenha, número com limite de 2 dígitos; Motivo - Atributo referente a pergunta: "Qual o motivo da escolha das universidades indicadas?", string com limite de 2000 caracteres;
Area_Pret - Atributo referente a área de estudo pretendida do aluno, string com limite de 50 caracteres; 2. Universidades Id_Un[Atributo Identificador] - Atributo referente a um identificador de cada universidade cadastrada no sistema; Nome - Atributo referente ao nome da universidade oferecida pelo CCCI, string com limite de 50 caracteres; País - Atributo referente ao país ao qual a universidade está localizada, string com limite de 30 caracteres; 3. Opta Opcao - Atributo referente a prioridade da escolha de tal universidade desse aluno, número entre [1,3]; Tp_Intercambio - Atributo referente ao tipo de intercâmbio desejado, string com limite de 30 caracteres, Ex.: Duplo Diploma; Tp_Bolsa - Atributo referente ao tipo de bolsa ele deseja concorrer, string com limite de 30 caracteres, Ex.: Brafitec; Sem_inicio - Atributo referente ao semestre de início do intercâmbio, stringno formato aaaa.n, onde aaaa é um número formando o ano e 'n' = número 1 ou 2 referente ao período, Ex.: 2015.1; 4. Filiacao Nome - Tipo texto com limite de 50 caracteres / Chave primária em conjunto com Matricula da tabela; CPF - Atributo referente ao CPF do Pai ou da Mãe, número com limite de 11 dígitos; Tp_Parentesco Atributo referente a qual o tipo de parentesco ele tem com o aluno, string com valores de P para Pai e M para Mãe; Nacionalidade - Atributo referente a nacionalidade do filiado, string com limite de 20 caracteres; Profissão - Atributo referente a profissão do filiado, string com limite de 50 caracteres; Endereço - Atributo referente ao endereço do filiado, string com limite de 20 caracteres; CEP - Atributo referente ao CEP do filiado, número com limite de 8 dígitos; Número - Atributo referente ao número da residência do filiado; Complemento - Atributo referente ao complemento da residência do filiado, string com limite de 30 caracteres; Bairro - Atributo referente ao bairro da residência do filiado, string com limite de 10 caracteres;
Cidade - Atributo referente a cidade da residência do filiado, string com limite de 10 caracteres; Estado - Atributo referente ao estado da residência do filiado, string com limite de 10 caracteres; Tel_Res - Atributo referente ao telefone fixo do filiado, com limite de 8 dígitos; Tel_Celular - Atributo referente ao telefone celular do filiado, com limite de 9 dígitos; Tel_Trabalho - Atributo referente ao telefone do trabalho do filiado, com limite de 8 dígitos; RG-Atributo referente ao número de identidade do filiado, com limite de 9 dígitos; 5. Dados_Academicos Matricula [Atributo Identificador] - Matrícula do aluno, número com 7 dígitos, de acordo com as regras de geração da PUC-RIO; Habilitacao - Atributo referente a habilitação ou ênfase do aluno da PUC, string com limite de 20 caracteres; Periodo - Atributo referente ao período do aluno na PUC, número com limite de 2 dígitos, Ex.: 2º, 3º, 7º ; Form_Prev - Atributo referente ao ano de formatura prevista do aluno, número no formato aaaa; Periodos_Tranc - Atributo referente aos períodos que o aluno trancou a matrícula, string formada por aaaa.n, onde aaaa é um número referente ao ano e n = número 1 ou 2. Pode-se incluir mais períodos, onde estes são separados por ';'. Ex.: 2015.2, 2014.2;2015.1 ; Tp_Bolsa - Atributo referente ao tipo de bolsa de estudos o aluno possui na PUC, caso o mesmo tenha, string com limite de 20 caracteres; Perc - Atributo referente ao percentual da bolsa de estudos do aluno, número com limite de 3 dígitos; Ingr_PUC - Atributo referente ao tipo de ingresso na PUC, string com limite de 20 caracteres, Ex.: Vestibular, Transferência; Cred_Ac - Atributo referente ao total de créditos acumulados do aluno, número com limite de 3 dígitos; CR_UP - Atributo referente ao Coeficiente de Rendimento do último período do aluno, número com limite de 2 dígitos; CR_Ac - Atributo referente ao Coeficiente de Rendimento acumulado do aluno, número com limite de 2 dígitos; Bolsa_PIBIC_Periodo - Atributo referente ao período que o aluno teve a bolsa PIBIC, string no formato aaaa.n, onde 'aaaa' é referente o ano e 'n' ao período, Ex.: 2015.1; PIBIC_Orientador - Atributo referente ao nome do orientador da bolsa PIBIC, string com limite de 50 caracateres;
P1 - Atributo referente a pergunta "Moveu ou está movendo algum processo de qualquer tipo contra a PUC-Rio? Especifique", string com limite de 2000 caracteres; P2 - Atributo referente a pergunta "Respondeu ou está respondendo a algum tipo de processo(administrativo, disciplinar, etc.) na PUC-Rio?", string com limite de 2000 caracteres; P3 - Atributo referente a pergunta "Está se submetendo a algum tratamento médico? Qual?", string com limite de 2000 caracteres; P4 - Atributo referente a pergunta "Toma alguma medicação regularmente? Qual?", string com limite de 2000 caracteres; 6. Testemunha Testemunha1 - Atributo referente ao nome da primeira testemunha, string com limite de 50 caracteres; ID - Atributo referente ao RG da primeira testemunha, número com limite de 9 dígitos; CPF - Atributo referente ao CPF da primeira testemunha, número com limite de 11 dígitos; Testemunha2 - Atributo referente ao nome da segunda testemunha, string com limite de 50 caracteres; Data_Rec - Atributo referente a data de recebimento do requerimento, no formato dd/mm/aaaa; Rec_Por - Atributo referente ao nome de quem recebeu o requerimento, string com limite de 50 caracteres; 7. Trabalho Empresa - Atributo referente ao nome da empresa/organização que o aluno já trabalhou, string com limite de 50 caracteres; Vinculo - Atributo referente ao tipo de vínculo o aluno teve no trabalho; 8. Curso_Linguas Curso [Atributo Identificador] - Atributo referente ao nome do curso que o aluno cursou, string com limite de 50 caracteres; Lingua [Atributo Identificador] - Atributo referente ao nome da língua que o aluno estudou no curso, string com limite de 20 caracteres; Nível - Atributo referente ao nível atingido no curso, string com limite de 30 caracteres; Resultado_TOEFL - Atributo referente ao resultado do TOEFL; Data_ExameT - Atributo referente a data que foi realizado o exame TOEFL, string no formato dd/mm/aaaa; Resultado_OLE - Atributo referente ao resultado de outro exame de outra língua estrangeira, caso tenha realizado algum; Ex_Profiencia - Atributo referente ao exame de proficiência na língua do país pretendido, string com limite de 50 caracteres;
ResulP - Atributo referente ao resultado do exame de proficiência; Data_ExameP - Atributo referente a data que foi realizado o exame de proficiência, string no formato dd/mm/aaaa; 9. Exterior País - Atributo referente ao país que o aluno morou no exterior, string com limite de 30 caracteres ; Ano_ini - Atributo referente ao ano que o aluno começou a morar no exterior, número com limite de 4 dígitos; Ano_fim- Atributo referente ao ano que o aluno terminou de morar no país, número com limite de 4 dígitos; Intercâmbio - Atributo referente ao tipo de intercâmbio, se morou no exterior por intercâmbio, string com limite de 30 caracteres ; CCE - Atributo referente ao nome do curso, colégio ou escola o aluno estudou, string com limite de 40 caracteres; Local - Atributo referente ao local do curso, colégio ou escola, string com limite de 40 caracteres; Séries - Atributo referente as séries que o aluno cursou no exterior; 10. Monitoria Disciplina - Atributo referente ao código ou nome da disciplina; Periodo - Atributo referente ao período que foi monitor, número no formato aaaa, onde aaaa é um ano; Atividades - Atributo referente as atividades na monitoria (Opcional); 11. Estagio Empresa - Atributo referente ao nome da empresa, string com limite de 40 caracteres; Periodo - Atributo referente ao período que estagiou; 12. Documentacao Requerimento - Atributo contendo o caminho referente ao documento escaneado; A_RG - Atributo contendo o caminho referente ao documento(rg do Aluno) escaneado; A_CPF - Atributo contendo o caminho referente ao documento(cpf do Aluno) escaneado; R_RG - Atributo contendo o caminho referente ao documento(rg do Responsável) escaneado; R_CPF - Atributo contendo o caminho referente ao documento(cpf do Responsável) escaneado; TXInsc - Atributo contendo o caminho referente ao documento(taxa de Inscrição - 1ª parcela) escaneado;
ProjP - Atributo contendo o caminho referente ao documento(projeto Profissional) escaneado; CVitae - Atributo contendo o caminho referente ao documento(curriculum Vitae) escaneado; Comp_Bolsa - Atributo contendo o caminho referente ao documento(comprovante de bolsa) escaneado; Cartas_Rec - Atributo contendo o caminho referente aos documentos(cartas de documentação) escaneado / Endereço separados por ";" ; Comp_Ativ - Atributo contendo o caminho referente aos documentos(comprovante de outras atividades acadêmicas) escaneado / Endereço separados por ";" ; Hist_Medio - Atributo contendo o caminho referente ao documento(histórico Ensino Médio) escaneado; Hist_Esc - Atributo contendo o caminho referente ao documento(histórico Escolar da PUC-RIO) escaneado; Outros - Atributo contendo o caminho referente aos documentos(qualquer outro comprovante de outra atividade) escaneado; 4. Modelagem Relacional Aluno (Matricula, CPF, Nome, Endereço, CEP, Número, Complemento, Bairro, Cidade, País, Tel_Res, Tel_Celular, Tel_Trabalho, Nacionalidade, Dupla_Nac, RG, Org_Exp, Data_Nasc, Estado_Civil, Nome_do_Conjuge, Filhos, Email, Irmaos, Irmaos_PUC, Motivo, Area_Pret); FK/ Trabalho (Matricula, Empresa, Vinculo); FK/ Documentacao (Matricula, Requerimento, A_RG, A_CPF, R_RG, R_CPF, TXInsc, ProjP, CVitae, Comp_Bolsa, Cartas_Rec, Comp_Ativ, Hist_Medio, Hist_Esc, Outros); Filiacao (Nacionalidade, Tp_Parentesco, Profissão,Endereço, CEP, Número, Complemento, Bairro, Cidade, Estado, País, Tel_Res, Tel_Celular, Tel_Trabalho, Matricula, Nome); FK
Curso_Linguas (Nível, Resultado_TOEFL, Data_ExameT, Ex_Profiencia, ResulP, Data_ExameP, Matricula, Curso, Lingua); FK Exterior (Matricula, Ano_ini,Ano_fim,País, Intercâmbio, CCE, Local, Séries); FK Dados_Academicos (Habilitacao, Periodo, Form_Prev, Periodos_Tranc, Tp_Bolsa, Perc, Ingr_PUC, Cred_Ac, CR_UP, CR_Ac, Bolsa_PIBIC_Periodo, PIBIC_Orientador, P1, P2, P3, P4, Matricula); FK/ Monitoria (Matricula, Disciplina, Periodo, Atividades); FK Estagio (Matricula, Periodo, Empresa); FK Universidades (Id_Un, Nome, País); Opta (Matricula, Id_Un, Opcao, Tp_Intercambio, Tp_Bolsa, Sem_inicio); FK Testemunha (Matricula, Data_Rec, Testemunha1, ID, CPF, Testemunha2, Rec_Por); FK
5. Restrição de Integridade Semântica 1.Somente o aluno que não possui mais que 3 reprovações, pode se inscrever. 2.Países de língua inglesa: Exige-se comprovante do TOEFL, com pontuação mínima de 80. 6. Consultas em Álgebra Relacional 1- Exibir o nome de todos os alunos(exemplo de Projeção). Resp πnome(aluno) 2- Exibir o nome dos alunos que fizeram curso de língua inglesa(exemplo de Seleção,Produto Cartesiano e Renomeação). t1 πmatricula (σlingua = "Ingles" (Curso_Linguas)) t2 t1 x (δmatricula A_Matricula (Aluno)) Resp πnome(σa_matricula = Matricula (t2)) 3- Exibir o estado civil dos alunos que tiraram a maior nota no exame TOEFL, entre os que fizeram(exemplo de Função de Agregação). t1(resultado_toefl) gmax (Resultado_TOEFL) (Curso_Linguas) t2 πmatricula (t1 x Curso_Linguas) Resp πestado_civil (t2 x Aluno)
4- Exibir a matricula de todos os alunos que estagiaram ou foram monitores(exemplo de União). t1 πmatricula (Monitoria) t2 πmatricula (Estagio) Resp t1 U t2 5- Exibir a matricula dos alunos que nunca moraram no exterior(exemplo de Subtracão). t1 πmatricula (Exterior) t2 πmatricula (Aluno) Resp t1 - t2 6- Exibir o nome dos alunos que optam pelas mesmas universidades que Mauricio Souza Junior(exemplo de Divisão e Natural JOIN). t1 πmatricula (σnome = "Mauricio Souza Junior" (Aluno)) t2 πid_un (t1 x Opta) t3 πmatricula (Opta t2) Resp πnome (t3 x Aluno) 7- Exibir a matricula e a media aritmética do CR (coeficiente de rendimento) do ultimo periodo e o CR acumulado total de todos os alunos(exemplo de Projeção Generalizada). Resp πmatricula,(cr_up+cr_ac) 2 (Dados_Academicos) 8- Exibir o nome de todos os alunos e as disciplinas as quais foram monitores(exemplo de Outer JOIN, neste caso left outer join).
7. Consultas em SQL Resp πnome, Disciplina (Aluno ]x Monitoria) 1 Listar o nome, em ordem alfabética, de todos os alunos. (Exemplo de ORDER BY) SELECT Nome FROM Aluno ODER BY Nome 2 Listar o nome de todos os alunos que moraram no exterior. (Exemplo de Subconsultas Aninhadas (Nested Subqueries)) SELECT Nome FROM Aluno AS A WHERE A.Matricula IN (SELECT Matricula FROM Exterior ) 3 Mostrar a o CR médio dos candidatos a intercâmbio. (Exemplo de Aggregate Functions) SELECT AVG (CR_Ac) FROM Dados_Acad 4 Listar o nome e a matricula de todos os alunos cujo nome contém Oliveira (Exemplo do operador LIKE) SELECT Nome, Matricula FROM Aluno WHERE Nome LIKE %Oliveira%
5 Listar o CPF dos alunos que moraram no exterior, fizeram monitoria, ou ambos. (Exemplo de Operação de Conjunto (Set Operations)) (SELECT CPF FROM Aluno AS A WHERE A.Matricula IN (SELECT Matricula FROM Monitoria) ) UNION (SELECT CPF FROM Aluno AS A WHERE A.Matricula IN (SELECT Matricula FROM Exterior ) ) 6 Listar nome, CPF e estado civil de todos os alunos que não tem filhos. (Exemplo do predicado IS NULL) SELECT Nome, CPF, Estado_Civil FROM Aluno WHERE Filhos IS NULL 7 Listar a matricula de todos os alunos que tem o CR maior que um algum aluno do 3º período. (Exemplo da cláusula SOME) SELECT Matricula FROM Dados_Acad WHERE CR_Ac > SOME (SELECT CR_Ac FROM Dados_Acad WHERE Periodo = 3 ) 8 Listar a matricula de todos os alunos que fizeram algum curso de línguas e monitoria. (Exemplo de EXISTS) SELECT Matricula FROM Curso_Linguas as C
WHERE EXISTS (SELECT * FROM Monitoria AS M WHERE C.Matricula = M.Matricula) 9 Listar a matricula de todos os alunos que fizeram monitoria entre 2013.1 e 2015.2. (Exemplo de Conjuntos Explícitos (Explicit Sets) e do operador DISTINCT) SELECT DISTINCT Matricula FROM Monitoria WHERE Periodo IN (20131, 20132, 20141, 20142, 20151, 20152) 10 Listar a matricula dos alunos que fizeram curso de línguas e moraram no exterior. (Exemplo do operador JOIN) SELECT Matricula FROM Curso_Linguas NATURAL INNER JOIN Exterior 11 Listar o endereço dos alunos que moram no mesmo endereço que seus pais (pai ou mãe). (Exemplo de Consultas Aninhadas Correlacionadas (Correlated Nested Queries)) SELECT A.Endereco, A.Bairro, A. Numero FROM Aluno AS A WHERE A.Matricula IN (SELECT Matricula FROM Filiacao WHERE A.Endereco = Endereco AND A.Bairro = Bairro AND A.Numero = Numero ) 12 Mostrar o nome do aluno que tem o maior CR acumulado. (Exemplo da cláusula ALL) SELECT Nome FROM Aluno AS A WHERE A.Matricula IN (SELECT Matricula FROM Dados_Acad WHERE CR_Ac > ALL (SELECT CR_Ac FROM Dados_Acad) ) 13 Listar a matrícula de todos os alunos que tem o CR acumulado maior que os alunos que ingressaram na PUC em 2011.
SELECT D1.Matricula FROM Dados_Acad AS D1, Dados_Acad AS D2 WHERE D1.CR_Ac > D2.CR_Ac AND D2.Ingr_PUC = 2011