O processo de elaboração um banco de dados é uma das etapas mais importantes, afinal ter uma arquitetura mal desenhada impacta diretamente na performance do sistema. Vamos documentar todo processo de elaboração de um banco de dados, representando o mais fielmente possível do tema proposto: "Instituição acadêmica".
Análise de requisitos
A primeira etapa foi a análise de requisitos, que é fundamental para o desenvolvimento de qualquer sistema, pois é nela que vamos entender o que o cliente precisa e como podemos atender essas necessidades.
Documentação dos requisitos
A documentação dos requisitos é a etapa onde vamos decidir os requisitos do sistema.
O que será feito
- Cadastro de aluno.
- Cadastro de funcionário.
- Cadastro de professor (Entidade separada).
- Cadastro de curso.
- Cadastro de disciplina.
- Cadastro de nota.
Requisitos
Aluno: Permitir o cadastro de informações dos alunos, incluindo matrícula (chave primária), nome, data de nascimento e dados de contato, além de ser possível associar os alunos a cursos e disciplinas.
Funcionário: Permitir o cadastro de informações dos funcionários, incluindo número de registro (chave primária), nome, data de nascimento, cargo e dados de contato.
Professor: Caso o funcionário seja um professor deve relacionar a entidade ao funcionário, com informações como área de especialização, além de ser possível atribuir disciplinas aos professores.
Curso: Permitir o registro de informações sobre os cursos oferecidos pela instituição, incluindo nome do curso e descrição.
Disciplina: Ser possível cadastrar informações sobre as disciplinas, incluindo nome da disciplina e professor responsável.
Nota: Permitir que os professores insiram notas dos alunos para cada disciplina, calcular automaticamente a média das notas e atualizar o desempenho do aluno.
Modelo conceitual
Começamos com a criação do modelo conceitual, que é a representação do banco de dados de forma abstrata, sem se preocupar com os detalhes de implementação.

