:p

Banco de dados Institucional docs.

Este é um trabalho direcionado a disciplina de banco de dados.

View source
2023-09-01 11:15:00 pt-br
DBDocumentaçãoTrabalho

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.

Imagem do modelo conceitual

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;

Powered by Coffee and Music.

$>_ echo "Konami code for surprise"
“If you find that you're spending almost all your time on theory, start turning some attention to practical things; it will improve your theories. If you find that you're spending almost all your time on practice, start turning some attention to theoretical things; it will improve your practice.” —Donald Knuth