Как делать выборку при нормализации?
Сферический запрос в вакууме:SELECT `юзеры`.*
FROM `юзеры`
    INNER JOIN `города`
        ON `города`.`id` = `юзеры`.`город_id`
    INNER JOIN `области`
        ON `области`.`id` = `города`.`область_id`
    INNER JOIN `страны`
        ON `страны`.`id` = `области`.`страна_id`
WHERE `страны`.`страна` = 'Россия'
Понятное дело, что такой запрос будет несколько медленным, так что я бы сделал еще таблицу `адреса`, на нее и будут ссылаться записи из `юзеры`, и в этой таблице хранить и `город_id`, и `область_id`, и `страна_id`. Для увеличения производительности иногда приходится отказываться от строгой нормализации, но в таком варианте хотя бы названия не дублируются, и если надо будет поменять 'Москва' на 'Москвабург', то это коснется только одной записи.
Для данного случая - nosql базы смотрите. Здесь многомерные связи.