/modelagem-de-banco-de-dados-completa

Trabalho final do curso de Desenvolvimento de Software Multiplataforma da FATEC Franca. Este projeto visa a demonstração abrangente do conhecimento adquirido ao longo do semestre na disciplina de Modelagem de Banco de Dados

Sistema de Gestão Acadêmica para uma Universidade 🎓

📜 Sobre o projeto

O sistema de Gestão Acadêmica uma plataforma integrada que visa otimizar e centralizar a administração de informações acadêmicas. Ele abrange aspectos como registro de estudantes, gerenciamento de cursos, acompanhamento do desempenho dos alunos, atribuição de notas, matrículas em disciplinas, coordenação de cursos e interações entre professores e estudantes. A plataforma oferece eficiência na gestão de dados, facilita processos administrativos, e proporciona uma visão abrangente das atividades acadêmicas, contribuindo para a melhoria da qualidade educacional e facilitando a tomada de decisões institucionais.

📂 Cenário

Em uma renomada universidade, conhecida por sua ampla oferta de cursos e comprometimento com o sucesso acadêmico de seus estudantes, surge a necessidade de implementar um Sistema de Gestão Acadêmica. Este sistema visa otimizar a administração de informações relacionadas a estudantes, cursos, professores, disciplinas e matrículas. A crescente complexidade das operações acadêmicas demanda uma solução eficiente para garantir transparência, eficiência e uma experiência acadêmica aprimorada.

Estudantes são identificados por seu nome e data de nascimento, e a idade é derivada desses dados. O endereço é representado de maneira composta, incluindo rua, número e bairro. Múltiplos emails podem ser associados a um estudante, e o Registro Acadêmico (RA) atua como chave única de identificação.

Cada curso é singularmente identificado por um nome, e a coordenação é representada como um atributo composto, incluindo o nome do coordenador e seu email. Um ID exclusivo distingue cada curso.

Professores têm atributos simples, como nome e data de nascimento, e a disciplina lecionada é multivalorada, indicando que um professor pode ensinar várias disciplinas. O ID é a chave exclusiva de cada professor.

Disciplinas têm atributos simples, como nome da disciplina e aulas semanais. A carga horária é derivada do número de aulas, e um ID exclusivo identifica cada disciplina.

Notas são caracterizadas por atributos simples, como data da avaliação e valor da nota. O ID atua como chave exclusiva para cada nota.

Os relacionamentos são fundamentais neste cenário acadêmico. Estudantes são matriculados em cursos, e professores ministram disciplinas. A relação entre estudantes e disciplinas reflete o fato de que vários estudantes frequentam várias disciplinas e vice-versa.

A coordenação de cursos é uma relação, onde cada curso é coordenado por um único professor, e reciprocamente, um professor coordena no máximo um curso. A atribuição de notas segue uma relação, onde cada nota é atribuída por um único professor, que pode atribuir várias notas. A avaliação é uma relação, indicando que uma disciplina está associada a várias notas por meio de avaliações, e várias notas estão associadas a várias disciplinas.

A implementação desse Sistema de Gestão Acadêmica proporcionará à universidade um controle mais efetivo sobre matrículas, frequências, desempenho acadêmico e coordenação de cursos. Essa solução abrangente visa aprimorar a experiência acadêmica de estudantes, professores e administradores, contribuindo para o sucesso educacional e administrativo da instituição.

📊 Modelagem Conceitual

Modelagem de Banco de Dados Completa

🔢 Modelagem Lógica

Modelagem Lógica

⚙️ Modelagem Física

Foi utilizado o seguinte código para a implementação desse cenário no SQL Server:

CREATE table Estudante (
RA INT PRIMARY Key,
Nome VARCHAR(60),
Data_nasc DATE,
Idade INT,
Endereco VARCHAR(60),
Rua VARCHAR(60),
N INT,
Bairro VARCHAR(60),
Email VARCHAR(60),
);

CREATE TABLE Email (
id INT PRIMARY KEY,
Email VARCHAR(60),
estudante_ra INT,
FOREIGN KEY (estudante_ra) REFERENCES Estudante(RA)
);

CREATE table Curso (
id INT PRIMARY Key,
Nome VARCHAR(60),
Coordenacao VARCHAR(60),
Nome_cord VARCHAR(60),
Email_cord VARCHAR(60),
);

CREATE TABLE EstudanteCurso (
estudante_ra INT,
curso_id INT,
PRIMARY KEY (estudante_ra, curso_id),
FOREIGN KEY (estudante_ra) REFERENCES Estudante(RA),
FOREIGN KEY (curso_id) REFERENCES Curso(id)
);

CREATE TABLE Email_Cord (
id INT PRIMARY KEY,
Email VARCHAR(60),
curso_id INT,
FOREIGN KEY (curso_id) REFERENCES Curso(id)
);

CREATE table Disciplina (
id INT PRIMARY Key,
Nome VARCHAR(60),
Aulas_semanais INT,
Carga_horaria INT,
);

CREATE TABLE EstudanteDisciplina (
estudante_ra INT,
disciplina_id INT,
PRIMARY KEY (estudante_ra, disciplina_id),
FOREIGN KEY (estudante_ra) REFERENCES Estudante(RA),
FOREIGN KEY (disciplina_id) REFERENCES Disciplina(id)
);

CREATE TABLE NotaDisciplina (
nota_id INT,
disciplina_id INT,
PRIMARY KEY (nota_id, disciplina_id),
FOREIGN KEY (nota_id) REFERENCES Nota(id),
FOREIGN KEY (disciplina_id) REFERENCES Disciplina(id)
);

CREATE table Professor (
id INT PRIMARY Key,
Nome VARCHAR(60),
data_nasc DATE,
Disciplinas_lecionadas VARCHAR(60),
);

CREATE TABLE Disciplinas_leciona (
id INT PRIMARY KEY,
Disciplinas VARCHAR(60),
professor_id INT,
FOREIGN KEY (professor_id) REFERENCES Professor(id)
);

CREATE table Nota (
id INT PRIMARY Key,
Data_avaliacao DATE,
Valor_nota INT,
);

💻 Dados

Aqui segue a iserção de dados de todas as tabelas:

Estudante: insert_tabela_estudante

tabela_estudante

Email: insert_tabela_email

tabela_email

Curso: insert_tabela_curso

tabela_curso

EstudanteCurso:insert_tabela_estudantecurso

_tabela_estudantecurso

Disciplina: insert_tabela_disciplina

tabela_disciplina

EstudanteDisciplina: insert_tabela_estudante_disc

tabela_estudante_disc

Email_Cord: insert_tabela_email_c

tabela_email_c

Professor: insert_tabela_professor

tabela_professor

Disciplinas_leciona: tabela_dis_l

insert_tabela_dis_l

Nota: insert_tabela_nota

tabela_nota

NotaDisciplina: insert_tabela_notadisc

tabela_notadisc

💾 CRUD

Inserção de dados: inserção

Leitura de Dados: leitura

Alteração de Dados: atualização

Deleção: deleção

📋 Relatórios


  1. Seleção Simples


  2. Filtro por Condição


  3. Ordenação Crescente


  4. ordenação descrescente


  5. Seleção com Join de Duas Tabelas


  6. Filtro com Join e Ordenação


  7. Seleção com Agregação


  8. Filtro com Agregação e Ordenação


  9. Seleção com Subconsulta


  10. Filtro com Junção Múltipla