Ваше решение довольно быстро взорвет ваш стол "foo".
представьте, что у вас 1000 человек. тогда каждый человек имеет минимум 2 национальности.
тогда у вас есть таблица национальности, и у каждого человека есть по крайней мере 1,5 национальности.
затем пол, где каждый человек имеет минимум 1 пол, что уже составляет до 4500 записей.
Теперь предположим, что ваш личный стол увеличивается до 50000 человек.
это сделает уже 225000 записей в вашей таблице "foo".
теперь, когда у вас есть заполненные таблицы, вы делаете запрос, объединяющий людей с foo и только этнической принадлежностью, чтобы получить этнические группы всех людей, и ваш сервер будет работать очень долго, потому что вы присоединяетесь к таблице 50000 с таблицей 225000 и конец присоединиться к маленькому столу.
так что я надеюсь, я ясно дал понять, почему не стоит создавать такой макет