Вы должны подумать, почему вы разделяете классы. Если это ради производительности (не для того, чтобы загружать больший класс для простого чтения), то вы наверняка оптимизируете преждевременно. Вы не должны принимать такие решения до тех пор, пока не сможете определить из реальных данных, что такая необходимость существует (что, по моему мнению, никогда не произойдет. Используйте APC или какой-либо другой кэш байт-кода, если вы беспокоитесь о больших классах).
Относительно разрешений - это то, что должно быть логикой приложения, а не физически разделять методы на разные классы. Кроме того, разве вы не расширяете базовый DAO, который абстрагирует такие операции? Вы не будете внедрять отдельные методы вставки / удаления / обновления для каждой модели? эти операции не сильно различаются и должны принадлежать общему родительскому классу.
Я предлагаю вам взглянуть на некоторые хорошие реализации с открытым исходным кодом для абстракции базы данных в PHP, такие как Zend_Db (которые я настоятельно рекомендую).