🎉 SEMANA DO CONSUMIDOR

Últimos dias para comprar os cursos com 50% de desconto

Ver detalhes

Postado em em 17 de março de 2025

Imagine que você precisa construir uma biblioteca. Antes de comprar os livros, é necessário planejar como os livros serão organizados, que prateleiras utilizar e como será o acesso a cada obra. Ou seja, você precisa de um esquema de organização estrutural, uma modelagem. 

É a mesma coisa com bancos de dados. Um banco de dados é uma forma de representação da realidade em estruturas de armazenamento de dados. Com essa forma de representação, podemos resolver problemas típicos da vida real, como um login em um sistema para acessar uma rede social.

Para representar corretamente a realidade e assegurar que o sistema seja útil e funcione sem erros, é preciso ter uma boa modelagem.

Na modelagem, os desenvolvedores conseguem levantar a estrutura, as entidades e os relacionamentos, de modo a traçar um caminho pelo qual tentar traduzir a realidade em um modelo de BD.

Continue a leitura e saiba mais no nosso guia avançado!

O que é modelagem em banco de dados?

A modelagem em banco de dados é o processo de organizar informações de forma clara e estruturada em modelos esquemáticos. 

Ela define quais informações serão armazenadas, como elas se relacionam e de que forma serão consultadas. Nós escolhemos os “prédios” da biblioteca — ou melhor, as entidades — e depois determinamos quais “salas” ou atributos serão úteis para identificar cada item. 

Essa abordagem facilita o entendimento do sistema e torna a manutenção dos dados mais simples, tal como organizar uma biblioteca ajuda a encontrar o livro desejado de forma rápida.

A modelagem também envolve a escolha dos melhores métodos para agrupar os dados, como a criação de tabelas ou objetos, e como eles se conectam. Essa prática é essencial para garantir que o banco de dados funcione com agilidade e que as consultas retornem os resultados de maneira eficaz.

Aproveite para conferir esse conteúdo no formato de vídeo com uma introdução sobre projetos de modelagem de dados, assista abaixo!

Qual a importância da modelagem de banco de dados?

O projeto de modelagem de um banco de dados é o mais importante antes de criar o banco. Com ele, conseguimos identificar quais informações devem ser armazenadas, como serão modeladas e quais as necessidades do negócio.

Essa etapa é semelhante a preparar uma lista de compras: se foi bem feita, a ida ao mercado só vai acontecer uma vez e será rápida; se não for, a compra ainda será feita, mas, com bastante perda de energia e tempo.

Imagine que queremos criar um banco de dados que armazena informações de uma universidade.

De início, podemos supor que precisamos das informações sobre os professores e alunos, seus nomes e identificações pessoais. Podemos até começar o banco de dados com isso.

Mas, na medida em que avançamos, vamos perceber que as notas são tão importantes quanto às informações pessoais de professores e dos alunos para a Universidade, certo?

Então vamos ter que voltar e reconfigurar o banco de dados para receber as notas por matéria.

Projeto de Modelagem de Banco de Dados

Quais problemas podem surgir dessa tabela se a nota mínima for 7 e o aluno reprovar?

Neste caso, provavelmente ele fará outra prova e vamos ter que acrescentar esta nota à base de dados.

Projeto de Modelagem de Banco de Dados

Mas, deixar ambas as notas de uma mesma matéria pode causar confusão ou erro, não temos na tabela a informação de recuperação, prova final, ou semestre.

Uma solução possível dependendo do caso é acrescentar uma coluna com o semestre:

Uma solução possível

Quantas vezes somente neste exemplo básico voltamos para corrigir um problema?

Você entende agora por que a modelagem é importante?

Com ela, evitamos esses retrabalhos para corrigir erros e acrescentar informações que já deveriam ter sido mapeadas antes mesmo de começar o projeto.

Quais são os tipos de modelagem de banco de dados?

Uma vez que o analista observa o mundo real, ele faz uma representação do observado através dos três modelos:

  • Conceitual: em que definimos entidades e relacionamentos;
  • Lógico: definição de Como serão as tabelas;
  • Físico: etapa de criação das tabelas dentro do software de banco de dados.

