Пытаюсь понять как устроена база данных в сервисе Duolingo, и делаю их ER.
Дуолинго это сервис где пользователь проходит уроки по выбранному языку(курсу)(например русский-английский).
Пример как выглядит это в дуолинго:
Проблема у меня в том что не понятно как хранить состояние конкретного пользователя, чтоб это еще было юзабельно.
Я сделал примерную ЕР как мне кажется оно должно выглядеть:
Выглядит очень страшно, и четкое ощущение что должно выглядеть более элегантно.
Но у этого решения есть проблема:
Как эффективно и быстро доставать статус топика конкретного пользователя(в примере "Урок 5 из 6"), Каждый раз считать? Это ж самоубийство.
Вопрос в том, как правильно хранить такие данные, чтобы это работало быстро и эффективно в условиях реляционной базы данных?