Nejsem si jistý, jestli jsi pochopil, k čemu se používají cizí klíče. Cizí klíč v podstatě říká „pro tento záznam musí být záznam v nadřazené tabulce“. Řekl jste, že user_id is foreign key in vehicle table
, což mi není jasné.
Předpokládejme tedy, že máte definici tabulky takto:
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)
);
Když chcete do tabulky vložit nového uživatele, user_id musí být existující záznam ve sloupci car_owner v tabulce vozidel.
Cizí klíče slouží k implementaci obchodních pravidel. Musí být každý uživatel nutně majitelem auta? Nebo naopak, musí každé auto někdo vlastnit? Pokud můžete na obě otázky odpovědět ne, pak pro tento případ neimplementujte žádné cizí klíče. Ale udělejte to, pokud můžete odpovědět ano jistě.
Chcete-li získat informace, které hledáte, stačí udělat
SELECT
*
FROM
vehicles
INNER JOIN users ON vehicles.car_owner = users.user_id