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

Kunci asing MySQL menggunakan lebih dari satu bidang untuk merujuk ke kunci utama dari tabel lain

Jangan gunakan kolom yang sama untuk kedua kunci asing. Ini terkadang disebut asosiasi polimorfik , dan itu melanggar aturan desain database yang baik.

Itu harus menjadi petunjuk bahwa itu adalah desain yang buruk, bahwa batasan FOREIGN KEY hanya mendukung satu tabel yang direferensikan. Tidak ada dukungan untuk asosiasi polimorfik dalam SQL standar.

Sebagai gantinya, buat dua kolom, satu untuk referensi ke Pengguna, yang lain untuk referensi ke SystemProcesses. Satu kolom per tabel referensi.

Logs
uid (INT)  UsersID (INT)  SystemProcessesID (INT) Action
1          2              NULL                    Jane Doe did this
2          1              NULL                    John Doe did that
3          1              1                       Hitman just killed John Doe

Jika tidak ada referensi yang relevan untuk kolom Users atau SystemProcesses, gunakan NULL untuk menunjukkan bahwa tidak ada nilai yang berlaku.

Anda mungkin ingin meninjau pertanyaan lain yang telah saya jawab tentang asosiasi polimorfik .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana menemukan baris yang memiliki nilai yang berisi huruf kecil?

  2. data saya tidak disimpan di database menggunakan ajax

  3. LOAD DATA LOCAL INFILE tidak berfungsi di RDS

  4. Bagaimana parse_dates bekerja dengan pd.read_sql_query

  5. php pdo menyisipkan kueri