База данных «многие ко многим», которую выбирают многие пользователи. - PullRequest
0 голосов
/ 23 сентября 2018

В настоящее время мы работаем над игрой с базой данных, в которой у игрока могут быть определенные предметы, которые хранятся в базе данных.Я всегда учился в школе и на местах, чтобы использовать вариант 1, но мой коллега говорит вариант 2.

Мы должны выбрать один вариант, и сейчас мы задаем вопрос: какой из двух вариантов является лучшим иСамый быстрый?

А также, какой из них самый лучший и самый быстрый с 50K пользователями?

Table info

1 Ответ

0 голосов
/ 23 сентября 2018

Вариант 1. Вы правы.

Если вы используете вариант 2, вы пожалеете.Это денормализовано .Обновление этих разделенных запятыми списков значений itemID невероятно сложно.Вам придется использовать транзакции, чтобы прочитать строку значения, изменить ее и записать обратно.

Кроме того, вариант 1 может использовать индексы базы данных для гораздо более эффективного поиска.Спросите своего друга, как вы найдете всех пользователей с itemId = 15. Попросите его написать этот запрос для вас.С опцией 1 вы можете использовать

  SELECT UserId
    FROM tbl
   WHERE ItemId = 15 

. Вы можете использовать запрос для генерации опции 2 для отображения.Дисплей - это все, для чего он хорош.

     SELECT UserId, GROUP_CONCAT(DISTINCT ItemId ORDER BY ItemID) ItemId
       FROM linktable
      GROUP BY UserId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...