Pergunta

Como sei que existem muitos designers de especialistas em banco de dados aqui, decidi fazer essa pergunta no StackOverflow.

Estou desenvolvendo um site cuja principal preocupação é indexar todos os produtos disponíveis no mundo real, como câmeras digitais, impressoras, geladeiras e assim por diante. Como sabemos, cada produto tem suas próprias especificações. Por exemplo, uma câmera digital tem seu peso, lente, velocidade do obturador etc. Cada especificação tem um tipo. Por exemplo, o preço (eu vejo como uma especificação) é um número.

Eu acho que a maneira mais padrão é criar quaisquer especificações necessárias para um produto especificado com seu tipo adequado e atribuí -lo ao produto. Portanto, para cada preço separado do produto deve ser criado e o número de tipo deve ser definido nele.

Então, aqui está a minha pergunta: é possível ter uma tabela para especificações com todas as especificações, por exemplo, o preço com tipo de número já foi criado antes e só precisa procurar o preço na tabela e atribuí -lo ao produto. O problema com esse método é que não vejo uma boa maneira de impedir que o usuário crie entradas duplicadas. Ele deve ser capaz de encontrar as especificações de que precisa (se foi adicionada antes), e eu também quero que ele saiba que as especificações que ele encontra é realmente a que ele precisava, pois pode haver algumas especificações com o mesmo nome, mas Tipo e uso diferentes. Se ele não encontrar, ele o criará.

Alguma ideia?

---------------------------- ATUALIZAR --------------------- -------

Minha pergunta não é sobre flexibilidade de banco de dados. Eu acho que no segundo método os usuários atrapalharão a tabela de especificações! Eles criarão milhares de entradas duplicadas e também acho que não encontrarão suas especificações adequadas.

Foi útil?

Solução

Meu modelo de dados sugerido com base em seus requisitos:

SPECIFICATIONS tabela

  • SPECIFICATION_ID, pk
  • SPECIFICATION_DESCRIPTION

Isso permite que você tenha inúmeras especificações, sem ser anexado a um item.

ITEM_SPECIFICATION_XREF tabela

  • ITEM_ID, PK, FK para ITEMS tabela
  • SPECIFICATION_ID, PK, FK para SPECIFICATIONS tabela
  • VALUE, pk

Benefícios:

  1. Tornar a chave primária para ser um composto garante que o conjunto de valores seja único em toda a tabela. Bênção ou maldição, um item com uma determinada especificação pode ter valores 0,99 e 1,00 - estes seriam válidos.
  2. Essa configuração permite que uma especificação seja associada a mais de 0 itens.

Outras dicas

Acabei de responder Geração dinâmica de tabelaque discute um problema semelhante. Dê uma olhada no Padrão de observação. Se você substituir "observação" por "especificação" e "sujeito" por "produto", você pode encontrar este modelo Útil - você não precisará do relatório e do REP_MM_OBS.

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