Design de banco de dados para acompanhar o progresso ao longo do tempo

Eu tenho um problema aparentemente simples, mas não consigo descobrir uma solução. Estou criando um design de banco de dados para armazenar metas. As metas são atualizadas manualmente e eu preciso de uma entrada toda vez que a meta for atualizada. Por exemplo:

Perca 10 libras:

Dia 1: perdeu 1 libra. Dia 3: perdeu 2 quilos. dia 7: perdi 7 libras.

E depois que o total de libras atingir o valor da meta, essa meta será concluída. Aqui está o meu design até agora, mas estou vendo alguns problemas com ele:

Tabela de metas:

GoalId - int - PK

UserId = int - FK

GoalTypeId = int - FK

Título - string

Tabela de Progresso:

ProgressId - int - PK

GoalId - int - FK

IntervalX - string?

Intervalo - string?

GoalAmount - String?

Esta é a melhor maneira de acompanhar isso? Alguém viu um esquema básico que eu possa construir para conseguir isso?

Outro pensamento que tive foi talvez usar esse design para todos os meus dados brutos e confiar em procedimento armazenado e modos de exibição para apresentar os dados da maneira que eu quero?

EDITAR:

Desculpe, vou elaborar um pouco. O intervalo X e Y serão os valores de intervalo em um gráfico. Então, se X = 1 e Y = 10, então o eixo x vai 1,2,3, ... e Y vai 10,20,30, ... (Isso é algo completamente diferente, eu preciso descobrir o melhor maneira de implementar, mas isso está em segundo plano por enquanto)

Tipos de objetivos são complicados, pois há muitos que eu gostaria de fazer. Eles precisarão ser um monte de diferentes tipos de dados:

Exemplos de objetivos:

Ler diariamente - boolean

perder 10 libras - int ou float

economizar US $ 5000 - dinheiro ou float

atingiu a cota de vendas - float

Aprenda um novo idioma - string? (não tenho certeza a melhor maneira de acompanhar este)

E assim por diante .. Espero que isso ajude a esclarecer um pouco

questionAnswers(4)

yourAnswerToTheQuestion