Вспомнил еще один аргумент.
В ЯП мы оперируем понятиями объектов, а в sql колонками и клеим их маппингом колонка -> поле в объекте. Но это все держится на доверии, потому что в sql мы можем выбрать произвольное количество колонок, можем заджоинить объект с объектом. В итоге мы делаем объекты Author, Book, AuthorWithBook, а если надо селектать разные наборы полей появляется SimpleBook и FatBook (а если нужно заджоинить еще и для разных наборов колонок это тушите свет).
Это я все к тому, что скл плохо ложится и на ооп.
В ОРМ не надо никаких AuthorWithBook, если у вас на уровне БД нет каких-то дополнительных свойств связей, которые нужны в бизнес логике. Например в EF можно в конфиге прописать какая таблица с какой связана через третью, все проверится после компиляции и запросы неявно будут использовать эту таблицу. И у вас будет просто автор с массивом книг, который может быть пустым + книги с массивом авторов. Ну а если там связь 1:n то еще проще, даже конфиг не надо зачастую.
Разные модели тоже необязательно делать, те же EF/слик мапят на кортежи/анонимные типы спокойно.