Como eu posso estruturar as classes do meu projeto em um modelo de banco de dados?

Samuel Brasileiro
Apple Developer Academy | UFPE
5 min readApr 28, 2020

Mês passado, desenvolvi um App chamado co-create, onde turistas podem encontrar e se engajar em atividades culturais em cidades pelo mundo. Para isso, eu precisei desenvolver uma modelagem, mesmo que simples, das classes para a melhor estruturação do meu projeto.

Como eu comecei?

Primeiramente, tive que criar uma ideia de minimundo do meu projeto, que é, basicamente, descrever como funcionariam as entidades, seus atributos e relações.

Mas o que são entidades, atributos e relações?

Entidade: É algo que pode ser definido e que pode ter informações relacionadas a ela. Entidades são como substantivos. Se você está desenvolvendo um banco de dados de um banco (tipo Bradesco), entidades que provavelmente serão usadas seriam Cliente e Agência, por exemplo.

Atributos: São características que compõem e diferenciam uma entidade. Como se fossem adjetivos para a entidade. Para uma entidade Cliente, poderíamos ter como atributos: nome, CPF, foto, endereço, etc.

Relacionamento: É como entidades estão associadas uma com a outra. Uma relação é tratada como um verbo. Continuando com os exemplos anteriores, um possível relacionamento é ‘associar’ — um cliente pode estar associado a várias agências, as quais podem ter vários clientes como associados.

Objeto: É a representação de uma entidade com atributos de valor. Exemplo: Um cliente do banco chamado Antônio, com cpf 131.144.174–52, residente na Rua Doutor Zé Maria, número 300 é um objeto Cliente, ou seja, uma entidade Cliente instanciada.

Dessa forma, criei o minimundo abaixo para o meu projeto:

Minimundo

Uma Cidade tem nome, localização central e região.

Podem ter várias Cidades.

Uma Cidade pode residir vários Moradores Locais.

Um Morador Local é residente de uma e apenas UMA cidade.

Um Morador Local tem nome, foto, nota e descrição.

Um Morador local pode ordenar diversas Atividades.

Uma Atividade só pode e deve ser ordenada por apenas um Morador Local.

Uma Atividade possui nome, imagem, descrição e endereço.

Um Turista pode participar de diversas Atividades.

Diversos turistas podem participar de uma mesma atividade.

Um turista possui nome, cidade natal, foto e endereço de estadia

Diagrama ER

O próximo passo é transformar esse minimundo em um conjunto de blocos chamado diagrama entidade-relacionamento.

O diagrama ER é um tipo de fluxograma que ilustra como as entidades se relacionam entre si dentro de um sistema, uma representação mais visual e técnica do minimundo. Existem plataformas pra a criação do diagrama, mas é super comum fazer com lápis e papel no começo.

Como começamos essa representação?

1 Desenhamos as nossas entidades como retângulos (pela descrição do meu minimundo, as entidades que seriam criadas eram Cidade, Morador Local, Turista e Atividade)

2 Para os atributos das entidades, desenhamos balãozinhos, conectados à sua respectiva entidade (lembre-se que os atributos são o que diferenciam dois objetos de uma mesma entidade)

3 Por que eu não adicionei atividade como atributo para Morador Local, por exemplo? Porque atividade também é uma entidade e o relacionamento entre entidades é representada com um losango:

Agora, dá para perceber que essas entidades tem uma relação de residir, no caso, um Morador Local reside em uma Cidade.

4Além da simples conexão das entidades, um relacionamento possui alguns detalhes:

4.1- Os relacionamentos determinam se tais entidades precisam do relacionamento para existir. Como assim? É simples: como vou cadastrar um morador local de uma cidade se eu ainda nem cadastrei a cidade que o morador local reside? A entidade Morador Local é dependente do relacionamento para poder existir!

A dependência é representada como dois traços na ligação do relacionamento com sua entidade dependente

4.2- Também devemos determinar a cardinalidade do nosso relacionamento. Como assim? No minimundo eu disse que uma Cidade pode ter vários Moradores Locais mas um Morador Local só pode residir em apenas uma cidade. Isso é chamado de um relacionamento 1 para N (N é como se fosse ilimitado). Lê-se o relacionamento 1 para N dessa situação desse jeito: Numa cidade pode residir N Moradores Locais e um Morador Local reside em apenas 1 cidade. Eu sei que é um pouco confuso mas com a prática se acostuma!

5 Completamos o nosso primeiro relacionamento, agora podemos continuar a leitura do minimundo e completar os relacionamentos restantes.

5.1- De acordo com meu minimundo, o segundo relacionamento, Ordenar, relaciona Morador Local e Atividade. Um Morador Local pode ordenar N atividades mas uma atividade só pode ser ordenada por apenas 1 morador local. Uma atividade precisa ser ordenada por um morador local para existir, ou seja, é dependente do relacionamento.

5.2- Continuando com a análise, o último relacionamento, Participar, relaciona Atividade e Turista. Um turista pode participar de N atividades e uma atividade pode ter a participação de M(outra variação para ilimitado) turistas, sendo um relacionamento M para N. Um turista não precisa de uma atividade para existir nem a atividade precisa do turista para existir. Assim, forma-se um relacionamento diferente dos dois antigos:

Por que eu deveria modelar ao invés de só criar as classes no código direto?

Você modelar seu banco de dados te dá um controle muito maior do sistema que você está trabalhando e previne diversos erros de logística (e lógica). Criar as suas classes necessárias fica muito mais fácil depois da modelagem e o seu sistema fica bem mais legível para quem for, no futuro, ver seu trabalho (ou até você mesmo já que provavelmente não se lembrará de tudo!)

Resumo

1 Criar o minimundo

2 Pegar uma folha de papel ou usar o google draw para fazer o diagrama ER

3 Desenhar as entidades como retângulos

4 Adicionar os atributos das entidades como balãozinho ligados a cada uma

5 Conectar com um losango as entidades que formam um relacionamento

6 Analisar os relacionamentos, adicionando os detalhes como cardinalidade e dependência

--

--