Modelo conceitual

Antes de começar a leitura, aproveite para conferir esse conteúdo no formato de vídeo sobre o modelo conceitual, assista abaixo!

Um projeto de banco de dados começa pelo modelo conceitual. Consiste em descrever de forma resumida os requisitos de dados do usuário, ou seja, como os usuários pretendem armazenar os seus dados.

Para isso, precisamos aprender o Modelo Entidade Relacionamento (MER) que será descrito através de um Diagrama Entidade Relacionamento (DER).

No DER utilizamos símbolos e gráficos para representar os requisitos dos usuários.

É dessa forma que um projetista de banco de dados descreve os requisitos importantes levantados para os clientes de forma visual.

Quais são os principais conceitos do MER?

  • Entidade;
  • Atributo;
  • Relacionamento.

Entidade

Uma entidade é um elemento da realidade que será observado e modelado. Geralmente, uma entidade executa uma ação ou recebe uma ação.

Modelo Conceitual SQL

Se quiséssemos fazer um banco de dados de uma loja de carros, teríamos os clientes -> pessoas e objetos -> carros. Então as pessoas e os carros são as entidades desse modelo!

Modelo

  • Uma entidade será representada por meio de um retângulo;
  • Dentro do retângulo vamos informar o nome da entidade;
  • Nos referimos a um elemento particular como “ocorrência” daquela entidade.
Projeto de Modelagem de Banco de Dados

Atributos

Neste caso temos 4 ocorrências, Ana, Bruno, Carla e Diego.

Cada entidade terá sua característica, seu atributo. São todos os dados ou informações que são associados a cada ocorrência de uma entidade.

Neste exemplo a pessoa é a coisa, a entidade. Seus atributos são o nome, CPF, identidade, etc.

Modelo Conceitual SQL

Relacionamento

Um relacionamento se trata de um conjunto de associações entre entidades.

No caso das entidades carro e pessoa, temos uma relação entre elas, a pessoa -> dirige carro.

O conjunto de relações dadas entre essas duas entidades seria representado pelo “dirige”.

Projeto de Modelagem de Banco de Dados

Diagrama

Tudo isso vai ser visualizado em um diagrama.

Esse modelo nos diz que o banco de dados armazena informações sobre um conjunto de pessoas, um conjunto de carros e um conjunto de associações que relacionam pessoas e carros.

Diagrama

Cardinalidade

Aproveite para conferir esse conteúdo no formato de vídeo sobre o que são as cardinalidades em bancos de dados, assista abaixo!

A cardinalidade vai descrever a relação entre as duas entidades.

Uma pessoa pode dirigir um ou mais carros, e os carros podem ser dirigidos por uma ou mais pessoas.

Cardinalidade

Existem tipos de cardinalidades. Vamos conferir:

  • 1:1 -> Quando 1 ocorrência de uma entidade se relaciona com apenas 1 ocorrência de outra entidade.
Projeto de Modelagem de Banco de Dados

Nesse caso, o funcionário usa apenas um dos computadores da empresa e este computador também é de uso exclusivo deste funcionário.

  • 1:N -> Quando 1 ocorrência de uma entidade se relaciona com N (muitas) ocorrências de outra entidade.
Projeto de Modelagem de Banco de Dados

O fabricante fabrica vários carros, porém cada carro foi fabricado por apenas um fabricante.

  • N:N -> Quando N ocorrência de uma entidade se relaciona com N (1 ou mais) ocorrências de outra entidade.
Modelo Conceitual SQL

Nesse caso, o cliente pode comprar vários produtos assim como o produto pode ser comprado por vários clientes.

Modelo lógico

Antes de começar a leitura, aproveite para conferir esse conteúdo no formato de vídeo sobre o modelo lógico, assista abaixo!

O modelo conceitual foi explicado no último tópico, agora vamos nos aprofundar no modelo lógico:

Modelo conceitual e lógico

