Начинът, по който го имате, е най-оптималният що се отнася до времевите ограничения. Разбира се, заема повече място, но това е част от компромис пространство-време - Ако искате да сте по-бързи, използвате повече място; ако искате да използвате по-малко място, ще работи по-бавно (средно).
Освен това помислете за бъдещето. Точно сега вероятно избирате държавите за всеки потребител, но просто изчакайте. Благодарение на магията на пълзенето на обхвата, вашето приложение един ден ще трябва да избере всички потребители в дадена държава, като в този момент сканирането на полето „ДЪРЖАВА“ на всеки потребител за намиране на съвпадения ще бъде невероятно бавно, за разлика от простото връщане назад през Таблица USER_COUNTRY_REL, както можете да направите сега.
По принцип за корелация 1 към 1 или 1 към много можете да свържете чрез външен ключ. За корелация много към много искате да имате таблица за релации между двете. Този сценарий е връзка много към много, тъй като всеки потребител има множество държави и всяка държава има множество потребители.