Я создаю сайт с изображениями, сообщениями, альбомами и т. д.
Каждый может оставить комментарий.
Единственная реальная разница между этими комментариями состоит в том, что один будет комментарием к публикации, один будет комментарием к альбому, третий будет комментарием к картинке и т. д.
Если это единственное различие между этими комментариями, то стоит ли иметь подклассы, такие как PostComment, AlbumComment, PictureComment, которые все наследуют от Comment? Все они имеют одинаковые поля, за исключением одного поля, которое отличает их друг от друга.
Это перебор?

Я бы не сказал, что есть действительно «правильный» способ сделать это, поскольку это зависит от вашего конкретного варианта использования. Я лично не сказал бы, что подкласс для каждого PostComment, PictureComment и т. д. Является излишним, поскольку каждый подкласс будет иметь разные поля по сравнению с основным классом Comment. Таким образом, наследование могло бы стать прекрасным решением проблемы, если вы выберете классы; он четко обозначает, что является уникальным для каждого подкласса и что разделяется между ними.
Сказав это, я, вероятно, вместо этого выбрал бы ассоциацию таблиц базы данных, просто имея таблицу Comments вместе с таблицами Pictures и Posts. Затем вы можете просто настроить столбец type в таблице Comments, который является отображением внешнего ключа в соответствующую таблицу.
У вас может быть один внешний ключ, который соответствует двум разным таблицам? Я никогда об этом не слышал.