Observe na imagem acima como esses modelos se relacionam: no primeiro modelo temos as entidades e relacionamentos; e no segundo, temos as tabelas que detém as informações sobre as nossas entidades e relacionamentos.

Um modelo relacional lógico é composto por tabelas e por diferentes tipos de chaves:

Composição do modelo lógico

Observe esta tabela abaixo. Cada linha tem seu registro. Temos a chave primária, nome e atributos:

Exemplo geral

Uma tabela é um conjunto de registros exclusivos!

É composto por linhas, colunas e chaves e tabelas diferentes se relacionam por meio das Chaves Estrangeiras, como mostra a indicação da seta na imagem.

Chaves candidatas

As chaves candidatas são todas as colunas que podem identificar de forma única as linhas de uma tabela.

No exemplo abaixo temos uma tabela PESSOA com as informações e CPF, CNH, Nome e Sexo.

Dentre essas colunas, duas delas poderiam identificar de forma única a pessoa -> CPF e CNH.

Chaves candidatas

Chaves Primárias

Dentre as nossas chaves candidatas, apenas uma pode ser a chave primária.

Uma chave primária é uma coluna (ou uma combinação de colunas) cujos valores distinguem uma linha das demais linhas em uma tabela.

Os valores de uma chave primária devem ser únicos e não podem ser nulos (not null).

Chave primária

A chave primária de uma tabela se relaciona com a chave estrangeira de outra tabela. Por este motivo, é importante definir qual será a chave primária.

Chaves Alternadas

As chaves candidatas que não foram eleitas primárias, serão reconhecidas como chaves alternadas (ou chaves alternativas).

No exemplo que estamos utilizando, a nossa coluna de CNH será a nossa chave alternada.

Chave alternativa ou alternada

Chave Estrangeira

Uma chave estrangeira se trata de uma coluna (ou combinação de colunas), cujos valores aparecem na chave primária da tabela que está relacionada.

Por meio da chave estrangeira é possível criar relacionamentos em um banco de dados relacional.

Relacionamento

Observe que através da placa conseguimos identificar qual carro cada pessoa dirige. Este é o papel da chave estrangeira: promover um relacionamento seguro entre as tabelas.

Conceito de Restrição de Integridade

Quando criamos tabelas em bancos de dados, essas tabelas aceitam qualquer valor, ou seja, se quisermos adicionar um produto com preço negativo ou um cliente sem nome e sem CPF, nada nos impede.

E é claro que isso não faz o menor sentido!

Para garantir que os dados terão algum nível de consistência, vamos precisar criar as Restrições de Integridade.

Elas ajudam a evitar erros humanos no momento de registrar valores em um banco de dados.

Exemplo de Restrição de Integridade:

  • Integridade e Vazio: informa se os valores da coluna são opcionais ou não;
  • Integridade de Chave: valores em uma chave primária não devem ser nulos;
  • Integridade Referencial: valores de uma coluna em uma tabela são válidos baseados nos valores em outra tabela relacionada

Dicionário de Dados

Um dicionário de dados é um documento usado para armazenar informações sobre o conteúdo, formato e estrutura de um banco de dados, assim como os relacionamentos entre os seus elementos.

Em resumo, se trata de um documento que explica e detalha todas as entidades, atributos e relacionamentos.

É importante criar um dicionário de dados para minimizar erros ao criar a estrutura física do banco de dados e documentar a lógica por trás do projeto.

Anomalias em Banco de Dados

Anomalias em banco de dados são mudanças em dados que podem gerar inconsistência no banco.

Geralmente é representada por situações em que dados que deveriam ser iguais, diferem.

Por exemplo, o valor de um determinado produto deve ser iguais tanto nas tabelas de venda como na tabela de nota fiscal.

Se não forem iguais, existe ali uma inconsistência, que geralmente ocorre quando o banco de dados é projetado de forma inadequada.

As anomalias são classificadas entre 3 categorias:

  • Anomalia de inserção;
  • Anomalia de exclusão;
  • Anomalia de atualização.

Formas Normais

