Външните ключове осигуряват референтна цялост. Данните в колоната за външен ключ са валидирани - стойността може да бъде само тази, която вече съществува в таблицата и колоната, дефинирани във външния ключ. Много е ефективен за спиране на „лошите данни“ – някой не може да въведе каквото си поиска – числа, ASCII текст и т.н. Това означава, че данните са нормализирани – повтарящите се стойности са идентифицирани и изолирани в собствената им таблица, така че няма повече притеснения относно справянето с чувствителността към малки и големи букви в текста... и стойностите са последователни. Това води до следващата част - външните ключове са това, което използвате, за да обедините таблици.
Вашата заявка за проектите, които потребителят има, няма да работи - препращате към колона от USERS
таблица, когато в заявката няма препратка към таблицата и не се използва подзаявка за получаване на тази информация, преди да се свърже с PROJECTS
маса. Това, което наистина бихте използвали е:
SELECT p.*
FROM PROJECTS p
JOIN USERS u ON u.user_id = p.creator
WHERE u.username = 'John Smith'