Jeśli spojrzysz na swoje pierwsze oświadczenie
„...właściwości pojedynczego obiektu są mierzone za pośrednictwem różnych źródeł ..."
od razu widać, że prawdopodobnie szukasz 3 stołów. Źródło stół, który proponujesz, wygląda dobrze. Proponuję Obiekt tabela wygląda jednak bardziej jak
ObjectId
ObjectName
ObjectDescription
... other object details (except measurement)
Twój trzeci stół to Twój Pomiar stół, który mógłby wyglądać tak
MeasurementId
ObjectId - reference to Object table
SourceId - reference to Source table
DatePerformed
MeasurementValue
Success
Notes etc
Oto korzyści
- Że nie musisz mieć określonej kolumny w swoim Obiektie dla konkretnego Źródła . Staje się to bardzo trudne do utrzymania, jeśli nagle masz więcej źródeł.
- Nie wszystkie obiekty potrzebujesz wartości dla każdego Źródła , chociaż dzięki tej strukturze nadal można łatwo określić, czy w obiekcie brakuje pomiaru z określonego źródła.
- Możesz przechowywać wiele pomiarów dla obiektu (oddzielonych za pomocą funkcji DatePerformed), a za pomocą funkcji Max(DatePerformed) możesz pobrać najnowszy pomiar.
Następnie możesz uzyskać listę wyników, jeśli to zrobisz
SELECT ObjectId, SourceId, DatePerformed, MeasurementValue
FROM Measurement
WHERE ObjectId = <your Object>
[AND/OR] SourceId = <your source>