sql >> Databáze >  >> RDS >> Mysql

Cizí klíč odkazující na více řádků v jiné tabulce

Obvyklým řešením by bylo vytvořit průsečíkovou tabulku:

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

Poté vynecháte v_id od owners .

Tato tabulka umožňuje každému owner vlastnit více vehicles a každé vehicle mít více owners . Pokud chcete prosadit omezení jednoho vlastníka na vozidlo, přidejte UNIQUE index na vehicles_owned.v_id .

EDIT:Samozřejmě, pokud chcete prosadit omezení jednoho vlastníka na vozidlo, můžete také jednoduše přidat o_id na vehicles jako cizí klíč a neobtěžovat se s průnikovou tabulkou.




  1. Jak nainstalovat a zabezpečit MariaDB na CentOS 7

  2. Názvy sloupců a datové typy pro materializované pohledy v PostgreSQL?

  3. Dotaz na dvě tabulky z jiného schématu

  4. Co přesně se stalo s operací indexování?