sql >> Database teknologi >  >> RDS >> Mysql

Strategi til at kortlægge flere filer i en enkelt tabel til et enkelt felt i en anden tabel

Hvis du ser på dit første udsagn

"...egenskaber for et enkelt objekt er målt via forskellige kilder ..."

du kan faktisk med det samme se, at du sikkert leder efter 3 borde. Kilden Bordet du foreslår ser fint ud. Jeg foreslår, at objekt tabel dog ligner mere

ObjectId
ObjectName
ObjectDescription
... other object details (except measurement)

Din tredje tabel er din måling bord, som kunne tænkes at se sådan ud

MeasurementId
ObjectId - reference to Object table
SourceId - reference to Source table
DatePerformed
MeasurementValue
Success 
Notes  etc

Fordelene her er

  • At du ikke behøver at have en bestemt kolonne i dit Objekt for en bestemt kilde . Dette bliver meget svært at vedligeholde, hvis man pludselig har flere kilder.
  • Ikke alle Objekter skal bruge en værdi for hver kilde , selvom du med denne struktur også nemt kan afgøre, om et objekt mangler mål fra en bestemt kilde.
  • Du kan have flere målinger gemt for et objekt (adskilt via DatePerformed), og ved at bruge Max(DatePerformed) kan du hente den seneste måling.

Så kan du få en liste over resultater, hvis du så gør

SELECT ObjectId, SourceId, DatePerformed, MeasurementValue
FROM Measurement
WHERE ObjectId = <your Object>
[AND/OR] SourceId = <your source>



  1. Fejl:Timeout for inaktivitet af håndtryk i Node.js v6.9.1 og MySQL

  2. SQLSTATE[22007]:Ugyldigt datetime-format:1366 Forkert heltalsværdi:'column_name' i Laravel

  3. Hvilken MySQL-datatype skal bruges til en IP-adresse?

  4. MySQL match mod med flere værdier til MOD