sql >> Base de Datos >  >> RDS >> Mysql

Clave externa que hace referencia a varias filas en otra tabla

La solución habitual a esto sería crear una tabla de intersección:

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)
);

Luego sueltas v_id de owners .

Esta tabla permite que cada owner poseer múltiples vehicles , y cada vehicle tener varios owners . Si desea aplicar una restricción de un propietario por vehículo, agregue un UNIQUE indexar a vehicles_owned.v_id .

EDITAR:por supuesto, si desea imponer una restricción de un propietario por vehículo, también puede simplemente agregar o_id a vehicles como clave foránea, y no molestarse con la tabla de intersección.