Mysql
 sql >> Base de données >  >> RDS >> Mysql

Stratégie pour mapper plusieurs fichiers dans une seule table à un seul champ dans une autre table

Si vous regardez votre premier relevé

"...propriétés d'un seul objet sont mesurés via différentes sources ..."

vous pouvez en fait voir tout de suite que vous recherchez probablement 3 tables. La Source le tableau que vous proposez a l'air bien. Je suggère que Objet la table ressemble plus à

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

Votre troisième tableau est votre Mesure tableau, qui pourrait éventuellement ressembler à ceci

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

Les avantages ici sont

  • Que vous n'avez pas besoin d'avoir une colonne spécifique dans votre Objet pour une Source spécifique . Cela devient très difficile à maintenir si vous avez soudainement plus de sources.
  • Pas tous les Objets besoin d'une valeur pour chaque Source , bien qu'avec cette structure, vous puissiez toujours déterminer facilement si un objet manque de mesure à partir d'une source particulière.
  • Vous pouvez stocker plusieurs mesures pour un objet (séparées par DatePerformed), et en utilisant Max(DatePerformed), vous pouvez récupérer la dernière mesure.

Ensuite, vous pouvez obtenir une liste de résultats, si vous le faites ensuite

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