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

Klucz obcy odnoszący się do wielu wierszy w innej tabeli

Zwykłym rozwiązaniem tego problemu byłoby utworzenie tabeli przecięcia:

CREATE TABLE vehicles_owned
(
  o_id INT,
  v_id INT,
  PRIMARY KEY (o_id, v_id),
  FOREIGN KEY (o_id)
    REFERENCES owners (o_id),
  FOREIGN KEY (v_id)
    REFERENCES vehicles (v_id)
);

Następnie upuszczasz v_id od owners .

Ta tabela pozwala każdemu owner posiadać wiele vehicles i każdy vehicle mieć wielu owners . Jeśli chcesz wymusić ograniczenie jednego właściciela na pojazd, dodaj UNIQUE indeks do vehicles_owned.v_id .

EDYCJA:Oczywiście, jeśli chcesz wymusić ograniczenie jednego właściciela na pojazd, możesz również po prostu dodać o_id do vehicles jako klucz obcy i nie zawracaj sobie głowy tablicą przecięć.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Użytkownicy aplikacji MySQL a użytkownicy baz danych

  2. Wydajny model danych dla zapytań o zakres

  3. Jak przechowywać adres IP w mySQL

  4. Nieznana kolumna w „klauzula o posiadaniu”

  5. PHP:Pokaż okno dialogowe potwierdzenia tak/nie