Pergunta

Eu estou tentando modelar uma mercearia. Na loja, há vários "corredores". Cada "corredor" tem um grupo de "categorias" de "itens" ele armazena. Cada "categoria" só pode pertencer a um "corredor". Cada "item" só pode ter uma "categoria".

O modelo de dados parece simples para mim:

  • Uma tabela de "corredor" com um ID e descrição
  • Uma tabela de "categoria" com um ID, NOME e um AISLE_ID que das referências da mesa "corredor"
  • Uma tabela "item" com um ID, nome, descrição e uma CATEGORY_ID que as referências "categoria"

O modelo de objeto é onde eu preciso de ajuda:

  1. Um corredor objeto pode ter uma lista de Categoria e itens de objetos dentro dela.
  2. Um corredor objeto pode ter uma lista de Categoria objetos. Um objeto categoria pode ter uma lista de objetos item dentro dele.
  3. Um corredor pode ter uma lista de objetos Item. Um objeto categoria pode ter uma lista de objetos Item.

Em cada caso, um item irá logicamente ter um objeto de categoria dentro dela. Eu tenho um DAO para cada objeto de domínio, de modo que, dependendo da forma como é feito, o sql muda um pouco. Quaisquer pensamentos?

Foi útil?

Solução

votação I para a escolha # 2. Faz mais sentido do que # 1 ou # 3.

Você acha que as relações precisam ser bi-direcional? No caso de uma necessidade item a ser capaz de descobrir que a sua Categoria de pai e avô Aisle são?

Outras dicas

Eu iria com a escolha # 2.

A principal preocupação de um corredor é que categorias estão contidos dentro dele. Deve ser-se à classe Categoria para determinar quais itens são membros. Isso mantém os níveis de abstração consistente em cada objeto - onde Aisle é o objeto de nível superior, Categoria é um nível um pouco mais detalhada e item é o mais granular.

Número 2 faz mais sentido se esses são seus apenas 3 opções.

Eu acho que, se eu fosse para criar este modelo, eu usaria o seguinte modelo (pequena modificação, apenas tentando permanecer tão perto de suas idéias quanto possível):

Um objeto corredor pode ter uma lista de objetos de categoria, um objeto categoria pode ter uma lista de objetos de item dentro dele, e um item está associado a uma categoria e um corredor.

Meu modificação parece ser mais no lado de dados.

A razão que eu teria feito isso, porque, alguém diz "hey Eu estou procurando este item particular, que corredor está?" - 1 pesquisa iria dar-lhe a resposta. enquanto que com o seu modelo de dados, você precisa de 2 pesquisas.

Pelo menos é assim que eu penso nisso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top