1
resposta

FKs nulas X mais Entidades. Qual escolher?

Primeiramente gostaria de parabeniza-los pelos cursos, são ótimos!

Estou com uma duvida na criação do MER abaixo.

Tenho 5 entidades (especialização de entidade Bdc) identificadas em verde.

Cada uma dessas cinco entidades podem ter Trechos, Iadc e/ou Fotos (entidades identificadas em vermelho) relacionado a elas através de 3 entidades associativas (BdcTrechos, BdcIadc e BdcFotos) que estão identificadas em azul.

Minha duvida é a seguinte:

Na entidades associativas (azul) a relação será feita recebendo as PK das 5 entidades especializadas (em verde), ou seja, nestas 3 entidades associativas (azul) vão possui 5 FK que tem origem da cada entidade especializadas (verde)

Ocorre que cada tupla das entidades associativas (azul) vão receber somente uma FK, sendo que as outras 4 sempre vão ser nulas (de acordo com as regras no negócio).

Exemplificando: Ao criar um registro na entidade BdcVeiculos, posso registrar uma ou mais imagens fotográficas deste veiculo. Na entidade Fotos essas imagens serão registradas (gravadas/cadastradas) e na entidade BdcFotos será feita a relação entre essas entidades. As PK idBdvVeiculos e idFotos se tornam FK na tabela associativa BdcFotos. As demais FK dessa entidade (BdcFotos) vão ficar nulas.

Resumindo: vou ter 3 entidades associativas com 5 FK (além de seus atributos próprios), e sempre 4 FK terão valores nulos. Sei que podem haver FK nulas se a regra do negócio assim exigir, mas mesmo assim isso me incomoda um pouco.

Agora se, ao invés de criar essas 3 entidades associativas, eu tivesse criado uma relação de cada uma das entidades especializadas (em verde) diretamente com as 3 entidades em vermelho com a cardinalidade N:M, todas essas relações se tornariam uma nova tabela e esta, além de seus próprios atributos, teria somente uma FK, não ocorrendo assim tuplas com FK nulas.

O pró disso que não haverá ocorrencias em tuplas com FK nulas e o contra é que ao invés de possui somente estas 3 entidades associativas, teria agora 15 entidades, ou seja, 12 entidades a mais que atualmente tenho.

Confesso que não sei ao certo qual a melhor estratégia. Gostaria da opinião de vocês.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Oi, Gilbert! Tudo bem?

Desde já, agradeço o seu feedback (nós da Alura ficamos muito felizes em saber disso) e peço desculpas pela demora em retornar.

Com relação ao seu questionamento, não há uma estratégia correta ou incorreta, mas sim uma escolha que deve ser feita com base nas necessidades específicas do negócio e do banco de dados.

Em um primeiro momento, utilizar as entidades associativas e lidar com as chaves estrangeiras (FKs) nulas pode trazer mais benefícios, dada a complexidade da outra maneira (criação de novas tabelas).

O uso de chaves nulas nem sempre será ruim a depender das necessidades do projeto. No entanto, devemos tomar muito cuidado com a consistência e integridade do nosso banco de dados quando temos uma quantidade expressiva de chaves nulas.

A longo prazo, a criação de mais tabelas pode garantir maior desempenho ao consultar os dados do nosso banco e, por outro lado, afetar negativamente seu gerenciamento (devido ao seu tamanho).

A etapa de modelagem de banco de dados está muito conectada com testes. Nesse sentido, recomendo que, nesse cenário, você alterne entre as duas estratégias — não tendo, inicialmente, um modelo final. Com o tempo, algumas regras e organizações tenderão a mudar e, a partir disso, você conseguirá identificar a forma que mais se adequa ao projeto.

Gilbert, espero ter ajudado. Caso surjam outras dúvidas, fico à disposição.

Até mais!

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