Здесь действительно два вопроса.Во-первых, учитывая, что по административным причинам вы не можете вносить изменения в схему базы данных, приемлемо ли придумать какой-то обходной путь.На это я должен был бы сказать да.Что еще можно сделать?Теоретически, если администратору базы данных потребуется две недели, чтобы внести изменения в схему, эти две недели должны быть добавлены к любому заданному сроку.На практике этого почти никогда не бывает.Я часто работал в местах, где какие-то документы или что-то еще требовалось за две недели до того, как я смог начать работу, а затем мне дали две недели и один день, чтобы сделать проект.Иногда вам просто нужно соединить его с резинками и полосами.
Во-вторых, стоит ли встраивать соглашение об именовании в имена файлов и использовать его для идентификации файлов и их связи с другими данными.Я делал это время от времени, и в целом это работало на меня, хотя у меня, возможно, иррациональное эмоциональное чувство, что это не очень хорошая идея.
С положительной стороны: (a) Встраивая информацию в имя файла, вы облегчаете как компьютеру, так и человеку идентификацию ассоциаций файлов.(Человек может быть прочитан, если соглашение об именах достаточно простое). (Б) Исключая отдельное хранилище ссылки, вы исключаете возможность плохой ссылки.Конечно, файл с соответствующим именем может не существовать, но запись в базе данных с соответствующими ключами может не существовать, или ссылка на файл в такой записи может быть нулевой или недействительной.Таким образом, кажется, что она решает одну проблему без создания каких-либо новых проблем.
Потенциальные минусы: (a) У вас могут быть символы в ключе, которые недопустимы в именах файлов.Вы можете просто удалить такие символы, или это может привести к дублированию.Единственная безопасная вещь - это как-то избежать их, что является болью.(б) Вы можете превысить допустимую длину имени файла.Не так много проблем, как это было в старые добрые 8,3 дня.(c) Вы не можете делиться файлами.Если запись базы данных указывает на файл, то две записи базы данных могут указывать на один и тот же файл.Если вам необходимо сделать две копии файла, это не только расходует место на диске, но также означает, что если файл обновляется, вы должны обязательно обновить все копии.Если в вашем приложении не имеет смысла обмениваться файлами, то это не проблема.
Вы должны каким-то образом управлять файлами, но вы все равно должны были это сделать.
Я действительно не могу думать ни о каких минусах.Как я уже сказал, я делал это время от времени и не сталкивался с какими-либо конкретными проблемами.Мне интересно видеть ответы других.