Ik weet niet zeker of je begrijpt waarvoor buitenlandse sleutels worden gebruikt. Een externe sleutel zegt in feite "voor dit item moet er een item in de bovenliggende tabel zijn". Je zei user_id is foreign key in vehicle table
, wat niet duidelijk is voor mij.
Laten we dus aannemen dat je een tabeldefinitie hebt zoals deze:
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)
);
Als u een nieuwe gebruiker aan de tabel wilt toevoegen, moet de user_id een bestaand item zijn in de kolom car_owner in de tabel met voertuigen.
Buitenlandse sleutels zijn er om bedrijfsregels te implementeren. Moet elke gebruiker per se autobezitter zijn? Of andersom, moet elke auto eigendom zijn van iemand? Als u beide vragen met nee kunt beantwoorden, implementeer dan geen externe sleutels voor dit geval. Maar doe dat wel, als je zeker ja kunt antwoorden.
Om de informatie te krijgen die u zoekt, doet u gewoon
SELECT
*
FROM
vehicles
INNER JOIN users ON vehicles.car_owner = users.user_id