Este projeto implementa o modelo de dados para o gerenciamento de uma faculdade. Ele inclui tabelas para alunos, professores, disciplinas, cursos, departamentos e os relacionamentos necessários para atender aos requisitos do sistema.
modelo_logico_faculdade.sql
: Script SQL contendo a estrutura do banco de dados relacional.modelagem_dados.md
: Modelagem de dados, incluindo o dicionário de atributos, normalização e diagramas.README.md
: Documentação sobre o projeto.
- Um ambiente de banco de dados relacional, como:
- MySQL (versão 8.0 ou superior)
- PostgreSQL (versão 12 ou superior)
- Ou qualquer outro banco de dados compatível.
- Um cliente para executar o SQL:
- MySQL Workbench
- pgAdmin
- SQL Tools no VS Code
- Alunos possuem um código de identificação (RA).
- Um aluno só pode estar matriculado em um curso por vez.
- Cursos são compostos por disciplinas.
- As disciplinas podem ser obrigatórias ou optativas, dependendo do curso.
- As disciplinas pertencem a departamentos específicos.
- Cada disciplina possui um código de identificação.
- Alunos podem trancar matrícula, não estando matriculados em nenhuma disciplina no semestre.
- Em cada semestre, cada aluno pode se matricular em no máximo 9 disciplinas.
- O aluno só pode ser reprovado no máximo 3 vezes na mesma disciplina.
- A faculdade terá no máximo 3.000 alunos matriculados simultaneamente, em 10 cursos distintos.
- Entram 300 alunos novos por ano.
- Existem 90 disciplinas no total disponíveis.
- O histórico escolar traz todas as disciplinas cursadas por um aluno, incluindo nota final, frequência e período do curso realizado.
- Professores podem ser cadastrados mesmo sem lecionar disciplinas.
- Existem 40 professores trabalhando na escola.
- Cada professor irá lecionar no máximo 4 disciplinas diferentes.
- Cada professor é vinculado a um departamento.
- Professores são identificados por um código de professor.
-
Clone este repositório:
git clone https://github.com/seu-usuario/gerenciamento_faculdade.git cd gerenciamento_faculdade
-
Conecte-se ao seu banco de dados usando seu cliente favorito.
-
Crie o banco de dados:
CREATE DATABASE faculdade; USE faculdade;
-
Execute o script SQL para criar as tabelas e os relacionamentos:
source modelo_logico_faculdade.sql;
- Departamento: Gerencia cursos e disciplinas.
- Curso: Agrupa disciplinas e alunos matriculados.
- Disciplina: Representa os módulos de ensino vinculados aos cursos e departamentos.
- Professor: Docentes que podem ou não estar vinculados a disciplinas.
- Aluno: Estudantes matriculados em cursos e disciplinas.
- Aluno - Curso: Um aluno só pode estar matriculado em um curso por vez.
- Aluno - Disciplina: Um aluno pode cursar várias disciplinas por semestre.
- Professor - Disciplina: Professores lecionam disciplinas.
- Departamento - Disciplina: Cada disciplina pertence a um departamento.
- Disciplina - Pré-requisitos: Algumas disciplinas têm pré-requisitos obrigatórios.
Entidade | Atributo | Tipo | Descrição |
---|---|---|---|
Aluno | RA | INT | Código único do aluno. |
Nome_Aluno | VARCHAR(100) | Nome completo do aluno. | |
CPF | VARCHAR(11) | CPF do aluno. | |
Status | ENUM('Ativo', 'Inativo', 'Trancado') | Status atual do aluno. | |
Codigo_Curso | INT | Código do curso matriculado. | |
Professor | Codigo_Professor | INT | Código único do professor. |
Nome_Professor | VARCHAR(100) | Nome do professor. | |
Codigo_Departamento | INT | Código do departamento vinculado. | |
Curso | Codigo_Curso | INT | Código único do curso. |
Nome_Curso | VARCHAR(100) | Nome do curso. | |
Codigo_Departamento | INT | Código do departamento responsável. | |
Disciplina | Codigo_Disciplina | INT | Código único da disciplina. |
Nome_Disciplina | VARCHAR(100) | Nome da disciplina. | |
Codigo_Departamento | INT | Código do departamento responsável. | |
Num_Alunos | INT | Número de alunos matriculados. | |
Departamento | Codigo_Departamento | INT | Código único do departamento. |
Nome_Departamento | VARCHAR(100) | Nome do departamento. |
- Garantia de que todos os atributos possuem valores atômicos.
- Exemplo: Dividir o atributo "Endereço" de alunos em "Rua", "Número", "CEP", "Cidade", "Estado".
- Garantia de que todos os atributos não-chave dependem diretamente da chave primária.
- Exemplo: Em "Matricula_Disciplina", os atributos como "Nota_Final" dependem apenas de RA e Codigo_Disciplina.
- Eliminação de dependências transitivas.
- Exemplo: No caso de "Curso", garantir que informações do departamento (como "Nome_Departamento") estejam em uma tabela separada de "Departamento".
Descrição do Diagrama:
- O modelo representa as entidades principais (Aluno, Professor, Disciplina, Curso, Departamento) e seus relacionamentos.
- Inclui cardinalidades e eliminação de relacionamentos N:N, representando entidades intermediárias, como "Matricula_Disciplina" e "Disciplina_Pre_Requisito".
Após executar o script SQL, você pode testar a estrutura inserindo dados nas tabelas. Aqui está um exemplo de inserção:
INSERT INTO Departamento (Codigo_Departamento, Nome_Departamento)
VALUES (1, 'Ciências Exatas');
INSERT INTO Curso (Codigo_Curso, Nome_Curso, Codigo_Departamento)
VALUES (101, 'Engenharia de Computação', 1);
INSERT INTO Aluno (RA, Nome_Aluno, CPF, Status, Codigo_Curso)
VALUES (12345, 'João Silva', '12345678901', 'Ativo', 101);
INSERT INTO Disciplina (Codigo_Disciplina, Nome_Disciplina, Codigo_Departamento, Num_Alunos)
VALUES (1001, 'Algoritmos', 1, 50);
- Faça um fork deste repositório.
- Crie uma nova branch para suas alterações:
git checkout -b minha-feature
- Commit suas alterações:
git commit -m "Adiciona nova funcionalidade"
- Envie suas alterações:
git push origin minha-feature
- Abra um Pull Request.
Este projeto está sob a licença MIT. Consulte o arquivo LICENSE
para mais informações.
Se tiver dúvidas ou sugestões, entre em contato pelo GitHub.