Указанная вами схема не может быть реализована через FOREIGN KEY, можно через триггеры на таблицах "родителей". Либо я бы рекомендовал поместить всех родителей и их типы (если я все правильно понял и это их типы) в одну таблицу с примерно такой схемой:
CREATE TABLE trasports (
id INT UNSIGNED NOT NULL,
type INT UNSIGNED NOT NULL,
PRIMARY KEY (id, type)
FOREIGN KEY (type) REFERENCES transport_type (id)
);
И внешний ключ в user_transport делать по двум полям:
ALTER TABLE user_transport ADD FOREIGN KEY (transport_type, transport_id) REFERENCES trasports (type, id) ON UPDATE CASCADE;