Sposób, w jaki go masz, jest najbardziej optymalny, jeśli chodzi o ograniczenia czasowe. Jasne, zajmuje więcej miejsca, ale jest to część kompromisu czasoprzestrzennego - Jeśli chcesz być szybszy, zużywasz więcej miejsca; jeśli chcesz wykorzystać mniej miejsca, będzie działać wolniej (średnio).
Pomyśl także o przyszłości. W tej chwili prawdopodobnie wybierasz kraje dla każdego użytkownika, ale poczekaj. Dzięki magii pełzania zakresu, Twoja aplikacja pewnego dnia będzie musiała wybrać wszystkich użytkowników w danym kraju, w którym to momencie skanowanie pola „KRAJ” każdego użytkownika w celu znalezienia dopasowań będzie niezwykle powolne, w przeciwieństwie do zwykłego przechodzenia wstecz przez USER_COUNTRY_REL, tak jak teraz.
Ogólnie rzecz biorąc, w przypadku korelacji 1 do 1 lub 1 do wielu można łączyć według klucza obcego. W przypadku korelacji wiele do wielu chcesz mieć między nimi tabelę relacji. Ten scenariusz jest relacją wiele-do-wielu, ponieważ każdy użytkownik ma wiele krajów, a każdy kraj ma wielu użytkowników.