# Atividade 2 ## Mapeamento Modelo Entidade-Relacionamento para modelo relacional **Aluno** (<ins>numero_aluno</ins>, cpf, rg, data_nascimento, telefone_fixo, telefone_celular, primeiro_nome, nome_intermediario, sobrenome, logradouro, numero, complemento, tipo_logradouro, bairro, cidade, estado, cep, id_curso) **Disciplina** (<ins>id_disciplina</ins>, nome, sigla, programa, ementa, bibliografia, carga_horaria) **PreRequisito** (<ins>id_disciplina</ins>, <ins>id_pre_requisito</ins>) **Curso** (<ins>id_curso</ins>, nome, sigla, site, telefone, codigo_departamento) **Departamento** (<ins>codigo_departamento</ins>, nome, sigla, email, telefone) **matricula_disciplina** (<ins>numero_aluno</ins>, <ins>id_disciplina</ins>) **conclusao_disciplina** (<ins>numero_aluno</ins>, <ins>id_disciplina</ins>) **oferece** (<ins>id_curso</ins>, <ins>id_disciplina</ins>, disciplina_obrigatoria) ## Criação das tabelas e Inserção de dados aleatórios ### Departamento ```sql= CREATE TABLE "Universidade"."Departamento" ( codigo_departamento INT NOT NULL, nome VARCHAR(50) NOT NULL, sigla VARCHAR(10) NOT NULL, email TEXT NOT NULL, telefone VARCHAR(11) NOT NULL, PRIMARY KEY (codigo_departamento) ); ``` ### Curso ```sql= CREATE TABLE "Universidade".curso ( id_curso INT NOT NULL, nome TEXT NOT NULL, sigla VARCHAR(10), site TEXT, telefone VARCHAR(11), codigo_departamento INT, PRIMARY KEY(id_curso), CONSTRAINT codigo_departamento FOREIGN KEY (codigo_departamento) REFERENCES "Universidade"."Departamento" (codigo_departamento) ON UPDATE CASCADE ON DELETE CASCADE ); ``` ### Disciplina ```sql= CREATE TABLE "Universidade".disciplina ( id_disciplina INT NOT NULL, nome TEXT NOT NULL, sigla VARCHAR(10), programa TEXT, ementa TEXT, bibliografia TEXT, carga_horaria FLOAT8, PRIMARY KEY(id_disciplina) ); ``` ### Aluno ```sql= CREATE TABLE "Universidade"."Aluno" ( numero_aluno INT NOT NULL, rg VARCHAR(8) NOT NULL, data_nascimento date NOT NULL, telefone_fixo VARCHAR(11), telefone_celular VARCHAR(11), primeiro_nome text NOT NULL, nome_intermediario text NOT NULL, sobrenome text NOT NULL, logradouro text NOT NULL, numero text NOT NULL, complemento text, tipo_logradouro text, bairro text NOT NULL, cidade text NOT NULL, estado text NOT NULL, cep VARCHAR(8) NOT NULL, id_curso INT, cpf VARCHAR(11) NOT NULL, PRIMARY KEY (numero_aluno), CONSTRAINT id_curso FOREIGN KEY (id_curso) REFERENCES "Universidade".curso (id_curso) ); ``` ### Relacionamentos #### Pré requisito Disciplina ```sql= CREATE TABLE "Universidade"."PreRequisito" ( id_disciplina INT NOT NULL, id_pre_requisito INT NOT NULL, PRIMARY KEY (id_disciplina, id_pre_requisito), CONSTRAINT id_disciplina FOREIGN KEY (id_disciplina) REFERENCES "Universidade"."Disciplina" (id_disciplina) CONSTRAINT id_pre_requisito FOREIGN KEY (id_pre_requisito) REFERENCES "Universidade"."Disciplina" (id_disciplina) ); ``` #### Matrícula Disciplina ```sql= CREATE TABLE "Universidade".matricula_disciplina ( numero_aluno INT NOT NULL, id_disciplina INT NOT NULL, PRIMARY KEY (numero_aluno, id_disciplina), CONSTRAINT numero_aluno FOREIGN KEY (numero_aluno) REFERENCES "Universidade"."Aluno" (numero_aluno) CONSTRAINT id_disciplina FOREIGN KEY (numero_aluno) REFERENCES "Universidade"."Disciplina"(id_disciplina) ); ``` #### Conclusão Disciplina ```sql= CREATE TABLE "Universidade".conclusao_disciplina ( numero_aluno INT NOT NULL, id_disciplina INT NOT NULL, PRIMARY KEY (numero_aluno, id_disciplina), CONSTRAINT numero_aluno FOREIGN KEY (numero_aluno) REFERENCES "Universidade"."Aluno" (numero_aluno) CONSTRAINT id_disciplina FOREIGN KEY (id_disciplina) REFERENCES "Universidade"."Disciplina" (id_disciplina) ); ``` #### Oferece ```sql= CREATE TABLE "Universidade".oferece ( id_curso INT NOT NULL, id_disciplina INT NOT NULL, disciplina_obrigatoria BOOL, PRIMARY KEY (numero_aluno, id_disciplina) CONSTRAINT id_curso FOREIGN KEY (id_curso) REFERENCES "Universidade".curso (id_curso) CONSTRAINT id_disciplina FOREIGN KEY (id_curso) REFERENCES "Universidade"."Disciplina" (id_disciplina) ); ``` ## Consultas ### Colsultas para mostrar todos os dados das tabelas #### Departamento ```sql= SELECT * FROM "Universidade"."Departamento"; ``` ![](https://i.imgur.com/DoqtwwX.png) #### Curso ```sql= SELECT * FROM "Universidade".curso; ``` ![](https://i.imgur.com/UkTGWXM.png) #### Disciplina ```sql= SELECT * FROM "Universidade".disciplina; ``` ![](https://i.imgur.com/VZssKjP.png) #### Aluno ```sql= SELECT * FROM "Universidade"."Aluno"; ``` ![](https://i.imgur.com/gf661ID.png) #### Pré requisito Disciplina ```sql= SELECT * FROM "Universidade"."PreRequisito" ``` ![](https://i.imgur.com/kLBYzY4.png) #### Matrícula Disciplina ```sql= SELECT * FROM "Universidade".matricula_disciplina ``` ![](https://i.imgur.com/HWQn7Vk.png) #### Conclusão Disciplina ```sql= SELECT * FROM "Universidade".conclusao_disciplina ``` ![](https://i.imgur.com/mQlfrPv.png) #### Oferece ```sql= SELECT * FROM "Universidade".oferece ``` ![](https://i.imgur.com/FZjwYV7.png) ### Consulta Relacionamentos Binários #### Aluno <> Curso ```sql= SELECT * FROM "Universidade"."Aluno" INNER JOIN "Universidade".curso ON "Universidade".curso.id_curso = "Universidade"."Aluno".id_curso ``` #### Curso <> Disciplina ##### oferece ```sql= SELECT * FROM "Universidade".oferece INNER JOIN "Universidade".curso ON "Universidade".curso.id_curso = "Universidade".oferece.id_curso INNER JOIN "Universidade"."Disciplina" ON "Universidade"."Disciplina".id_disciplina = "Universidade".oferece.id_disciplina ``` #### Aluno <> Disciplina ##### matricula_disciplina ```sql= SELECT * FROM "Universidade".matricula_disciplina INNER JOIN "Universidade"."Aluno" ON "Universidade"."Aluno".numero_aluno = "Universidade".matricula_disciplina.numero_aluno INNER JOIN "Universidade"."Disciplina" ON "Universidade"."Disciplina".id_disciplina = "Universidade".matricula_disciplina.id_disciplina ``` ##### conclusao_disciplina ```sql= SELECT * FROM "Universidade".conclusao_disciplina INNER JOIN "Universidade"."Aluno" ON "Universidade"."Aluno".numero_aluno = "Universidade".conclusao_disciplina.numero_aluno INNER JOIN "Universidade"."Disciplina" ON "Universidade"."Disciplina".id_disciplina = "Universidade".conclusao_disciplina.id_disciplina ``` #### Curso <> Departamento ```sql= SELECT * FROM "Universidade".curso INNER JOIN "Universidade"."Departamento" ON "Universidade"."Departamento".codigo_departamento = "Universidade".curso.codigo_departamento ```