Continuando nosso post sobre modelagem, hoje vamos entrar no assunto cardinalidade e como ela age no nosso modelo de dados determinando a relação entre as entidades.

A cardinalidade tem como objetivo quantificar quantos elementos da entidade A se relacionam com os elementos da entidade B determinando que tipo de relacionamento é este.

Por exemplo, o relacionamento abaixo pode ser classificado como ‘um para muitos’ pois, uma instância de A pode ter várias relações com B.

No relacionamento acima podemos entender que uma pessoa compra 1 ou N (muitos) carros. Logo, esta relação é uma relação de cardinalidade 1:N

As cardinalidades mais  utilizadas quando vamos relacionar as entidades são:

  • 1:N – Um para muitos
  • N:M – Muitos para muitos
  • 1:1 – Um para um

Poderíamos citar também a cardinalidade 0:N (zero ou um  p/ muitos) onde poderíamos ter ou não uma instância da entidade A se relacionando com uma instância da entidade B. Este tipo de cardinalidade é chamada de opcional e varia de acordo com o modelo.

No relacionamento acima por exemplo podemos afirmar que:

  1. uma pessoa pode não comprar, comprar  um ou muitos carros;
  2. um carro pode não ser comprado ou comprado por uma única pessoa.

ENTENDENDO AS CARDINALIDADES

A maneira mais simples de entendermos sobre este ponto é se perguntar sempre que for modelar um ambiente, o seguinte:

Quantos elementos de A podem se relacionar com B e quantos de B se relacionam com A?

Vejamos por exemplo o relacionamento abaixo entre pessoas e imóveis:

Quantas pessoas podem comprar um imóvel?

  • Ela pode não comprar
  • Comprar 1 imóvel
  • Comprar vários imóveis.

Um imóvel pode ser comprado por quantas pessoas?

  • Pode não ser comprado
  • Ser comprado por uma única pessoa.

Assim temos: pessoa não compra, compra um ou muitos imóveis; um imóvel pode não ser comprado ou comprado por uma única pessoa.

SOBRE OS TIPOS DE CARDINALIDADE:

Cardinalidade 1:1 (um  para um)

É o tipo de cardinalidade mais utilizada nas modelagens de dados. Neste, temos uma relação bem restrita entre as entidades onde fica especificado que:

Um e somente um item da entidade A pode se relacionar com um item da entidade B. E o mesmo vale da entidade B para entidade A. 

Embora este tipo de cardinalidade pareça ser muito intuitiva, a sua ocorrência pode variar muito de acordo com os objetos modelados. O mais indicado é aproximar o máximo possível a modelagem do mundo real.

Exemplo de relacionamento com a notação explicitando a cardinalidade 1:1.

Cardinalidade 1:N (um para muitos)

Esta é uma forma de menor restrição quando vamos relacionar as entidades envolvidas, apresentando maior liberdade em comparação ao relacionamento anterior.

A cardinalidade 1:N pode ser comparada com uma estrutura de árvore onde podemos afirmar que uma raiz possui diversos galhos mas o contrário não existe, todos os galhos são oriundos de uma raiz.

Neste modelo podemos afirmar que: um item da entidade Pessoa pode ter um ou  mais Imóveis; Um imóvel pode ter somente uma Pessoa como dono.

CARDINALIDADE N:M (muitos para muitos)

Não há restrição como nos elementos anteriores, permitindo múltiplos relacionamentos entre as instâncias das entidades.

Esta definição de cardinalidade acaba criando um modelo cruzado de relacionamento onde diversas instâncias de A podem se relacionar com B e o contrário também ocorre, podendo inclusive, um item de A não se relacionar com B e vice-versa.

Representação de um relacionamento N:M.

Um ponto importante quando vamos atribuir as cardinalidades das entidades é observar, principalmente nos relacionamentos 1:1 e 1:N, se eles têm alguma possibilidade de acabar evoluindo  para um N:M.

O problema dos relacionamentos N:M é que eles podem acarretar algumas anomalias quando vamos implementar o modelo físico, mas se for imprescindível esse tipo de relacionamento, garanta que as restrições de integridade estejam de acordo para evitar problemas no projeto.

No geral, os relacionamentos 1:1 serão os mais utilizados.

Como vimos, a cardinalidade é quem no final das contas irá determinar como os relacionamentos atuam entre si e como cada instância de uma entidade irá se comportar com a outra.

Determinar de forma correta as cardinalidades é fundamental para a boa implementação do projeto físico e do funcionamento como um todo do banco no SGBD

Não se esqueça de se aproximar ao  máximo de um mundo real e sempre que possível, evite relacionamentos N:M.

Gostaria de deixar o link para explicação das notações gráficas utilizadas para representar a cardinalidade entre as entidades. (aqui)

Espero que tenham gostado deste post!

Saúde!