As formas normais são um passo a passo de correção nas tabelas do banco de dados, para corrigir as anomalias. Esse passo a passo garante a reestruturação bem-feita da estrutura, assim, você não deixe nada para trás.

Para as séries de formas normais existem 3 principais:

  • Primeira Forma Normal;
  • Segunda Forma Normal;
  • Terceira Forma Normal.

Projeto prático: modelando um banco de dados completo

Antes de começar a leitura, aproveite para conferir esse conteúdo no formato de vídeo sobre o modelo físico e o projeto prático, assista abaixo!

Para receber por e-mail o(s) arquivo(s) utilizados no vídeo, preencha:

Aqui vamos mostrar o modelo físico de bancos de dados, ou seja, a implementação do projeto no SQL (usando a linguagem SQL). Para essa implementação, vamos utilizar o SQL Server, MySQL, PostgreSQL e Oracle Database, assim você vai conseguir ver as diferenças entre cada um dos sistemas mais usados no mercado de trabalho!

Cenário: uma locadora de carros

No nosso projeto prático devemos modelar um banco de dados de uma locadora de carro. Embora o modelo que vamos fazer seja simples, é o suficiente para passar por todas as etapas da modelagem.

E é o suficiente também para que você pense em possibilidades para melhorar o projeto. Para isso, precisamos pensar no problema que vamos resolver com essa modelagem de banco de dados. Aqui devemos entender os seguintes aspectos:

  • Clientes alugam carros em agências
  • 1 cliente pode alugar mais de 1 carro e 1 carro pode ser alugado por mais de uma pessoa (em uma determinada data)
  • 1 carro pertence a uma agência e 1 agência pode ter mais de 1 carro
  • As informações de clientes que precisamos armazenar são: CNH, Nome, Cartão e Telefone.
  • As informações de carros que precisamos armazenar são: placa, modelo, Ano e Agência.
  • As informações de agências que precisamos armazenar são: numero da Agência, Endereço e Contato.
  • Não podemos ter nenhum dado nulo dentro do banco de dados, todas as informações devem ser sempre preenchidas.

Definindo entidades, relacionamentos e atributos

O próximo passo a definir as entidades, relacionamentos e atributos da nossa modelagem de banco de dados. Confira alguns exemplos abaixo:

Entidades:

  • Clientes
  • Carro
  • Agência

Relacionamento:

  • Cliente aluga carro
  • Carro pertence e agência

Atributos:

  • Clientes -> CNH, Nome, Cartão, Telefone
  • Carro -> Placa, Modelo, Ano, Número da Agência
  • Agência -> Número da Agência, Endereço, Contato

Montando o Diagrama Entidade Relacionamento (DER)

Nesta etapa vamos tornar nosso modelo mais visual utilizando o DER. Veja um exemplo, a seguir:

Projeto de Modelagem de Banco de Dados

Especificando cardinalidades

Em seguida, precisamos definir as cardinalidades, conforme exemplo abaixo:

cardinalidade

Criando o modelo físico

Aqui vamos precisar de uma tabela para cada entidade e os atributos de cada entidade se tornam as colunas da tabela, conforme exemplo:

Projeto de Modelagem de Banco de Dados

Também temos que ter uma tabela adicional que neste projeto é a tabela de Aluguel, é esta tabela que vamos relacionar cliente e carro.

Por que precisamos desta tabela adicional? Precisamos para conseguir registrar cada cliente e qual foi o respectivo carro que ele alugou.

Como um cliente pode alugar vários carros e um carro pode ser alugado por vários clientes, esta é uma situação n/n na nossa cardinalidade.

Quando temos uma relação n/1 não se faz necessário ter mais uma tabela, podemos apenas acrescentar uma coluna a uma tabela existente, mas nas relações n/n o volume de dados é maior.

Fazendo a normalização das tabelas

Agora vamos aplicar os conceitos mencionados acima sobre a normalização, sendo uma série de etapas que garantem para a nossa tabela uma boa estrutura.

