Como modelar um banco de dados com muitas relações m: n em uma tabela

Atualmente, estou configurando um banco de dados com um grande número de relações muitos-para-muitos. Todo relacionamento foi modelado por meio de uma tabela de links. Exemplo

Uma pessoa tem vários empregos, os empregos são cumpridos por várias pessoas. Uma pessoa tem um número de casas, as casas são ocupadas por um número de pessoas. Uma pessoa tem vários restaurantes de que gosta, restaurantes têm várias pessoas que gostam do restaurant

Primeiro projetei isso da seguinte maneira:

Tabelas: Pessoa, Trabalho, Casa, Restaurante, Pessoa_Job, Pessoa_House, Pessoa_Restaurante.

Relationships 1 - n: Pessoa -> Cargo_Job, Pessoa -> Cargo_House, Pessoa -> Restaurante_Restaurante, Trabalho -> Cargo_Job, Casa -> Restaurante_House, Restaurante -> Restaurante_Restaurante.

Isso leva muito rapidamente a um modelo ER lotado e complex

Tentando simplificar isso, eu o modelei da seguinte forma:

Tabels: Pessoa, Trabalho, Casa, Restaurante, Person_Attributes

Relationships 1 - n: Pessoa -> Atributos da Pessoa, Trabalho -> Atributos da Pessoa, Casa -> Atributos da Pessoa, Restaurante -> Atributos da Pessoa

tabela Person_Attributes deve ter a seguinte aparência: personId jobId houseId restaurantId

Se existir uma relação de pessoa - trabalho, adicionarei uma entrada parecida com:

P1, J1, NULL, NULL

Se existir um relacionamento pessoa - casa, adicionarei uma entrada parecida com:

P1, NULL, H1, NULL

Portanto, a tabela de atributos no segundo exemplo terá o mesmo número de entradas que as tabelas de links dos primeiros exemplos somada

Isso simplifica bastante o modelo de ER e, desde que eu crie índices para personId + jobId, personId + houseId e personId + restaurantId, acho que não haverá muito impacto no desempenh

Minhas perguntas são: O segundo método é uma maneira correta de modelar isso? Se não, por que? Estou certo sobre o impacto no desempenho? Se não, por quê?

MySQL Workbench O exemplo do que quero dizer pode ser encontrado aqui:

http: //www.2shared.com/file/3GBnodEZ/example.htm

questionAnswers(5)

yourAnswerToTheQuestion