Cтоит ли создавать отдельную таблицу для картинок в БД ?
Предположим, есть несколько таблиц - Категории, Посты, Отзывы, Фотоальбом, Партнёры, Новости, Статьи, События и так далее. К каждой записи для каждой из таблиц необходимо прикреплять картинку. Стоит ли создавать для этого отдельно таблицу с картинками? Её можно привязать к другим таблицам + в ней можно хранить описание картинки. Или это глупая идея?
Однозначно стоит. Зачем плодить сущности в каждой таблице? А в таблицу картинок добавить путь, добавить размеры и другую необходимую информацию. Да и в случае расширения придется поменять только одну сущность, а не множество.
На самом деле картинки - это такой ресурс, который лучше не колбасить движком без надобности. Запросто скажется на производительности. Намного лучше в базе в отдельной таблице хранить описание картинки(путь к файлу, заголовок и т.д. и т.п.), но картинку физически хранить на диске. С файловой системой операции показа картинок будут проходить намного быстрее.
В подавляющем большинстве случаев лучше всего хранить в БД название файла, а не саму картинку. Это гораздо более производительное решение. Единственный случай приходит на ум, когда хранить в БД имеет смысл, это когда есть несколько бэкендов, но нет выделенного файлового хранилища и не хочется заморачиваться с синхронизацией файлов.