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

Come utilizzare la chiave esterna durante l'esecuzione di query da due tabelle

Non sono sicuro, se hai capito a cosa servono le chiavi esterne. Una chiave esterna fondamentalmente dice "per questa voce deve esserci una voce nella tabella padre". Hai detto che user_id is foreign key in vehicle table , che non mi è chiaro.

Quindi, supponiamo che tu abbia una definizione di tabella come questa:

CREATE TABLE vehicles
(`id_car` int, `car_model` varchar(2), `car_owner` int);


CREATE TABLE users
(`user_id` int, `user_name` varchar(5), `user_phone` varchar(7)
, CONSTRAINT `fk_your_foreign_key` FOREIGN KEY (user_id) REFERENCES vehicles(car_owner)
);

Quando vuoi inserire un nuovo utente nella tabella, user_id deve essere una voce esistente nella colonna car_owner nella tabella dei veicoli.

Le chiavi esterne sono lì per implementare le regole di business. Ogni utente deve necessariamente essere proprietario di un'auto? O viceversa, ogni macchina deve essere di proprietà di qualcuno? Se puoi rispondere a entrambe le domande con no, non implementare alcuna chiave esterna per questo caso. Ma fallo, se puoi rispondere di sicuro sì.

Per ottenere le informazioni che stai cercando, fai

SELECT 
* 
FROM 
vehicles 
INNER JOIN users ON vehicles.car_owner = users.user_id