Relacionamento entre entidades: tipos e cardinalidade

Entenda quais são os tipos de relacionamentos e cardinalidade qe usamos na análise de relacionamento no processo de modelagem de dados, o Modelo de Entidade e Relacionamento.

Home » Tecnologia

Relacionamento entre entidades é o tipo de ocorrência existente entre entidades e aplicáveis no processo de modelar dados. Entender isso é importante pois um modelo consistente é a base para um banco de dados de sucesso. O símbolo que representa o relacionamento no Modelo de Entidade e Relacionamento (MER) é um losango com o nome do relacionamento escrito no seu interior, como no exemplo a seguir.

Em um modelo de entidade e relacionamento, nem todas as entidades serão relacionadas, há casos em que não há ligação entre elas, nestes casos consideramos como entidades isoladas. Embora não seja tão comum, é importante levar em conta esta possibilidade. Mas quando as ligações existirem, elas serão classificadas de acordo com os tipos a seguir.

Tipos de relacionamento

Existem três tipos de relacionamento entre entidades:

  • um-para-um
  • um-para-muitos
  • muitos-para-muitos

Relacionamento um-para-um

O relacionamento um-para-um é usado quando uma entidade A se relaciona com uma entidade B e vice-versa.

Este relacionamento é representado pelo sinal: 1:1

Veja o exemplo:

O relacionamento um para um é bastante incomum e usado em casos bem específicos. Geralmente quando você tem duas tabelas paralelas que precisa fazer esse tipo de relacionamento, as vezes se pergunta se não seria melhor juntar as duas tabelas. Contudo por se tratar de alguma situação específica, se as duas precisarem serem mantidas, então justifica relacionar-se um para um nesse caso.

Relacionamento um-para-muitos

O relacionamento um-para-muitos é usado quando uma entidade A pode se relacionar com uma ou mais entidades B.

Este relacionamento é representado pelo sinal: 1:N

Veja o exemplo:

O relacionamento um para muitos é o tipo mais comum e que deve ser encontrado na maioria das tabelas que estão relacionadas. O que justifica esse tipo de relacionamento é o fato de que normalmente uma entidade tende a ser replicada muitas vezes em outra, como acontece por exemplo quando um produto é vendido N vezes, um cliente faz N compras, uma sala tem N alunos e assim por diante.

Desta forma o relacionamento um para muitos é aquele que representa de maneira muito realística o que acontece de fato dentro das organizações e no mundo real, portanto é uma representação bastante fiel dentro de um banco de dados para os sistemas de informação.

Relacionamento muitos-para-muitos

O relacionamento muitos-para-muitos é usado quando várias entidades A se relacionam com várias entidades B.

Este relacionamento é representado pelo sinal: N:N ou N:M

Veja o exemplo:

Relacionamento muito para muitos é um caso interessante, eu particularmente costumo falar para os meus alunos que ele só é possível na teoria, pois na prática ficaria totalmente inviável a implementação dele.

Deixa eu explicar: ele pode até ser implementado na prática, mas para isso é preciso criar uma terceira tabela que permita esse relacionamento e aí o que vai acontecer na verdade é que você vai ter dois relacionamentos um para muitos para poder representar o muito para muitos. Deixa dar um exemplo real para ficar mais fácil de entender.

Imagine duas tabelas: Produtos e Pedidos.

Um produto pode ser vendido várias vezes e um pedido pode ter muitos produtos. Isto constituiria o relacionamento muitos para muitos. Mas você não consegue implementar isso na prática. Então a solução seria criar uma terceira tabela, como: PedidoItens.

Ai ficaria assim:

  • Produtos (1) relaciona-se com PedidoItens (N)
  • Pedidos (1) relaciona-se com PedidoItens (N)

Veja como ficaria na prática:

CREATE TABLE produtos (

idProduto int(11) NOT NULL auto_increment,

idCategoria int(11),

produto varchar(80),

preco decimal(12,2),

quantidade int(11),

descricao varchar(80),

foto varchar(255),

PRIMARY KEY (idProduto),

KEY fkcat2 (idCategoria)

) ENGINE=InnoDB;

CREATE TABLE pedidos (

idPedido int(11) NOT NULL auto_increment,

data date,

idCliente int(11),

status varchar(80),

sessao int(11),

PRIMARY KEY (idPedido),

KEY fkcli (idCliente)

) ENGINE=InnoDB;

Observe que eu crio as tabelas produtos e pedidos de forma independentes, ou seja, sem relacionamento nenhum entre elas.

Agora (abaixo), a tabela pedidoItens:

CREATE TABLE pedidoitens (

idItem int(11) NOT NULL auto_increment,

idPedido int(11),

idProduto int(11),

produto varchar(100),

quantidade int(11),

valor decimal(12,2),

subtotal decimal(12,2),

PRIMARY KEY (idItem),

KEY fkp (idPedido),

KEY fkpr (idProduto),

) ENGINE=InnoDB;

Com as três tabelas criadas, posso agora criar os relacionamentos entre elas:

ALTER TABLE pedidoitens

ADD CONSTRAINT fkp FOREIGN KEY (idPedido) REFERENCES pedidos (idPedido),

ADD CONSTRAINT fkpr FOREIGN KEY (idProduto) REFERENCES produtos (idProduto);

Cardinalidade

A cardinalidade é um conceito importante para ajudar a definir o relacionamento, ela define o número de ocorrências em um relacionamento.Para determinar a cardinalidade, deve-se fazer a pergunta relativa ao relacionamento em ambas as direções.

Um departamento possui quantos empregados?

- no mínimo 1 e no máximo N.

Um empregado está alocado em quantos departamentos?

- no mínimo em 1 e no máximo em 1

Somando-se as cardinalidades, definimos o resultado final do relacionamento, ou seja, 1:N


VEJA TAMBÉM:

CANAL NO YOUTUBE

INSCREVA-SE:



Sistemas Web

Playlist de SQL

Youtube Youtube Youtube
© 2021 - Utilidade Pública: Tecnologia, Educação e Cidadania.