Como projetar este banco de dados simples?
Preciso adicionar algumas coisas a um banco de dados que uso para acompanhar os servidores.
Tabela se parece com isso.
Matrix
| Name | Description | Etc | Etc |
------------------------------------------------
| Server01 | First Server | Data | Data |
Eu quero adicionar uma tabela chamada Atualizações. Deve ser algo como isto:
Updates
| Name | Q1 Updates | Q2 Updates | Q3 Updates |
------------------------------------------------------
| Server01 | Done | Incomplete | Incomplete |
Qual é a melhor maneira de "vincular" essas tabelas? Preciso que tudo no campo Nome na Matriz também esteja na tabela Atualizações. Sou um noob fundamental quando se trata de bancos de dados, então preciso de 101 ajuda com isso.
Eu tenho alguns gatilhos configurados para outra tabela que acompanha outras informações e isso funciona muito bem... Eu poderia apenas adicionar mais gatilhos para a tabela que estou querendo criar... mas não tenho certeza se isso é o melhor método.
O que você faria?
EDIT: Eu quero que o campo Name de Updates seja sempre uma réplica exata do que está em Matrix.
Com base no que você tem aqui, parece que você deve ser capaz de JOIN Matrix e Updates juntos com base no campo "Name". Se você quiser ver todos os servidores da Matrix que possuem atualizações, você pode fazer algo assim:
Isso é baseado em algumas suposições:
"O que você faria?"
Se fosse eu, criaria uma tabela de atualizações mais ou menos assim:
Os dados da linha ficariam assim:
Ele teria uma chave composta (primária) de Name e TimeFrame para garantir exclusividade (porque neste cenário, "Name" será repetido).
A vantagem aqui é que, se o seu prazo para atualizações for alterado/aumentado a qualquer momento (ex: se você começar a fazer atualizações a cada 2 meses, em vez de trimestralmente), você terá a flexibilidade de adicionar mais atualizações sem precisar adicionar uma coluna ao a tabela Atualizações. Claro, estou dizendo isso sem saber quais são os outros campos em Atualizações, então talvez isso não faça sentido. Ou pode haver outras oportunidades de normalização/otimização também.
Eu provavelmente começaria com algo assim:
Você então preenche suas entradas de Matrix com
Da mesma forma, as atualizações são preenchidas assim
Finalmente, insira o possível Update Stati
Agora, você tem o framework para montar sua "configuração":
Essa "configuração" pode ser consultada com uma consulta dinâmica :
Com esse design, isso não é problema, pois o nome não é armazenado de forma redundante.
Que tal agora?