Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Chave estrangeira referindo-se a várias linhas em outra tabela


A solução usual para isso seria criar uma tabela de interseção:
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)
);

Você então solta v_id de owners .

Esta tabela permite que cada owner possuir vários vehicles , e cada vehicle ter vários owners . Se você deseja impor uma restrição de um proprietário por veículo, adicione um UNIQUE indexe para vehicles_owned.v_id .

EDIT:Claro, se você quiser impor uma restrição de um proprietário por veículo, você também pode simplesmente adicionar o_id para vehicles como chave estrangeira, e não se preocupe com a tabela de interseção.