É bom ter detalhes do trabalho na própria tabela de fila de trabalho ou ter os detalhes em uma tabela separada?
-
12-12-2019 - |
Pergunta
Atualmente estou projetando um módulo onde um aplicativo de serviço ou console estará lendo o trabalho de uma tabela do trabalho no trabalho.Eu projetei a tabela JobQueue com as seguintes informações:
jobid: int forwardkey
JOBTYPE: INT NOTNULL
estado: varchar notnull
Conectado: Datetime Notnull
LastModifiedon: DateTime Nullable
complexas: datetime nullable
O atributo jobtype é introduzido principalmente para manter esta tabela mais genérica, do que no tipo de trabalho específico.Minha pergunta é se deve manter os detalhes para o trabalho ser executado nesta tabela em si ou alguma outra tabela com o ID do trabalho referenciando-o?Isso porque eu tenho os dados disponíveis em alguma outra tabela.Então, ao executar o trabalho, podemos buscar indiretamente os dados.Para evitar duplicar as informações, pensei em algo assim.Será esta uma boa abordagem?Precisa de seu conselho sobre isso
Solução
Mantenha todos os dados que você tem naquela "outra tabela" naquela tabela.O que você precisa considerar aqui é como você vai usar os dados.
Se você for exibir algum trabalho indexado de onde se pode selecionar um para visualizar os detalhes, você pode obter seus dados em dois busca separados.Ou se você precisar de todos os dados (dados na tabela JobQueue e dados nessa "outra tabela") relacionadas a um trabalho, você pode sempre executar um único busca com uniões.Eu não acho que os dados de manter JobDetails em uma tabela separada causariam qualquer problema.
Outras dicas
Eu não vejo muitos atributos aqui (talvez você não mostrasse esses?)
Eu vejo um ID (JobID) claramente necessário, digite e informações de estado (não consigo ver como você pode fazer sem esses dados.)
e, em seguida, você tem informações de auditoria, criada, modificada e concluída.Eu gosto de colocar uma string lá para quem criou e que modificou, mas tenho que informações de auditoria em todas as tabelas que crio.É sempre útil quando você não tem certeza do que aconteceu e você está tentando manter o banco de dados.