Modelagem de Dados: o que é, tipos, exemplos e como fazer 

Modelagem de dados: entenda MER, DER, entidades, relacionamentos, chaves, cardinalidade e normalização para concursos de TI.

Por
Publicado em
11 min. de leitura

Fala, meus consagrados! Beleza?

Um sistema de cursos precisa registrar alunos, cursos, turmas e matrículas. Mas como organizar essas informações? Onde guardar a nota de um aluno? Como impedir que uma matrícula seja vinculada a uma turma inexistente?

A modelagem de dados ajuda a responder a essas perguntas antes e durante a construção do sistema. Ela transforma necessidades e regras de negócio em estruturas que permitem armazenar, relacionar e consultar informações.

Para quem estuda para concursos de TI, compreender esse processo também ajuda a resolver questões sobre bancos de dados, diagramas, chaves, cardinalidade e normalização. Neste artigo, vamos acompanhar um exemplo e relacionar cada conceito à prática e à preparação para a prova.

Introdução sobre modelagem de dados

O que é modelagem de dados?

Modelagem de dados é o processo de representar os dados de um domínio, seus relacionamentos e as regras que orientam sua organização. O resultado é um modelo que descreve quais informações precisam existir e como elas se conectam. [1]

Modelar envolve decisões sobre significado, estrutura e restrições. Em um sistema acadêmico, por exemplo, precisamos estabelecer se o aluno se inscreve diretamente em um curso ou em uma turma específica daquele curso.

Essa escolha muda o banco de dados. Um curso de Python pode ter várias turmas, cada uma com datas e participantes diferentes. Vincular a matrícula à turma permite distinguir essas ofertas.

Qual é a importância da modelagem de dados?

Uma modelagem adequada ajuda a alinhar o banco de dados às necessidades do sistema e a documentar regras que precisam ser compreendidas por usuários, analistas e desenvolvedores. [1]

No nosso exemplo, uma regra pode estabelecer que cada matrícula pertence a um único aluno e a uma única turma. Outra pode impedir duas matrículas do mesmo aluno na mesma turma.

Se essas regras não forem representadas e implementadas, o sistema poderá aceitar registros duplicados ou produzir relatórios incorretos. Por isso, modelar também significa antecipar situações que precisam ser permitidas ou rejeitadas.

A modelagem orienta decisões sobre integridade, organização e evolução dos dados. Ela precisa ser revisada quando o negócio muda: se a instituição passar a permitir rematrículas na mesma turma, por exemplo, a identificação das matrículas deverá ser reavaliada.

Quais são os tipos de modelagem de dados?

A expressão “tipos de modelagem de dados” pode indicar duas classificações diferentes: níveis de abstração e abordagens de organização.

Os níveis conceitual, lógico e físico descrevem o grau de detalhamento do projeto. Já as abordagens relacional, dimensional e NoSQL dizem respeito à forma de organizar os dados e atender às necessidades de uso.

Modelo conceitual

O modelo conceitual representa os conceitos do negócio, suas características e seus relacionamentos. O foco está no significado dos dados, com independência de detalhes de implementação. [2]

No sistema de cursos, identificamos Aluno, Curso e Turma. Também estabelecemos que um curso pode ser oferecido em várias turmas e que alunos podem participar de várias turmas.

Modelo lógico

O modelo lógico detalha a organização dos dados conforme o modelo adotado. No caso relacional, especifica tabelas, atributos, chaves e relacionamentos, sem se concentrar em particularidades de armazenamento de um SGBD. [2]

No exemplo, a participação do aluno na turma é representada por Matrícula, que também guarda informações próprias, como data e nota.

Modelo físico

O modelo físico descreve a implementação no Sistema Gerenciador de Banco de Dados, ou SGBD, escolhido. Inclui tipos concretos, restrições, índices e decisões de armazenamento adequadas à tecnologia utilizada. [2]

É nessa etapa que podemos definir, por exemplo, uma coluna nome VARCHAR(120) e um índice para consultas frequentes de matrículas por turma.

NívelFocoExemplo no sistema de cursos
ConceitualSignificado e regras do negócioAlunos participam de turmas
LógicoEstrutura dos dadosMatrícula relaciona Aluno e Turma
FísicoImplementação no SGBDColunas, restrições e índices

O detalhamento exato pode variar entre metodologias. Para a prova, observe o grau de abstração e a presença de características específicas de implementação.

Entidades, atributos e relacionamentos

Esses elementos são fundamentais no Modelo Entidade-Relacionamento. [3]

