Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Strategie zum Zuordnen mehrerer Felder in einer einzelnen Tabelle zu einem einzelnen Feld in einer anderen Tabelle

Wenn Sie sich Ihre erste Aussage ansehen

"...Eigenschaften eines einzelnen Objekts werden gemessen über verschiedene Quellen ..."

Sie können tatsächlich sofort sehen, dass Sie wahrscheinlich nach 3 Tischen suchen. Die Quelle Tisch, den Sie vorschlagen, sieht gut aus. Ich schlage dieses Objekt vor Tabelle sieht jedoch eher aus wie

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

Ihre dritte Tabelle ist Ihre Messung Tabelle, die so aussehen könnte

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

Die Vorteile hier sind

  • Dass Sie keine bestimmte Spalte in Ihrem Objekt haben müssen für eine bestimmte Quelle . Dies wird sehr schwierig zu pflegen, wenn Sie plötzlich mehr Quellen haben.
  • Nicht alle Objekte benötigen einen Wert für jede Quelle , obwohl Sie mit dieser Struktur auch leicht feststellen können, ob einem Objekt eine Messung aus einer bestimmten Quelle fehlt.
  • Sie können mehrere Messungen für ein Objekt speichern (getrennt durch DatePerformed), und mit Max(DatePerformed) können Sie die letzte Messung abrufen.

Dann können Sie eine Ergebnisliste erhalten, wenn Sie dann

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