Если у каждого пользователя может быть только один уровень, то это one to one. Если у пользователя может быть несколько уровней, то one to many. Во втором случае отделять надо точно. В первом зависит от нюансов конкретной системы. Например степени логической связанности данных - на сколько данные в таблице users
имеют смысл без данных в таблице users_progress
. Или характера работы с данными: если данные из обеих таблиц никогда не выбираются друг без друга, то у вас будет часть ресурсов тратиться на ненужные объединения, но если часть выборок использует только данные из users
, а часть только из users_progress
, то тратить ресурсы уже будет их нахождение в одной таблице.