Uma entidade representa algo relevante para o domínio. Aluno é um tipo de entidade; um aluno específico é uma ocorrência desse tipo.

Um atributo representa uma característica. Nome e data de nascimento podem ser atributos de Aluno. O domínio delimita os valores admitidos para um atributo: uma nota, por exemplo, pode aceitar valores de zero a dez.

Um relacionamento expressa uma associação entre entidades, como Curso oferece Turma. Relacionamentos também podem possuir atributos. A nota pertence à participação de determinado aluno em determinada turma, e não ao aluno isoladamente.

Na notação de Chen, entidades geralmente aparecem em retângulos, atributos em elipses e relacionamentos em losangos. Outras notações, como pé de galinha, utilizam símbolos diferentes. [3]

O que é cardinalidade?

A cardinalidade expressa quantas ocorrências podem participar de um relacionamento. As classificações mais conhecidas são um para um (1:1), um para muitos (1:N) e muitos para muitos (N:N). [4]

No nosso exemplo, cada turma pertence a exatamente um curso, enquanto um curso pode ter várias turmas. Entre Curso e Turma, a cardinalidade máxima é 1:N.

Também precisamos observar a participação mínima. Admitindo cursos ainda sem turmas, um curso poderá ter de zero a muitas turmas. Cada turma, entretanto, deverá pertencer a um curso: sua participação será obrigatória.

Cardinalidade máxima e participação mínima respondem a perguntas diferentes: quantas ocorrências são permitidas e se a associação é obrigatória. [4]

Entre Aluno e Turma, temos N:N: um aluno pode participar de várias turmas e uma turma pode ter vários alunos.

Qual é a diferença entre MER e DER?

O MER — Modelo Entidade-Relacionamento é o modelo que descreve entidades, atributos, relacionamentos e restrições. O DER — Diagrama Entidade-Relacionamento é sua representação gráfica. [3]

Um diagrama ajuda a visualizar o projeto, mas as regras precisam ser compreendidas além dos símbolos. Um desenho com Aluno e Turma, por exemplo, deve esclarecer se uma turma vazia é permitida e se o aluno pode repetir a mesma inscrição.

É possível utilizar diagramas ER em diferentes níveis de detalhamento. Portanto, a presença de caixas e linhas, sozinha, não determina se o projeto é conceitual, lógico ou físico.

Chaves na modelagem de dados

As chaves permitem identificar registros e estabelecer referências. [5]

ConceitoSignificado
SuperchaveConjunto de atributos que identifica unicamente uma ocorrência
Chave candidataSuperchave mínima, sem atributos desnecessários à identificação
Chave primáriaChave candidata escolhida como identificador principal
Chave alternativaChave candidata que não foi escolhida como primária
Chave compostaChave formada por mais de um atributo
Chave estrangeiraAtributo ou conjunto que referencia uma chave admitida como alvo pelo SGBD

Se id_aluno identifica cada aluno, então {id_aluno, nome} também é uma superchave. Contudo, esse conjunto não é uma chave candidata: o nome é desnecessário à identificação.

Na implementação SQL, a chave primária exige unicidade e ausência de valores nulos. Uma chave estrangeira pode se repetir e pode admitir NULL, conforme as restrições definidas. Ela também pode referenciar uma chave única que não seja a primária, conforme as regras do SGBD. [6]

Exemplo de modelagem de dados

Considere estas regras para um sistema de cursos:

  • Cada turma pertence a um único curso;
  • Um curso pode existir antes da abertura de suas turmas;
  • Um aluno pode se matricular em várias turmas;
  • Cada matrícula associa um aluno a uma turma;
  • Neste exemplo, o aluno só pode ter uma matrícula em cada turma;
  • A nota é registrada na matrícula e pode ficar indefinida até a avaliação;

Uma estrutura lógica possível é:

TabelaAtributos principaisIdentificação e referências
ALUNOid_aluno, nomePK: id_aluno
CURSOid_curso, nomePK: id_curso
TURMAid_turma, id_curso, data_inicioPK: id_turma; FK: id_curso
MATRICULAid_aluno, id_turma, data_matricula, notaPK composta: id_aluno + id_turma; duas FKs

A tabela Matrícula resolve a associação N:N entre alunos e turmas. Cada uma de suas linhas representa uma participação específica.

Como transformar o modelo em tabelas relacionais?

No mapeamento usual, entidades originam tabelas e atributos simples originam colunas. Em relacionamentos 1:N, a chave estrangeira costuma ficar no lado N. Em N:N, utiliza-se uma tabela associativa com referências aos dois lados. [4]

