sql >> Base de Datos >  >> RDS >> Mysql

Estrategia para asignar múltiples archivos en una sola tabla a un solo campo en otra tabla

Si miras tu primera declaración

"...propiedades de un solo objeto se medin a través de diferentes fuentes ..."

De hecho, puede ver de inmediato que probablemente esté buscando 3 mesas. La fuente la mesa que propones se ve bien. Sugiero que Objeto mesa aunque se parece más a

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

Tu tercera tabla es tu Medida mesa, que posiblemente podría verse así

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

Los beneficios aquí son

  • Que no necesita tener una columna específica en su Objeto para una Fuente específica . Esto se vuelve muy difícil de mantener si de repente tienes más fuentes.
  • No todos los Objetos necesita un valor para cada Fuente , aunque con esta estructura también puede determinar fácilmente si a un objeto le falta la medición de una fuente en particular.
  • Puede tener varias medidas almacenadas para un objeto (separadas por DatePerformed), y usando Max(DatePerformed) puede recuperar la última medida.

Luego puede obtener una lista de resultados, si luego lo hace

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