Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Klucz obcy MySQL używający więcej niż jednego pola do odwoływania się do klucza podstawowego z innej tabeli

Nie używaj tej samej kolumny dla obu kluczy obcych. Czasami nazywa się to powiązaniami polimorficznymi i łamie zasady dobrego projektowania baz danych.

Powinno to być wskazówką, że jest to zły projekt, że ograniczenie FOREIGN KEY obsługuje tylko jedną tabelę, do której się odwołuje. W standardowym SQL nie ma obsługi asocjacji polimorficznych.

Zamiast tego utwórz dwie kolumny, jedną na odwołanie do Użytkowników, a drugą na odwołanie do Procesów Systemowych. Jedna kolumna na tabelę odniesienia.

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

Jeśli nie ma odpowiedniego odniesienia dla kolumny Użytkownicy lub Procesy systemowe, użyj wartości NULL, aby wskazać, że nie ma odpowiedniej wartości.

Możesz chcieć przejrzeć inne pytania, na które odpowiedziałem na temat asocjacji polimorficznych .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wykorzystać to samo połączenie do dwóch zapytań w Springu?

  2. Podświetl Numer bieżącej strony PHP Pagination

  3. Sprawdź, czy wartości istnieją przed INSERT INTO ... W AKTUALIZACJI ZDUPLIKOWANEGO KLUCZA

  4. Pobierz wszystkie wpisy z Tabeli B, które mają związek z wieloma wpisami (podana lista) z Tabeli A

  5. Jak znaleźć lokalizację dziennika błędów demona MySQL?