最初のステートメントを見れば
"...単一のオブジェクトのプロパティ 測定 さまざまなソース経由 ... "
おそらく3つのテーブルを探していることがすぐにわかります。 ソース あなたが提案するテーブルはうまく見えます。 オブジェクトをお勧めします テーブルはもっと似ていますが
ObjectId
ObjectName
ObjectDescription
... other object details (except measurement)
3番目のテーブルは測定値です テーブル、おそらくこのように見える可能性があります
MeasurementId
ObjectId - reference to Object table
SourceId - reference to Source table
DatePerformed
MeasurementValue
Success
Notes etc
ここでのメリットは
- オブジェクトに特定の列を含める必要がないこと 特定のソース 。突然より多くのソースがある場合、これを維持することは非常に困難になります。
- すべてのオブジェクトではありません ソースごとに値が必要 、ただし、この構造を使用すると、特定のソースからの測定値がオブジェクトにないかどうかを簡単に判断できます。
- オブジェクトに対して複数の測定値を保存し(DatePerformedを介して分離)、Max(DatePerformed)を使用して最新の測定値を取得できます。
次に、結果のリストを取得できます。
SELECT ObjectId, SourceId, DatePerformed, MeasurementValue
FROM Measurement
WHERE ObjectId = <your Object>
[AND/OR] SourceId = <your source>