1
resposta

Como modelar atributos compostos no modelo lógico

Como é feita a tradução dos atributos multivalorados e compostos do DER para o MER (sem colocar tudo na mesma tabela)?

1 resposta

Oi, Thiago! Tudo bem?

Peço desculpas por demorar a te responder.

Uma outra maneira de traduzir atributos multivalorados e compostos do modelo conceitual para o modelo lógico é por meio da criação de novas relações, as quais serão criadas a partir do próprio atributo.

Durante a modelagem do banco de dados do Clube do Livro, percebemos que a entidade CLIENTE possui um atributo multivalorado chamado telefone. Caso quiséssemos traduzi-lo de uma maneira diferente para o modelo lógico, teríamos que criar uma nova relação chamada TELEFONE, adicionando uma chave primária cod_telefone, uma chave estrangeira referente à CLIENTE e as possíveis ocorrências de telefone (como só podemos ter, no máximo, dois telefones, iremos adicionar dois campos para isso).

Esta organização será a mesma com a tradução dos atributos compostos, ou seja, iremos criar uma nova relação. Continuando com o exemplo do Clube do Livro, o atributo endereco de CLIENTE se tornará uma relação no modelo lógico.

Para uma melhor compreensão, observe a imagem abaixo:

Início da transcrição. Recorte de captura de tela de um modelo lógico no programa brModelo. A imagem possui fundo branco quadriculado e é composta por três retângulos na cor cinza. O primeiro retângulo, localizado no lado esquerdo da tela, possui o título “ENDERECO” E os itens “cod_cliente”, “rua”, “bairro”, “cidade” e “estado”; ao lado desse retângulo há uma representação de cardinalidade um para um. O segundo retângulo, localizado no centro da tela, possui o título “CLIENTE” E os itens “cod_cliente”, “nome” e “email”; no lado esquerdo desse retângulo há uma representação de cardinalidade um para muitos e, em seu lado direito, uma representação de cardinalidade um para um. O terceiro retângulo, localizado no lado direito da tela, possui o título “TELEFONE” e os itens “cod_telefone”, “cod_cliente”, “telefone_1” e “telefone_2”; no lado esquerdo desse retângulo há uma representação de cardinalidade um para muitos. Os três retângulos estão conectados por uma seta apontando para a direita. Fim da transcrição.

A partir da relação CLIENTE, surgiram duas novas relações: TELEFONE e ENDERECO :

  • TELEFONE , que era o antigo atributo multivalorado, agora será uma relação com os campos cod_telefone (chave primária), cod_cliente (chave estrangeira), telefone_1 e telefone_2. Ademais, há uma relação com CLIENTE: um cliente pode ter um ou dois telefones (o que foi representado pela cardinalidade 1:N), enquanto um telefone só pertence a no mínimo e no máximo um cliente.

  • ENDERECO , que era o antigo atributo composto, agora será uma relação com os campos cod_cliente (chave estrangeira), rua, bairro, cidade e estado. Além disso, há um relacionamento com CLIENTE: ao passo que um cliente só pode conter um endereço, um endereço pode conter várias pessoas.

Existem diferentes maneiras de trabalhar com atributos multivalorados e compostos durante a modelagem de banco de dados. A escolha de qual forma utilizar dependerá, por exemplo, das regras de negócio da empresa.

As etapas que vimos durante a explicação (parte conceitual e lógica) fazem parte do DER (diagrama entidade-relacionamento). Elas acontecem antes da elaboração do MER (modelo entidade-relacionamento), o qual é utilizado para descrever alguns itens do mundo real. Como dica de leitura, deixo abaixo um artigo da Alura que aborda esse tema:

Espero ter ajudado, Thiago! Caso surja alguma outra dúvida, conte com o fórum.

Até!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.