MySQL - несколько строк или JSON - PullRequest
0 голосов
/ 01 июля 2019

Я создаю приложение в Laravel, и у меня возник вопрос по поводу моей базы данных MySQL. В настоящее время у меня есть таблица, которая определяет навыки для всех персонажей по умолчанию в моей игре. Поскольку черты взяты из совокупности навыков и имеют переменное число, одна из моих таблиц выглядит примерно так:

+----+--------+---------+-----------+
| ID | CharID | SkillID | SkillScore|
+----+--------+---------+-----------+
|  1 |      1 |      15 |       200 |
|  2 |      1 |      16 |       205 |
|  3 |      1 |      12 |       193 |
|  4 |      2 |      15 |       180 |
+----+--------+---------+-----------+

Обратите внимание на переменное количество строк для любого заданного CharID. После ввода моих базовых символов у меня чуть более 300 строк.

Моя проблема заключается в хранении пользовательских копий своих (настроенных) персонажей. Я не думаю, что хранение более 300 строк на пользователя имеет смысл. Должен ли я хранить эти данные в BLOB-объекте JSON в другой таблице? Стоит ли искать решение NoSQL, такое как Mongo? Цени руководство.

Примечание: все приложение сосредоточено вокруг, используя различные навыки персонажа. В основном это отчеты от них, но пользователи также смогут обновлять свои SkillScore (вероятно, несколько раз в неделю).

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

ТИА.

1 Ответ

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

Ваш сводный стол выглядит хорошо для меня.

Я бы хотел удалить столбец ID (если он вам не нужен) и использовать составной первичный ключ:

PRIMARY_KEY(CharID, SkillID)

Первичные ключи проиндексированы, поэтому вы получите эффективный поиск.

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

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