O modelo que estamos apresentando para você já está nos moldes de normalização adequados. A mudança que fizemos foi na coluna de endereço da tabela Agência.

Você concorda que o endereço possui diversas informações que não podem ser armazenadas de forma satisfatória em uma única coluna?

Na nossa etapa de normalização nós acrescentamos colunas no lugar da coluna Endereço (Rua, Cidade e Estado) para corrigir este problema, conforme exemplo abaixo:

Projeto de Modelagem de Banco de Dados

Criando o dicionário de dados

Aqui vamos fazer a descrição das tabelas e as relações. Por isso, começamos listando todas as tabelas do banco de dados, com suas respectivas descrições e identificações das tabelas relacionadas, conforme exemplo abaixo:

Descrição

Lembre-se: é importante fazer este documento para cada tabela!

Implementando o modelo físico

Finalmente vamos implementar o modelo físico no Sistema de Banco de Dados SQL Server. Segue abaixo todo o código que vamos usar.

Primeiro, começamos criando as tabelas:

-- MYSQL

-- Projeto de Modelagem de Banco de Dados

-- Criando a tabela Cliente

CREATE TABLE Cliente(

       CNH VARCHAR(100) NOT NULL,

       Nome VARCHAR(100) NOT NULL,

       Cartao INT NOT NULL,

       Telefone VARCHAR(100) NOT NULL,

       PRIMARY KEY(CNH)

);

Observe que estamos criando a tabela com cada linha representando uma coluna:

  • VARCHAR(100) -> significa que o valor é de texto,
  • NOT NULL -> não permite valor nulos,
  • Por último estamos colocando que a chave primária é a coluna com a CNH
-- Adicionando dados na tabela Cliente

INSERT INTO Cliente(CNH, Nome, Cartao, Telefone)

VALUES ('111111', 'André', '123456', '99999-9999');

INSERT INTO Cliente(CNH, Nome, Cartao, Telefone)

VALUES ('222222', 'Bruna', '654321', '88888-8888');

INSERT INTO Cliente(CNH, Nome, Cartao, Telefone)

VALUES ('333333', 'Caio', '321654', '77777-7777');

Para inserir valores estamos usando o recurso INSERT INTO.

  • Em seguida entre parênteses estão as colunas que a tabela vai ter.
  • Estamos usando o VALUES para acrescentar os valores de cada coluna.
-- Criando a tabela Agencia

CREATE TABLE Agencia(

       NumAg INT NOT NULL,

       Rua VARCHAR(100) NOT NULL,

       Cidade VARCHAR(100) NOT NULL,

       Estado VARCHAR(100) NOT NULL,

       Contato VARCHAR(100) NOT NULL,

       PRIMARY KEY(NumAg)

);

-- Adicionando dados na tabela Agencia

INSERT INTO Agencia(NumAg, Rua, Cidade, Estado, Contato)

VALUES ('1', 'Dias Coelho', 'Rio de Janeiro', 'RJ', '2222-2222');

INSERT INTO Agencia(NumAg, Rua, Cidade, Estado, Contato)

VALUES ('2', 'Alfredo Bittencourt', 'São Paulo', 'SP', '3333-3333');

A tabela de agências segue o mesmo padrão de criação da primeira tabela criada, e para inserir valores também se repete o mesmo padrão de código.

-- Criando a tabela Carro

CREATE TABLE Carro(

       Placa VARCHAR(100) NOT NULL,

       Modelo VARCHAR(100) NOT NULL,

       Ano INT NOT NULL,

       NumAg INT NOT NULL,

       PRIMARY KEY(Placa),

       FOREIGN KEY(NumAg) REFERENCES Agencia(NumAg)

);

Nesta tabela vamos ter um diferencial, temos uma chave primária -> primary key e uma chave estrangeira -> foreign key, cada chave vai ter a referência de uma coluna. O restante do código segue este mesmo padrão de organização.

-- Adicionando dados na tabela Carro

INSERT INTO Carro(Placa, Modelo, Ano, NumAg)

VALUES ('ABC-123', 'Honda Civic', '2019', 1);

