O2O связь подразумевает, что у Проекта может быть только один Этап, а у Этапа может быть только один Проект. Связи O2O чаще всего бессмысленны и создаются для оптимизации БД и разделения сущностей в разные таблицы.
Сталкивался ли кто с чем-то похожим, может есть какие то более хитрые и простые решения?
Есть очень простое решение — прочитать книжки про базы данных и построение их архитектуры, получше познакомиться с видами связей.