Pergunta

Boa tarde,

Atualmente, estou na fase inicial de um novo projeto escrito no .NET e usando a estrutura da entidade para persistência/armazenamento de dados. Um dos recursos necessários é a capacidade de 'versão' certos tipos de modelos. Por exemplo, um modelo é um 'requisito' que terá n 'versões de requisitos', basicamente tendo uma maneira de voltar no histórico/ciclo de vida dessa instância de 'requisito' em particular. A única coisa que deve ser estática em todas as revisões é o 'ID', tudo o mais é absolutamente mutável durante toda a vida do requisito.

Agora, o Q é, devo 'simplesmente' criar uma relação 1: n entre um requisito >> requisito? Outras características precisam ser a possibilidade de reviver completamente os estados antigos para serem os atuais/mais recentes, deve haver a capacidade de ter uma versão menor e principal (alterações) e tal, e por último, mas não menos importante, a capacidade de criar uma 'linha de base' em Uma coleção de requisitos com a versão mais recente para voltar a essa linha de base específica em um momento posterior e exibir todas as versões de requisitos incluídas?

Isso precisa escalar até alguns milhões de registros de requisitos, cada um deles com algumas milhares de revisões. É por isso que estou perguntando .. o aspecto de escala de um relacionamento simples 1: n etc.

Alguém fez algo semelhante e talvez algumas sugestões/práticas recomendadas, etc. em relação a versões/baselinismo etc.?

Saúde e obrigado, -jörg

Foi útil?

Solução

Isso depende de quanta dados cada requisito possui.

Se o requisito tiver grandes campos (por exemplo, descrição do requisito).

  1. Você provavelmente gostaria de versão de versões, e não a exigir. Infelizmente, parece que não há maneira fácil de lidar com a estrutura da entidade.
  2. Outra solução (fizemos isso para o CMS) é ter tabelas separadas para requisitos e descrição dos requisitos. Portanto, como resultado, você terá verificações de requisitos e requisitos de descrição.

Se o requisito for pequeno o suficiente, você poderá usar o requisito >> requisito. Na maioria dos casos, você não terá dados significativos, especialmente você pode utilizar a compactação SQL2008.

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