SP
Это если делать допущение что ссылочная целостность обязанность базы. Тут есть пара лайфхаков: никогда ничего не удалять - тогда ситуации при которой нарушатся существующие ссылки на штуки невозможны
На тему сокращения количества таблиц - я бы сокращал количество связей. Ну то есть для ACL который ты пытаешься реализовать тебе ж по сути не нужно знать "типы" таблиц. Ты всеравно не сможешь так FK организовать. А ACL в куче таблиц как-то неудобно...
> вопрос, как в doctrine в рамках symfony мне сделать класс для того, чтобы он сам определял по переданным в него аргументам в какую таблицу записывать?
делаешь сервис, там эту логику прячешь.