Каков наилучший способ сохранить серию изображений в MySQL? - PullRequest
2 голосов
/ 23 января 2011

Я работал над моделью SQL для своего веб-сайта, и у меня действительно возникли противоречия относительно того, как сохранить эти изображения в моей базе данных для использования на сайте.

Во-первых, каждый профиль будет содержать всего 10 изображений. 4 скриншота, с миниатюрами и двумя дополнительными изображениями. Эти изображения будут использоваться по всему сайту.

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

Мне просто интересно, какова обычная практика для чего-то такого, как это.

Опять же, я не храню фактическое изображение в базе данных - просто путь к изображению.

Ответы [ 2 ]

4 голосов
/ 23 января 2011

Хранить изображения в вашей файловой системе и сохранять пути в базе данных.

Если в профиле более 1 изображения, создайте отдельную таблицу для изображений.

Таблица профиля:

id | name | etc | etc
---------------------
1  | abc  | etc | etc
2  | xyz  | etc | etc

Таблица изображений:

id | profile_id |     image_url     | image_type
-------------------------------------------------
 1 |     1      | images/image1.jpg | screenshot
 2 |     1      | images/image2.jpg | other
 3 |     2      | images/image3.jpg | screenshot 

Теперь вы можете создавать различные функции для получения изображений для определенного профиля.Например:

getProfileImages( profile_id, image_type=NULL ) {
  // run query by joining profiles and images tables.
  // return images paths
}
0 голосов
/ 23 января 2011

Если вы сохраняете несколько изображений для одного профиля, вы должны создать таблицу изображений.Это будет вызывать объединение таблиц (как правило, с низкой производительностью) каждый раз, когда вы просматриваете изображения для профиля, но поддерживает базу данных нормализованной.

Вы можете создать другую кодировку, например, список через запятую, но выдля этого также потребуется обработка, но синтаксический анализ строки также обычно имеет низкую производительность и может привести к ошибкам.

Я советую сначала перейти к отдельной таблице, и если вы обнаружите, что она работает плохо, попробуйтеоптимизировать это.

...