Assim, Turma recebe id_curso, e Matrícula recebe id_aluno e id_turma.

Para relacionamentos 1:1, uma implementação possível utiliza chave estrangeira com restrição de unicidade. A obrigatoriedade da participação também influencia a decisão. Atributos multivalorados, como vários telefones por aluno, geralmente exigem uma tabela própria no projeto relacional normalizado. [4]

Como implementar uma parte do exemplo em SQL?

Admitindo que Aluno e Turma já existam com suas chaves primárias, podemos definir:

CREATE TABLE matricula (
    id_aluno INTEGER NOT NULL,
    id_turma INTEGER NOT NULL,
    data_matricula DATE NOT NULL,
    nota NUMERIC(4,2),
    PRIMARY KEY (id_aluno, id_turma),
    FOREIGN KEY (id_aluno) REFERENCES aluno (id_aluno),
    FOREIGN KEY (id_turma) REFERENCES turma (id_turma),
    CHECK (nota >= 0 AND nota <= 10)
);

A chave composta impede a repetição do mesmo par aluno–turma. As chaves estrangeiras exigem referências válidas. O CHECK restringe as notas informadas ao intervalo permitido; a ausência de NOT NULL em nota permite deixá-la indefinida. [6]

Outras regras, como limitar vagas de uma turma, podem exigir mecanismos adicionais. O exemplo não implementa todas as regras de um sistema acadêmico.

O que é integridade referencial?

A integridade referencial mantém coerentes as referências entre registros. No exemplo, uma matrícula não deve apontar para um aluno ou uma turma inexistente. [6]

Excluir um registro referenciado exige uma política definida: rejeitar a operação, propagar exclusões ou executar outra ação admitida pela implementação. A escolha depende da regra de negócio. Excluir automaticamente todas as matrículas de uma turma, por exemplo, pode apagar um histórico que deveria ser preservado.

Normalização de dados

O que é normalização de dados?

A normalização organiza relações para reduzir redundâncias problemáticas e anomalias de inserção, atualização e exclusão. Ela se apoia nas dependências entre atributos. [13]

Imagine uma única tabela com aluno, turma, nome do curso e nome do aluno repetidos a cada matrícula. Ao alterar o nome de um curso, seria necessário atualizar várias linhas. Se apenas algumas forem modificadas, surgirá uma inconsistência.

Outros problemas seriam precisar de uma matrícula para cadastrar um curso ou perder a informação sobre esse curso ao excluir sua última matrícula. Separar os fatos em relações adequadas ajuda a evitar essas situações.

Normalizar não significa eliminar toda repetição de valores. A repetição de uma chave estrangeira em várias linhas pode ser necessária para representar corretamente um relacionamento. [13]

O que são dependências funcionais?

Uma dependência funcional, representada por X → Y, significa que um valor de X determina um único valor de Y. Duas linhas com o mesmo X não podem apresentar valores diferentes de Y. [8]

No nosso exemplo, id_aluno → nome_aluno: o identificador determina o nome registrado para aquele aluno. O inverso não é garantido, pois pessoas diferentes podem ter o mesmo nome.

Já (id_aluno, id_turma) → nota indica que a nota depende da participação do aluno naquela turma, conforme as regras adotadas.

Dependências expressam regras válidas para os dados permitidos. Uma pequena amostra sem nomes repetidos não prova que o nome identifica todos os alunos. [8]

Primeira Forma Normal — 1FN

Na apresentação clássica, a relação deve possuir valores atômicos em seus atributos, sem grupos repetitivos. Uma lista de vários telefones em uma única célula não representa adequadamente cada telefone como valor individual nesse modelo. [7]

Uma solução é criar AlunoTelefone, com uma linha para cada telefone associado ao aluno. A atomicidade deve ser entendida em relação ao domínio e ao uso previsto.

Segunda Forma Normal — 2FN

A relação deve estar na 1FN e cada atributo não primo, isto é, que não participa de nenhuma chave candidata, deve depender integralmente de todas as chaves candidatas. Não deve haver dependência de apenas parte de uma delas. [7]

Se a chave de uma tabela for (id_aluno, id_turma), armazenar nela nome_aluno introduz uma dependência parcial: o nome depende somente de id_aluno. Mantê-lo em Aluno resolve esse problema.

A análise considera todas as chaves candidatas, e não apenas a chave escolhida como primária. Uma chave primária simples, isoladamente, não comprova a 2FN se houver outra chave candidata composta com dependências parciais.

Terceira Forma Normal — 3FN

