Qual é a abordagem comum para bancos de dados de modelos de componentes?

5

Meu projeto:

Tenho funcionários que precisam passar por uma lista de verificação quando encontram um pato, um gato e um humano. Em nossos negócios, temos um número definido de patos, gatos e humanos que entram e saem de nossas portas. Quando eles entram, temos que verificar se todos esses recursos estão presentes.

Os recursos:

Aquiestáonossodesignatualdebancodedados:

Abordagem atual:

  1. Quando um animal entra em nosso prédio, recebemos sua identificação.
  2. O ID deles nos dá o registro de animais.
  3. Criamos um novo registro "check_in" para o animal
  4. No registro check_in, usamos o modelo fornecido pelo relacionamento animal_type- & feature_type
    • Por exemplo: Sam, o pato, terá um novo check_in criado com entradas separadas de penas, asas, bico, pés e olhos check_in_feature.
  5. Passamos pelo processo e definimos feature_is_present para true ou false para cada um dos recursos
  6. Quando terminar, nós as verificamos e a entrada check_in está completa

Minha pergunta:

Na prática, esse esquema relacional é muito difícil de se trabalhar. Nós usamos isso há anos e são constantemente desacelerados quando procuramos informações por causa das estranhas junções que esse design tende a exigir. Não tenho dúvidas de que esse é um problema conhecido com uma solução mais elegante do que usar essa abordagem ingênua. Alguém conhece uma maneira melhor de estruturar isso, ou melhor abordagem, que será mais fácil e mais eficiente de se trabalhar?

EDITAR: Apenas percebi que existem artefatos do nosso sistema atual nas seções de propriedades de navegação, apenas os ignore. Eu não quero recriar as imagens se eu puder evitá-lo

    
por justausr 08.02.2013 / 17:04
fonte

1 resposta

1

Se o mero fato de você ter várias associações está diminuindo suas consultas, então seu banco de dados precisa ser ajustado ou você precisa mover para um melhor RDBMS que possa lidar melhor com suas associações. Não vejo nada de errado com o seu esquema.

Supondo que seu banco de dados suporte isso, minha sugestão é examinar cuidadosamente os planos de consulta para suas consultas e procurar casos em que novos índices possam resolver seus problemas. Esse recurso é extremamente dependente de db.

Finalmente, algo faltando na discussão é informar as necessidades. Isso é algo que pode e freqüentemente exclui qualquer solução não relacional.

    
por 20.02.2013 / 03:09
fonte