Переместить данные таблицы в другое поле таблицы - PullRequest
0 голосов
/ 01 июля 2010

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

Ответы [ 3 ]

1 голос
/ 01 июля 2010

Не делай этого. То, что вы пытаетесь, не редкость, но почти всегда опрометчиво. Создайте другую таблицу для хранения голосов за фотографию для каждого пользователя. Вы работаете с (ложным) предположением, что сокращение количества объединений и хранение этих данных в поле большого двоичного объекта приведет к повышению производительности по сравнению с хранением голосов в таблице, и это очень (очень) маловероятно.

Некоторые мысли:

  1. При этом вам необходимо будет вернуть каждый голос за данную фотографию, если вы хотите проверить любой голосов.
  2. Это рецепт коррупции. Хранение идентификаторов пользователя в этом поле лишает возможности поддерживать внешний ключ при голосовании. Другими словами, если запись пользователя была изменена или удалена, обновлять записи голосования невозможно.
0 голосов
/ 01 июля 2010

Поле BLOB-объектов с разделителем является одним из самых худших способов хранения данных. Сохраните его правильно в дочерней таблице с внешним ключом и индексом по внешнему ключу.

0 голосов
/ 01 июля 2010

Я думаю, что вы можете столкнуться с проблемой масштабируемости.Если этот сайт для фото-голосования станет достаточно популярным, эти блобы станут достаточно большими и будут оказывать более значительную нагрузку на ваш язык обработки на стороне сервера (php, asp и т. Д.).

Мое общее правило- базы данных разрабатываются программистами, намного лучше меня, когда я выполняю одну вещь и выполняю одну вещь, хорошо обрабатывая данные.Ваша обработка данных, скорее всего, будет не такой эффективной, как база данных.Другими словами - используйте объединение, а не постобработку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...