sql >> Database teknologi >  >> RDS >> Mysql

Fremmednøgle henviser til flere rækker i en anden tabel

Den sædvanlige løsning på dette ville være at oprette en skæringstabel:

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

Du slipper derefter v_id fra owners .

Denne tabel tillader hver owner at eje flere vehicles , og hvert vehicle at have flere owners . Hvis du vil håndhæve en begrænsning for én ejer pr. køretøj, skal du tilføje en UNIQUE indeks til vehicles_owned.v_id .

EDIT:Selvfølgelig, hvis du vil håndhæve en begrænsning for én ejer pr. køretøj, kan du også blot tilføje o_id til vehicles som en fremmednøgle, og ikke genere skæringstabellen.




  1. Hvor skal en UTC-dato-tidsværdi indstilles i n-tier-applikation:Præsentationslag, Domæne eller Database?

  2. ORA-06553:PLS-801:intern fejl [55018] ved test af funktion, der returnerer ROWTYPE

  3. PHP &WP:prøv at catch ikke virker, når fejl fra DB er smidt

  4. MySQL Query får de sidste N rækker pr. gruppe