@Urukhayy

Как оптимальней будет хранить такие данные в таблице?

Пример:

В ходе использования приложения пользователь собирает фрукты. Всего 18 видов фруктов. За всю историю использования приложения он может и не собрать какие-то виды фруктов, а может и вообще не собрать ни одного фрукта.
Когда пользователь захочет продать какой-либо вид фруктов, фруктов данного вида должно быть не менее определённого числа, скажем - 100.

Как лучше хранить к такой задаче данные в таблице?
1) В виде 19 столбцов (1 для ID пользователя и 18 для видов фруктов), причем если пользователь соберёт лишь один фрукт одного вида, остальные столбцы будут нулями, и попусту существовать (а может он передумает собирать фрукты вообще?).
2) В виде 2 столбцов (1 для ID пользователя и 1 для ID вида фрукта), и множества строк. Каждая строка будет означать наличие фрукта определённого вида.
  • Вопрос задан
  • 349 просмотров
Решения вопроса 1
27cm
@27cm
TODO: Написать статус
Таблица с тремя столбцами: ID пользователя, ID вида фрукта, количество.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега MySQL
2) В виде 2 столбцов (1 для ID пользователя и 1 для ID вида фрукта), и множества строк. Каждая строка будет означать наличие фрукта определённого вида.
Этот вариант гибче.
Первый вариант позволит очень эффективно разом выбирать данные обо всех фруктах пользователя, но при добавлении нового типа фруктов нужно будет править таблицу. А разницы в скорости работы этих вариантов вы, скорее всего, не заметите.
Поэтому, второй вариант предпочтительнее.

P.S. Оказывается, я невнимательно прочитал второй вариант. Конечно, его нужно заменить на то, что предлагает 27cm.
Ответ написан
Комментировать
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Я за первый вариант. Будет наиболее производительно, хоть и не правильно если читать умные книжки.
остальные столбцы будут нулями, и попусту существовать (а может он передумает собирать фрукты вообще?).

И пусть. 18 интов много места не займут.
Добавить новый столбец в будущем не такая уж и проблема, если новые фрукты лепить, зато сама логика работы с базой сильно упроститься.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы