2011-12-24 6 views
2

Когда пользователь загружает изображение, я изменяю его размер в 3 разных размерах. Я не могу решить, что лучший вариант:
Сохранить путь изображения в базе данных

1) Сохранить путь изображения в одном столбце в базе данных, как: User9876/ImageName и расширения в другой колонке. Когда я получаю данные профиля пользователя из базы данных, у меня есть бизнес-объект с тремя свойствами для разного размера изображения. А в коде я заполнить эти свойства, добавляя расширение на путь изображения из базы данных, как:

User9876/ImageName_Original.jpg 
User9876/ImageName_Small.jpg 
User9876/ImageName_Smallest.jpg 

2) Или лучше иметь три столбца в базе данных для каждого размера?

ответ

2

Пара рекомендаций:

  1. Не храните расширение отдельно, если вы не планируете запрашивая для конкретных расширений. Просто добавляет больше сложностей без реальной выгоды.

  2. Я бы сохранил код размера изображения в качестве идентификатора в таблице изображений. Таким образом вы можете обновлять/редактировать коды изображений без необходимости запуска инструкции обновления на всей вашей таблице.

    создать таблицу изображения ( id INT (11) без знака не нулевой auto_increment, path VARCHAR (255) NOT NULL, size_code_id SMALLINT (3) не равно нулю, PRIMARY KEY (id) ) Двигатель = MyISAM По умолчанию Charset = utf8;

Пример строка:

1 | user9876/imagename_og.jpg | 1 
2 | user9876/imagename_me.jpg | 2 
3 | user9876/imagename_sm.jpg | 3 

Эта конструкция позволит вам запросить для «малого» изображения без разбора файла, но вы можете сделать различие небольшого изображения из среды и исходные изображения в файловой системе.

1

Я думаю, что ответ на ваш вопрос можно найти, задав себе другой вопрос: что произойдет, если позже выберете не три, а четыре разных размера изображения? Очевидно, что решение, которое не требует, чтобы вы реорганизовали всю вашу базу данных, лучше.

Смежные вопросы