INSERT INTO Carro(Placa, Modelo, Ano, NumAg)

VALUES ('DDE-890', 'Chevrolet Onix', '2021', 1);

INSERT INTO Carro(Placa, Modelo, Ano, NumAg)

VALUES ('FGI-314', 'Fiat Cronos', '2020', 2);

-- Criando a tabela Aluguel

CREATE TABLE Aluguel(

       Data DATE NOT NULL,

       CNH VARCHAR(100) NOT NULL,

       Placa VARCHAR(100) NOT NULL,

       PRIMARY KEY(CNH, Placa),

       FOREIGN KEY(CNH) REFERENCES Cliente(CNH),

       FOREIGN KEY(Placa) REFERENCES Carro(Placa)

);

-- Adicionando dados na tabela Aluguel

INSERT INTO Aluguel(Data, CNH, Placa)

VALUES ('2023-01-10', '111111', 'DDE-890');

INSERT INTO Aluguel(Data, CNH, Placa)

VALUES ('2023-01-11', '222222', 'FGI-314');

INSERT INTO Aluguel(Data, CNH, Placa)

VALUES ('2023-01-11', '333333', 'ABC-123');

SELECT * FROM Cliente;

SELECT * FROM Agencia;

SELECT * FROM Carro;

SELECT * FROM Aluguel;

Passado o código para o programa vamos executá-lo, a linguagem SQL tem este padrão e vamos executar este código em diferentes programas de forma muito semelhante.

Como executar o código? Para executar e visualizar o código é necessário antes selecionar as linhas do código e depois clicar em executar. O código executa a parte selecionada.

Outro detalhe é que, no programa Oracle Database vamos ter uma pequena diferença na hora de declarar a variável texto.

As colunas que forem VARCHAR serão escritas como VARCHAR2, este é um padrão do Oracle para variáveis de texto, o restante é o mesmo padrão dos demais.

Feito isso vamos ter nosso código rodando perfeitamente!

E quais os desafios da modelagem de banco de dados?

A modelagem é um processo fundamental, como você já entendeu. Contudo, demanda um certo cuidado, pois existem desafios intrínsecos. Vejamos quais são:

  • Compreensão dos requisitos: dificuldade em captar todas as necessidades do sistema, o que pode gerar falhas no planejamento;
  • Complexidade dos dados: integração de informações vindas de fontes diversas e com diferentes níveis de confiabilidade;
  • Escalabilidade: o modelo pode não acompanhar o crescimento da quantidade de dados, comprometendo a performance;
  • Segurança dos dados: necessidade de proteger as informações contra acessos indevidos e ataques;
  • Comunicação entre os envolvidos: diferenças de visão entre desenvolvedores, analistas e usuários podem dificultar o alinhamento;
  • Atualização contínua: o modelo precisa ser revisado e adaptado conforme as mudanças nas necessidades do negócio;
  • Equilíbrio entre normalização e desempenho: encontrar o ponto ideal entre organização dos dados e agilidade nas consultas.

Conclusão

A modelagem de banco de dados é o processo de esquematizar as entidades, os atributos e relacionamentos, pensando em como facilitar a consulta e a modificação posterior dos dados. É a espinha dorsal dos sistemas de informação atuais, uma vez que possibilita organizar a estrutura de armazenamento.

Depois das modelagens conceitual e lógica, o próximo passo é a modelagem física, que inclui analisar bem os requisitos, usar um Sistema Gerenciador de Banco de Dados (como o MySQL) e fazer testes e mais testes. 

Aliás, se quiser aprender mais sobre a linguagem SQL, confira nosso curso!

Hashtag Treinamentos

Para acessar outras publicações de SQL, clique aqui!


Quer aprender mais sobre SQL com um minicurso básico gratuito?

Posts mais recentes de SQL

Posts mais recentes da Hashtag Treinamentos

Perfil Heitor

Expert em conteúdos da Hashtag Treinamentos. Auxilia na criação de conteúdos de variados temas voltados para aqueles que acompanham nossos canais.