@NikSIk31

Как лучше хранить изображений? Одна папка или много?

Приветствую! У меня есть БД с ЗАДАНИЯМИ, у каждого задания есть от 0 до 10 фотографий. Как лучше хранить фотографии к заданиям? Сделать поле images в БД (там где и вся инфа о задании) и в этом поле через разделитель хранить названия всех фото жля контретного задания, а все фото в одной папке. Или сделать для каждого задания свою папку и назвать ее по ID задания? Как лучше для производительности? Подскажите пожалуйста
  • Вопрос задан
  • 201 просмотр
Пригласить эксперта
Ответы на вопрос 3
FanatPHP
@FanatPHP
Чебуратор тега РНР
С разделителями в бд вообще никогда ничего хранить не надо.
Если информация о файлах в БД не нужна, то не хранить её там вообще.
Делать отдельные папки будет вполне достаточно.
Ответ написан
Gomonov
@Gomonov
Если Вы уверены, что один файл не будет относится более чем к одному заданию - то да, как в ответе выше - один ко многим. Иначе много ко многим. Так же позволю дать рекомендации. Хранить лучше не оригинальное название, а хеш от файла, таким образом сразу решается проблема одинаковых имён файлов. Это поле можно сделать уникальным. Если оригинальное имя необходимо - храните его отдельным полем. По поводу папок. Если это веб-приложение, посещаемость большая и файлов овермного - стоит раскидывать по папкам. Например у вас хеш имеет вид ab1c3fd...... , то можно создать папку с именем из двух первых символов хеша. В данном случае ab - и кинуть файлик туда. Если файлов прям оооооооооочень много, можно делать вторую папку по второй паре символов из хеша. Конечный путь ab/1c/ab1c3fd......
Ответ написан
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Это называется "отношение 1 к многим", оно же one to many, оно же 1:n. На уровне базы данных выглядит так:

Таблица tasks:
- id
- ...

Таблица photos:
- id
- task_id (foreign key)
- ...

Все фотографии для конкретного задания получаются запросом:
SELECT * FROM photos WHERE task_id=X

В каких папках их хранить на самом диске - вопрос отдельный и по большому счету несущественный.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы