Se você olhar para sua primeira declaração
"...propriedades de um único objeto são medidos através de diferentes fontes ..."
você pode ver imediatamente que provavelmente está procurando por 3 mesas. A Fonte tabela que você propõe parece bem. Sugiro que Objeto mesa embora pareça mais
ObjectId
ObjectName
ObjectDescription
... other object details (except measurement)
Sua terceira tabela é sua Medição mesa, que poderia ser assim
MeasurementId
ObjectId - reference to Object table
SourceId - reference to Source table
DatePerformed
MeasurementValue
Success
Notes etc
Os benefícios aqui são
- Que você não precisa ter uma coluna específica em seu Objeto para uma Fonte específica . Isso se torna muito difícil de manter se de repente você tiver mais fontes.
- Nem todos os objetos precisa de um valor para cada Fonte , embora com essa estrutura você ainda possa determinar se um objeto está faltando Medição de uma fonte específica facilmente também.
- Você pode ter várias medições armazenadas para um objeto (separadas por meio de DatePerformed) e, usando Max(DatePerformed), você pode recuperar a medição mais recente.
Então você pode obter uma lista de resultados, se você fizer isso
SELECT ObjectId, SourceId, DatePerformed, MeasurementValue
FROM Measurement
WHERE ObjectId = <your Object>
[AND/OR] SourceId = <your source>