Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Fremdschlüssel, der sich auf mehrere Zeilen in einer anderen Tabelle bezieht

Die übliche Lösung dafür wäre, eine Schnitttabelle zu erstellen:

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

Sie löschen dann v_id von owners .

Diese Tabelle erlaubt jedem owner mehrere vehicles zu besitzen , und jedes vehicle mehrere owners zu haben . Wenn Sie eine Beschränkung auf einen Besitzer pro Fahrzeug erzwingen möchten, fügen Sie einen UNIQUE hinzu Index zu vehicles_owned.v_id .

BEARBEITEN:Wenn Sie natürlich eine Ein-Besitzer-pro-Fahrzeug-Einschränkung durchsetzen möchten, können Sie auch einfach o_id hinzufügen zu vehicles als Fremdschlüssel, und sich nicht um die Schnittpunkttabelle kümmern.