1) Зависит от сущности и проекта
2) Зависит от сущности и проекта
3) Или
это или
это + свое поведение, которое подключается к модели и там вся логика.
4) Я храню только имена файлов, миниатюры в папках названных по размерам миниатюры, типа 400x или 100x100 или x200