sql >> データベース >  >> RDS >> Mysql

単一のテーブルにある複数のファイルを別のテーブルの単一のフィールドにマップする戦略

    最初のステートメントを見れば

    "...単一のオブジェクトのプロパティ 測定 さまざまなソース経由 ... "

    おそらく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>
    



    1. osxでjdbcを使用してjavaをmysqlに接続します

    2. ORIGINAL_DB_NAME()がSQLServerでどのように機能するか

    3. SQLServerで文字列値とNULL値を連結する方法

    4. MariaDBで日付に年を追加する6つの方法