sql >> Databasteknik >  >> RDS >> Mysql

Utländsk nyckel som refererar till flera rader i en annan tabell

Den vanliga lösningen på detta skulle vara att skapa en skärningstabell:

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 släpper sedan v_id från owners .

Den här tabellen tillåter varje owners att äga flera vehicles , och varje vehicles att ha flera owners . Om du vill upprätthålla en begränsning för en ägare-per-fordon, lägg till en UNIQUE indexera till vehicles_owned.v_id .

EDIT:Naturligtvis, om du vill upprätthålla en begränsning för en ägare-per-fordon, kan du också helt enkelt lägga till o_id till vehicles som en främmande nyckel, och inte bry dig om skärningstabellen.




  1. Felkod:1052. Kolumnen 'ATTRIBUTE' i fältlistan är tvetydig

  2. Vilka privilegier krävs i MySQL för att exekvera en trigger?

  3. Utveckla PostgreSQL för Windows, del 1

  4. Få tidigare värde efter uppdatering - MySql