На мой взгляд, лучший вариант — первый. Это придает гибкость организации хранения файлов. То есть, сегодня ваша папка с файлами называется — «files», а завтра вы решите её назвать «storage». Если вы при этом храните вместе с именем файла часть пути, вам придется редактировать кучу записей. Куда проще, на мой взгляд, указать путь до каталога с файлами в каком нибудь конфиге, а в базе хранить лишь имена.
Действительно, организация файлов очень упростится: например, вы сможете в любой момент рассортировать их по отдельным каталогам ('storage/music', 'storage/images' и т.п.).
> 5. менять имя картинки на ID записи в базе
Этот вариант не конфликтует с первым. Но, целесообразность такого решения зависит от конкретной ситуации.