Нет ничего плохого в том, что контроллеры делятся моделями. Но пытаться обслуживать каждый контроллер одной и той же модели не имеет смысла.
Модели и контроллеры действительно не связаны, и не должны быть. Модели также не имеют прямого отношения к тому, как данные хранятся в вашем приложении.
Модели инкапсулируют данные. Их дизайн должен быть продиктован данными, которые они инкапсулируют. Требования системы определяют, какие модели вам понадобятся и какие данные они должны хранить.
Не пытайтесь обдумать это. Для данного запроса определите, что вам нужно показать в вашем представлении и как оно будет отображаться. Определите, как будет выглядеть подходящая модель для этого сценария. Если он уже существует, используйте его. Если нет, создайте новую модель. Сохраните переподготовку позже, когда будете знать, что вам нужно, и сможете найти общие черты между моделями.
Модели также могут содержать другие модели, это нормально. Подумайте о модели для отчета о продажах. У вас будет модель для отчета, которая будет содержать не только имя отчета, итоговую сумму, но и набор других моделей, составляющих отдельные позиции отчета.