Нормализация состояния - это больше, чем просто доступ к данным путем обхода дерева объектов.Это также связано с тем, как вы наблюдаете за данными.
Одна из причин нормализации - избегать ненужных уведомлений об изменениях.Объекты обрабатываются как неизменяемые, поэтому при их изменении создается новый объект, так что быстрая проверка ссылок может показать, изменилось ли что-либо в объекте.Если вы вложите объекты, а дочерний объект изменится, вам следует сменить родительский объект.Если какой-то код наблюдает за родителем, он будет получать уведомления об изменениях каждый раз, когда изменяется ребенок, даже если это не имеет значения.Таким образом, в зависимости от вашего сценария вы можете получить кучу ненужных уведомлений об изменениях.
Это также отчасти поэтому вы видите списки объектов, разбитых на массив идентификаторов и карту объектов.Что касается обнаружения изменений, это позволяет вам наблюдать за списком (независимо от того, были ли элементы добавлены или удалены), не заботясь об изменениях самих объектов.
Так что это зависит от вашего использования.Просто помните о стоимости наблюдений и влиянии, которое на это оказывает ваше состояние.