Relacionamentos
- Um aluno está associado a vários cursos e disciplinas.
- Um funcionário pode ser um professor.
- Um professor leciona várias disciplinas.
- Uma disciplina tem um professor responsável.
- Uma turma contém cursos e disciplinas.
- Notas são atribuídas a alunos em disciplinas.
Modelo Lógico
Com base no modelo conceitual, desenvolvemos o modelo lógico, que descreve como as entidades e relacionamentos serão implementados em termos de tabelas e chaves.
Conceito
Tabela Aluno
- Matrícula (Chave Primária)
- Nome
- Data de Nascimento
- Dados de Contato
Tabela Funcionário
- Registro (Chave Primária)
- Nome
- Data de Nascimento
- Cargo
- Dados de Contato
Tabela Professor
- ID do Professor (Chave Primária)
- Área de Especialização
- Funcionário (Chave Estrangeira de Funcionário)
Tabela Disciplina
- ID da Disciplina (Chave Primária)
- Nome da Disciplina
- Professor Responsável (Chave Estrangeira de Professor)
- Curso (Chave Estrangeira de Curso)
Tabela Nota
- Valor
- Aluno (Chave Estrangeira de Aluno)
- Disciplina (Chave Estrangeira de Disciplina)
Tabela Curso
- ID do Curso (Chave Primária)
- Nome do Curso
- Descrição
Tabela Turma
- ID da Turma (Chave Primária)
- Curso (Chave Estrangeira de Curso)
- Disciplina (Chave Estrangeira de Disciplina)
Exemplos
Tabela Aluno
| Matrícula (Chave Primária) | Nome | Nasc. | Dados de Contato |
|---|---|---|---|
| 123456 | Giuseppe Cadura | 1995-02-15 | giuseppe@email.com |
| 789012 | Ballan Sarrola | 1998-05-22 | ballan@email.com |
| ... | ... | ... | ... |
Tabela Funcionário
| Registro (Chave Primária) | Nome | Nasc. | Cargo | Dados de Contato |
|---|---|---|---|---|
| 789123 | Antonio Oliveira | 1990-10-08 | Professor | antonio@email.com |
| 123789 | Maria da Silva | 1985-04-20 | Professor | maria@email.com |
| ... | ... | ... | ... | ... |
Tabela Professor
| Professor (Chave Primária) | Área de Especialização | Funcionário (Chave Estrangeira) |
|---|---|---|
| 678101 | Matemática | 789123 |
| 456123 | História | 123789 |
| ... | ... | ... |
Tabela Curso
| ID do Curso (Chave Primária) | Nome do Curso | Descrição |
|---|---|---|
| 321654 | Ciencias Contábeis | Graduação em Ciencias Contábeis. |
| 987123 | Engenharia de Software | Graduação em Engenharia de Software. |
| ... | ... | ... |
Tabela Disciplina
| ID da Disciplina (Chave Primária) | Nome da Disciplina | Professor Responsável (Chave Estrangeira) | Curso (Chave Estrangeira) |
|---|---|---|---|
| 101101 | Cálculo I | 678101 | 321654 |
| 202202 | Linguagens de Programação | 456123 | 987123 |
| ... | ... | ... | ... |
Tabela Nota
| Valor | Aluno (Chave Estrangeira) | Disciplina (Chave Estrangeira) |
|---|---|---|
| 8.5 | 123456 | 101101 |
| 7.0 | 789012 | 202202 |
| ... | ... | ... |
Tabela Turma
| Turma (Chave Primária) | Curso (Chave Estrangeira) | Disciplina (Chave Estrangeira) |
|---|---|---|
| 001 | 321654 | 101101 |
| 002 | 987123 | 202202 |
| ... | ... | ... |
Modelo Físico
O modelo Físico é a etapa de implementação onde se escolhe o SGBD para criar o banco de dados usamos o MySQL por ser a proposta do trabalho.
Tabelas
Começamos pelas tabelas com o exemplo de código abaixo.
-- Tabela Aluno
CREATE TABLE Aluno (
Matricula INT PRIMARY KEY,
Nome VARCHAR(255),
DataNascimento DATE,
DadosContato VARCHAR(255)
);
-- Tabela Funcionário
CREATE TABLE Funcionario (
NumRegistro INT PRIMARY KEY,
Nome VARCHAR(255),
DataNascimento DATE,
Cargo VARCHAR(255),
DadosContato VARCHAR(255)
);
-- Tabela Professor
CREATE TABLE Professor (
ProfessorID INT PRIMARY KEY,
AreaEspecializacao VARCHAR(255),
FuncionarioID INT,
FOREIGN KEY (FuncionarioID) REFERENCES Funcionario(NumRegistro)
);
-- Tabela Curso
CREATE TABLE Curso (
CursoID INT PRIMARY KEY,
NomeCurso VARCHAR(255),
Descricao TEXT
);
-- Tabela Disciplina
CREATE TABLE Disciplina (
DisciplinaID INT PRIMARY KEY,
NomeDisciplina VARCHAR(255),
ProfessorResponsavel INT,
CursoID INT, -- Added foreign key to link Disciplina with Curso
FOREIGN KEY (ProfessorResponsavel) REFERENCES Professor(ProfessorID),
FOREIGN KEY (CursoID) REFERENCES Curso(CursoID)
);
-- Tabela Nota
CREATE TABLE Nota (
Valor DECIMAL(5, 2),
AlunoMatricula INT,
DisciplinaID INT,
FOREIGN KEY (AlunoMatricula) REFERENCES Aluno(Matricula),
FOREIGN KEY (DisciplinaID) REFERENCES Disciplina(DisciplinaID)
);
-- Tabela Turma
CREATE TABLE Turma (
TurmaID INT PRIMARY KEY,
CursoID INT,
DisciplinaID INT,
FOREIGN KEY (CursoID) REFERENCES Curso(CursoID),
FOREIGN KEY (DisciplinaID) REFERENCES Disciplina(DisciplinaID)
);
Todo código esta AQUI
Essas tabelas formam a base do sistema de gerenciamento de uma instituição acadêmica.
A próxima etapa é popular essas tabelas com dados reais ou fictícios, para que o sistema possa ser utilizado e testado. Também é importante criar consultas SQL para recuperar, inserir, atualizar e excluir dados, conforme necessário para atender às operações do sistema.
Inserindo Dados
Foram inseridos os dados dos Exemplos acima.
Tabela Aluno
INSERT INTO Aluno (Matricula, Nome, DataNascimento, DadosContato)
VALUES
(123456, 'Giuseppe Cadura', '1995-02-15', 'giuseppe@email.com'),
(789012, 'Ballan Sarrola', '1998-05-22', 'ballan@email.com');
Tabela Funcionário
INSERT INTO Funcionario (NumRegistro, Nome, DataNascimento, Cargo, DadosContato)
VALUES
(789123, 'Antonio Oliveira', '1990-10-08', 'Professor', 'antonio@email.com'),
(123789, 'Maria da Silva', '1985-04-20', 'Professor', 'maria@email.com');
Tabela Professor
INSERT INTO Professor (ProfessorID, AreaEspecializacao, FuncionarioID)
VALUES
(678101, 'Matemática', 789123),
(456123, 'Programação', 123789);
Tabela Curso
INSERT INTO Curso (CursoID, NomeCurso, Descricao)
VALUES
(321654, 'Ciencias Contábeis', 'Graduação em Ciencias Contábeis.'),
(987123, 'Engenharia de Software', 'Graduação em Engenharia de Software.');
Tabela Disciplina
INSERT INTO Disciplina (DisciplinaID, NomeDisciplina, ProfessorResponsavel, CursoID)
VALUES
(101101, 'Cálculo I', 678101, 321654),
(202202, 'Linguagens de Programação', 456123, 987123);
Tabela Nota
INSERT INTO Nota (Valor, AlunoMatricula, DisciplinaID)
VALUES
(8.5, 123456, 101101),
(7.0, 789012, 202202);
Tabela Turma
INSERT INTO Turma (TurmaID, CursoID, DisciplinaID)
VALUES
(001, 321654, 101101),
(002, 987123, 202202),
Criando Views
A partir de algumas consultas, criamos as views para facilitar a busca de dados específicos.
Criamos uma view para ver todos os Professores e suas Disciplinas.
CREATE VIEW professores_disciplinas AS
SELECT
P.ProfessorID,
P.AreaEspecializacao,
F.Nome AS Nome,
F.DataNascimento AS DataNascimento,
F.DadosContato AS Contato,
D.DisciplinaID,
D.NomeDisciplina
FROM
Professor P
JOIN
Funcionario F ON P.FuncionarioID = F.NumRegistro
JOIN
Disciplina D ON P.ProfessorID = D.ProfessorResponsavel;
CREATE VIEW AlunosCursos AS
SELECT Aluno.Nome AS NomeAluno, Curso.NomeCurso
FROM Aluno
INNER JOIN CursoAluno ON Aluno.Matricula = CursoAluno.Matricula
INNER JOIN Curso ON CursoAluno.CursoID = Curso.CursoID;
Uma view para ver todos os Alunos Notas e Disciplina.
CREATE VIEW notas_alunos_disciplinas AS
SELECT
A.Matricula,
A.Nome AS NomeAluno,
D.DisciplinaID,
D.NomeDisciplina,
N.Valor AS Nota
FROM
Aluno A
JOIN
Nota N ON A.Matricula = N.AlunoMatricula
JOIN
Disciplina D ON N.DisciplinaID = D.DisciplinaID;