Mysql
 sql >> Base de données >  >> RDS >> Mysql

Clé étrangère faisant référence à plusieurs lignes dans une autre table

La solution habituelle à cela serait de créer une table d'intersection :

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

Vous déposez ensuite v_id des owners .

Ce tableau permet à chaque owner posséder plusieurs vehicles , et chaque vehicle avoir plusieurs owners . Si vous souhaitez appliquer une contrainte d'un propriétaire par véhicule, ajoutez un UNIQUE index de vehicles_owned.v_id .

EDIT :Bien sûr, si vous souhaitez appliquer une contrainte d'un propriétaire par véhicule, vous pouvez également simplement ajouter o_id aux vehicles comme une clé étrangère, et ne pas s'embêter avec la table d'intersection.