Хранить ли названия изображений в БД?
Нет, это все-таки очень желательно. то что я опишу не единственно верная реализация, но достаточно удобная. 
У вас будет много картинок как я понял, также вероятно у вас будут сохранены разные размеры загруженной картинки, и возможно различные варианты с наложенными эффектами. 
Также в папке не может быть много файлов,  есть некоторые особенности файловой системы, много картинок в одной папке - замедлит ее работу. 
Допустим картинка называется 123.png и ее хеш e621fccb4c38d568669432b004a50f59. 
Вы можете сделать путь к картинке 
/img/621/fcc/b4c/38d568669432b004a50f59/original.png 
Что даст?
1. Название картинки берется с бд, если зальют две одинаковые картинки, их хеш совпадет, вы избежите дублирования файлов.
2. Вы можете сохранять разные варианты картинки, например:
/img/621/fcc/b4c/38d568669432b004a50f59/original.png - это оригинал, а
/img/621/fcc/b4c/38d568669432b004a50f59/size_l.png - уменьшенная копия
/img/621/fcc/b4c/38d568669432b004a50f59/size_l_stamp.png - уменьшенная копия + водяной знак
3. В папке никогда не будет больше 4096 файлов, так как название папки это часть хеша
Нет не обязательно, если всегда следовать этому шаблону, нет необходимости хранить адрес в бд. Даже если Вы захотите переделать шаблон, или алгоритм хранения вообще, зная первоначальную маску Вы и с этим справитесь. У меня тоже на сайте храняться изображения к объявлениям, по названию папки с id самого объявления. И база об этом не знает. И не надо ей лишних 20-30 символов хранить (особенно ощутимо если индексы, и если данных более 1.6млн записей).