Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Strategi untuk memetakan banyak arsip dalam satu tabel ke satu bidang di tabel lain

Jika Anda melihat pernyataan pertama Anda

"...properti dari satu objek diukur melalui sumber different yang berbeda ..."

Anda benar-benar dapat melihat langsung bahwa Anda mungkin mencari 3 tabel. Sumber tabel yang Anda usulkan terlihat baik-baik saja. Saya menyarankan agar Objek tabel meskipun lebih mirip

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

Tabel ketiga Anda adalah Pengukuran tabel, yang mungkin terlihat seperti ini

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

Manfaat di sini adalah

  • Bahwa Anda tidak perlu memiliki kolom tertentu di Objek untuk Sumber tertentu . Ini menjadi sangat sulit untuk dipertahankan jika Anda tiba-tiba memiliki lebih banyak sumber.
  • Tidak semua Objek membutuhkan nilai untuk setiap Sumber , meskipun dengan struktur ini Anda masih dapat menentukan apakah Obyek hilang Pengukuran dari sumber tertentu juga dengan mudah.
  • Anda dapat menyimpan beberapa pengukuran untuk suatu objek (dipisahkan melalui DatePerformed), dan menggunakan Max(DatePerformed) Anda dapat mengambil pengukuran terbaru.

Kemudian Anda bisa mendapatkan daftar hasil, jika Anda melakukannya

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hibernasi kueri di database

  2. Perbarui baris setelah mysql pilih foreach

  3. Pengguna aplikasi MySQL vs pengguna database

  4. Nilai default tidak valid untuk bidang stempel waktu 'buat_tanggal'

  5. Hubungan Banyak-ke-Banyak di MySQL