Mysql
 sql >> база данни >  >> RDS >> Mysql

Външен ключ на MySQL, използващ повече от едно поле за препратка към първичен ключ от друга таблица

Не използвайте една и съща колона и за двата външни ключа. Това понякога се нарича полиморфни асоциации и нарушава правилата за добър дизайн на база данни.

Трябва да е улика, че дизайнът е лош, че ограничението FOREIGN KEY поддържа само една референтна таблица. Няма поддръжка за полиморфни асоциации в стандартния SQL.

Вместо това създайте две колони, едната за препратка към Потребители, другата за препратка към SystemProcesses. Една колона на референтна таблица.

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

Ако няма подходяща препратка за колоната Users или SystemProcesses, използвайте NULL, за да укажете, че няма приложима стойност.

Може да искате да прегледате други въпроси, на които отговорих относно полиморфните асоциации .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да предотвратим едновременни влизания на потребители в сайта на PHP/MySQL?

  2. Мога ли да откривам и обработвам MySQL предупреждения с PHP?

  3. Laravel - Как правилно да генерирате уникални охлюви от заглавия на статии?

  4. phpexcel експортиране в excel с изображение

  5. Актуализирайте таблица с count() от друга таблица