Вопрос, конечно, лаконичен до предела... Под "базой", надо полагать, подразумевается база данных? И какая именно?..
Вообще-то для хранения подобных объектов заведомо большого и заранее неизвестного размера в большинстве достаточно развитых баз данных существуют специальные типы данных, обобщенно называемые BLOB (Binary Large Objects). Хотя этот тип и не входит в стандарты SQL/89 и SQL/92, но по этому ключевому слову в документации наверняка найдется реализация данного типа в конкретной СУБД. Так, например, в Transact SQL (диалект SQL для Microsoft SQL Server) этот тип называется
image и может содержать
любые двоичные данные размером до 2Гбайт в каждой записи. В базах Microsoft Jet (aka Access) аналогичный тип носит название "Поле объекта OLE". Коллеги, работающие с Oracle, Interbase и MySQL, могут дополнить, как BLOB реализован на их любимых платформах.
А теперь по поводу:
О, сколько раз твердили миру... Не надо хранить картинки и прочие крупные бинарные файлы в базах. Базы это могут, но от этого только падает скорость поиска/вставки.
Не вносите дополнительную неразбериху в этот и без того далекий от совершенства мир... Пусть существующие СУБД и далеки от идеала, но по крайней мере у их разработчиков хватило сообразительности не хранить BLOB'ы физически там же, где и "строки" таблиц. Так, например, в MS SQL поле
image фактически является ссылкой на размещение данных и занимает всего 16 байт. Не столь уж великие накладные расходы, чтобы существенно повлиять на скорость поиска, особенно если индексы построены с умом. Конечно, если кто-то вздумает сделать поиск по самому двоичному содержимому картинки, хранящейся в BLOB'е... Но это уже патология, и таких "программистов" лучше все-таки изолировать от сервера.
Картинки следует хранить на диске в виде файлов, а в базе хранить пути к ним.
Недавно я опубликовал перевод статьи Дейкстры "Смиренный программист". Не могу не привести цитату из нее: "...мы должны быть очень осторожны, давая советы молодежи: иногда они следуют им!"
Предположим, я поверил приведенным выше доводам, сделал директорию, перенес в нее несколько тысяч файлов с картинками и принялся заполнять базу "путями к ним". По ходу возникает несколько вопросов.
1. Каким образом планируется поддерживать целостность столь шаткой структуры? Как убедиться в том, что в базе отсутствуют "слепые" ссылки, которые указывают на несуществующие файлы, и "бесхозные" файлы, на которые нет ссылок? Как гарантировать синхронное добавление/удаление файла и записи со ссылкой на него? Сочинять специальный инструментарий? Нанимать специального человека?
2. Разумеется, клиента интересует не имя файла, в котором сидит картинка, а само содержимое картинки. Следовательно, на сервере, помимо самого SQL-сервера, будет открыт еще и файловый сервис со всеми вытекающими прелестями: разделяемый ресурс, открытые порты NetBIOS для доступа к файлам по SMB, столь лакомые для "червяков" вроде LoveSun, головная боль с прописыванием прав доступа... Думаю, администраторы, ответственные за сетевую безопасность, будут чрезвычайно благодарны за такое решение, ибо это их надежная гарантия от безработицы. А если сервер еще и в открытой сети стоит...
Есть и еще вопросы, но полагаю, что и этих вполне достаточно, чтобы всерьез призадуматься.