Uma explicação introdutória destaca a remoção de dependências transitivas inadequadas entre a chave e atributos não primos. Para provas mais rigorosas, use a condição formal: em toda dependência funcional não trivial X → A, X deve ser uma superchave ou A deve ser um atributo primo. [9]

Considere TURMA(id_turma, id_curso, nome_curso), com id_turma → id_curso e id_curso → nome_curso. Admitindo que id_turma seja a única chave candidata, o nome do curso depende transitivamente dela.

A solução é manter nome_curso em Curso e apenas a referência id_curso em Turma.

Forma Normal de Boyce-Codd — FNBC

A FNBC, também chamada BCNF, exige que, em toda dependência funcional não trivial X → Y, X seja uma superchave. Essa condição é mais restritiva que a 3FN, que admite a alternativa do atributo primo. [9]

Portanto, toda relação em FNBC está em 3FN, mas uma relação em 3FN pode não estar em FNBC.

Forma normalVerificação essencial
1FNAtomicidade e ausência de grupos repetitivos
2FNAusência de dependência parcial de atributos não primos
3FNDeterminante superchave ou atributo determinado primo
FNBCDeterminante superchave em toda dependência não trivial

Uma dependência X → Y é não trivial quando Y não está inteiramente contido em X. [14]

Ao decompor relações, também se deve verificar a junção sem perda, para reconstruir a relação original sem gerar combinações indevidas, e a preservação de dependências, para manter a verificação das regras. [14]

Modelagem relacional, dimensional e NoSQL

Modelagem relacional

Organiza os dados em relações, normalmente implementadas como tabelas. Linhas representam registros e colunas representam atributos. Chaves e restrições ajudam a expressar identificação e relacionamentos. [5]

O sistema de matrículas é um exemplo de aplicação transacional que pode utilizar essa abordagem. SQL é utilizado para definir e manipular estruturas em SGBDs relacionais, mas a linguagem não substitui a análise das regras do negócio.

Modelagem dimensional

É utilizada em ambientes analíticos, como Data Warehouses e soluções de Business Intelligence. Organiza dados em fatos e dimensões. Os fatos registram eventos ou observações; as dimensões oferecem contexto para análise. [10]

No exemplo, uma fato Matrículas pode ter uma linha por matrícula, ligada a dimensões como Aluno, Curso e Data. Essa definição de granularidade indica exatamente o que cada linha representa.

O esquema estrela liga a tabela fato diretamente às dimensões. No floco de neve, dimensões são desdobradas em estruturas relacionadas. Uma modelagem dimensional pode ser implementada em um banco relacional. [10]

Modelagem NoSQL

Abrange abordagens como documentos, chave-valor, famílias de colunas e grafos. O projeto deve considerar os padrões de acesso, atualização e distribuição dos dados.

Em um banco de documentos, por exemplo, é preciso decidir entre incorporar dados relacionados no próprio documento ou manter referências entre documentos. Essas escolhas dependem do modo como a aplicação consulta e atualiza as informações. [11]

NoSQL também exige modelagem. A flexibilidade de estrutura não elimina regras, validações ou decisões sobre consistência.

Qual é a relação com Data Warehouse e Data Lake?

Um Data Warehouse reúne dados organizados para consulta e análise, frequentemente com estruturas dimensionais. Um Data Lake pode armazenar dados estruturados, semiestruturados e não estruturados, inclusive próximos ao formato de origem. [10][12]

Isso não significa que um Data Lake dispense organização. Metadados, esquemas, qualidade e definição do significado dos dados continuam necessários para seu uso. Camadas preparadas para consumo podem conter tabelas relacionais ou dimensionais. [12]

Warehouse e lake descrevem ambientes de armazenamento e processamento; relacional e dimensional descrevem formas de organização que podem integrar esses ambientes.

Como fazer modelagem de dados passo a passo

No projeto do sistema de cursos, um roteiro de trabalho seria:

  1. Levantar requisitos: identificar as informações e perguntas que o sistema precisa atender;
  2. Registrar regras: definir participação, obrigatoriedade, duplicidade e preservação do histórico;
  3. Identificar entidades e atributos: distinguir aluno, curso, turma e dados da participação;
  4. Definir relacionamentos: estabelecer cardinalidade mínima e máxima conforme as regras;
  5. Elaborar o modelo conceitual: validar com os responsáveis pelo negócio;
  6. Construir o modelo lógico: escolher estruturas, identificadores e referências;
  7. Analisar dependências e normalização: separar fatos e verificar a decomposição;
  8. Projetar a implementação física: definir tipos, restrições e índices para o SGBD;
  9. Validar cenários: testar cadastro sem matrícula, inscrição duplicada e nota fora do intervalo.

