Um sistema de software raramente existe sem dados. Seja para armazenar informações de clientes, registros de pedidos, detalhes de produtos ou configurações complexas, a forma como os dados são organizados e persistidos é fundamental para a funcionalidade e eficiência do sistema. A modelagem de dados é o processo de criar uma representação visual e conceitual da estrutura dos dados de um sistema, independente de como eles serão implementados.
💾 Conceitos de Bancos de Dados
Antes de modelarmos, é importante entender onde esses dados serão armazenados e gerenciados. Os bancos de dados são sistemas organizados para armazenar, gerenciar e recuperar grandes volumes de dados de forma eficiente. Existem diversos tipos, mas os mais comuns hoje em dia são:
- Bancos de Dados Relacionais (SQL): São os mais tradicionais e amplamente usados. Organizam os dados em tabelas (com linhas e colunas) que se relacionam entre si através de chaves. São conhecidos por sua estrutura rígida, consistência e a linguagem SQL para manipulação de dados.
- Exemplos: MySQL, PostgreSQL, Oracle, SQL Server.
- Bancos de Dados Não Relacionais (NoSQL): Surgiram para atender a necessidades de escalabilidade, flexibilidade e performance em cenários de big data e aplicações distribuídas. Não seguem o modelo de tabelas e podem ser de diversos tipos (documento, chave-valor, coluna-família, grafo).
- Exemplos: MongoDB (documento), Redis (chave-valor), Cassandra (coluna-família), Neo4j (grafo).
Embora esta apostila foque principalmente em modelos de dados relacionais (devido à sua predominância na modelagem conceitual e lógica), é crucial saber que outras opções existem e podem ser mais adequadas dependendo do contexto do projeto.
📊 Modelo Entidade-Relacionamento (MER)
O Modelo Entidade-Relacionamento (MER) é uma ferramenta conceitual e lógica poderosa para modelar dados. Ele permite representar as entidades do mundo real sobre as quais o sistema precisa armazenar informações e os relacionamentos entre elas. O MER é independente de qualquer sistema de banco de dados específico, o que o torna ideal para a fase de design inicial.
Entidades, Atributos, Relacionamentos:
- Entidade: Representa um "coisa" ou conceito do mundo real sobre o qual queremos armazenar dados. Uma entidade pode ser um objeto, um evento ou um conceito. Desenhada como um retângulo.
- Exemplos:
Cliente, Produto, Pedido, Departamento.
- Atributo: Uma característica ou propriedade de uma entidade. Desenhado como um oval conectado à entidade.
- Exemplo na entidade
Cliente: nome, email, cpf, dataNascimento.
- Chave Primária (PK): Um atributo (ou conjunto de atributos) que identifica unicamente cada instância de uma entidade. Geralmente sublinhado.
- Chave Estrangeira (FK): Um atributo em uma entidade que é a chave primária em outra entidade. Usada para estabelecer relacionamentos.
- Relacionamento: Uma associação entre duas ou mais entidades. Desenhado como um losango conectando as entidades, com uma linha para cada entidade participante. O nome do relacionamento (verbo) é escrito dentro do losango.
- Exemplo:
Cliente FAZ Pedido, Produto CONTÉM Categoria.
Cardinalidade e Opcionalidade:
A cardinalidade (ou multiplicidade) e a opcionalidade definem a natureza de um relacionamento, indicando quantos instâncias de uma entidade podem se relacionar com instâncias de outra.
- Cardinalidade:
- Um para Um (1:1): Cada instância de uma entidade se relaciona com exatamente uma instância de outra, e vice-versa.
- Exemplo:
Pessoa possui 1 CPF. CPF pertence a 1 Pessoa.
- Um para Muitos (1:N ou 1:M): Uma instância da primeira entidade se relaciona com uma ou muitas instâncias da segunda, mas cada instância da segunda se relaciona com apenas uma da primeira.
- Exemplo: Um
Cliente faz N Pedidos. Um Pedido é feito por 1 Cliente.
- Muitos para Muitos (N:N ou M:M): Muitas instâncias da primeira entidade podem se relacionar com muitas instâncias da segunda, e vice-versa.
- Exemplo:
Aluno se matricula em N Disciplinas. Disciplina tem M Alunos.
- No Notion, use um Callout Block para a dica:
💡 Dica Notion: Relacionamentos N:N geralmente são quebrados em um modelo físico por uma tabela intermediária (ou "tabela associativa") para armazenar os detalhes da relação (ex:
Matricula para Aluno-Disciplina).