O modelo precisa acompanhar mudanças. Regras novas sobre repetição de matrículas, por exemplo, podem exigir um identificador diferente e a revisão das restrições.

Como estudar modelagem de dados para concursos públicos?

Na preparação, priorize a compreensão de entidades, atributos, relacionamentos, chaves, cardinalidades, mapeamento relacional e normalização. Dependendo do edital, inclua entidades fracas, especialização e generalização, formas normais superiores e modelagem dimensional.

Sem um levantamento de questões de uma banca e de um período específicos, essa orientação não representa um ranking estatístico de incidência. Ela organiza os fundamentos necessários para resolver problemas de modelagem.

Nas questões com dependências funcionais, uma sequência útil é identificar as chaves candidatas, separar atributos primos e não primos e aplicar as condições de cada forma normal. Evite concluir pela forma normal olhando somente algumas linhas de exemplo.

Pegadinhas para revisar antes da prova

  • “Toda superchave é candidata.” Errado: a candidata precisa ser mínima;
  • “Uma chave estrangeira precisa ser única.” Errado: seus valores podem se repetir;
  • “Uma chave primária simples sempre garante a 2FN.” Errado: outras chaves candidatas também precisam ser analisadas;
  • “Toda relação em 3FN está em FNBC.” Errado: a FNBC possui uma condição mais restritiva;
  • “NoSQL dispensa modelagem.” Errado: padrões de acesso e regras continuam orientando o projeto.

Esses são exemplos didáticos elaborados para revisão, sem atribuição a uma prova específica.

Referências técnicas

[1] BCcampus – Data Modelling: https://opentextbc.ca/dbdesign01/chapter/chapter-5-data-modelling/

[2] IBM – What is data modeling: https://www.ibm.com/think/topics/data-modeling

[3] BCcampus – The Entity Relationship Data Model: https://opentextbc.ca/dbdesign01/chapter/chapter-8-entity-relationship-model/

[4] BCcampus – ER Modelling: https://opentextbc.ca/dbdesign01/chapter/chapter-10-er-modelling/

[5] BCcampus – The Relational Data Model: https://opentextbc.ca/dbdesign01/chapter/chapter-7-the-relational-data-model/

[6] PostgreSQL – Constraints: https://www.postgresql.org/docs/current/ddl-constraints.html

[7] BCcampus – Normalization: https://opentextbc.ca/dbdesign01/chapter/chapter-12-normalization/

[8] BCcampus – Functional Dependencies: https://opentextbc.ca/dbdesign01/chapter/chapter-11-functional-dependencies/

[9] Kansas State University – Third Normal Form vs BCNF: https://textbooks.cs.ksu.edu/cc520/09-obtaining-good-design/14-third-vs-bcnf/

[10] Microsoft Learn – Star schema: https://learn.microsoft.com/en-us/power-bi/guidance/star-schema

[11] MongoDB – Data Modeling: https://www.mongodb.com/docs/manual/data-modeling/

[12] IBM – Data lake: https://www.ibm.com/think/topics/data-lake

[13] Microsoft Learn – Database normalization description: https://learn.microsoft.com/en-us/troubleshoot/microsoft-365-apps/access/database-normalization-description

[14] Silberschatz, Korth e Sudarshan – Relational Database Design: https://www.db-book.com/slides-dir/PDF-dir/ch7.pdf

FAQ sobre modelagem de dados

O que é modelagem de dados?

É o processo de representar os dados de um domínio, seus relacionamentos e as regras que orientam sua organização em um sistema.

Qual é a importância da modelagem de dados para um sistema?

Ela alinha as estruturas às regras do negócio, orienta a integridade dos registros e facilita a manutenção, a consulta e a evolução dos dados.

Quais tópicos de modelagem de dados são mais cobrados em concursos públicos?

Entre os temas recorrentes estão MER/DER, entidades, atributos, chaves, cardinalidade, mapeamento relacional e normalização. A prioridade depende do edital e da banca.

Como as provas de concursos abordam normalização, dependências funcionais e formas normais?

As questões podem fornecer relações e dependências para identificar chaves, reconhecer a forma normal e avaliar decomposições ou anomalias.

Espero que tenham gostado! 

Forte abraço e até a próxima jornada!

_________________________

Professor Rogerão Araújo

Por
Publicado em
11 min. de leitura

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *