Изо всех сил пытается выяснить структуру базы данных для нескольких отношений - PullRequest
0 голосов
/ 30 мая 2019

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

  • Кампания
    • Id
    • Имя
  • Character
    • Id
    • Имя
  • Пункт
    • Id
    • Имя

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

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

Пользователь может создать новую кампанию, которая создаст запись в таблице Campaign. Затем пользователь может выбрать персонажей для использования в кампании. Я могу создать это отношение с помощью таблицы ссылок campaign_character.

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

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

В настоящее время я думаю о том, чтобы создать таблицу ссылок campaign_character, таблицу ссылок campaign_item и таблицу ссылок campaign_character_campaign_item, но этот сценарий встречается много раз (не только с символами и элементами, например, символы могут затем добавлять вложения к элементам) и Я чувствую, что это приведет к множеству таблиц и сложных отношений.

Есть ли лучший способ справиться с этим или это правильный путь?

Спасибо за любые рекомендации

1 Ответ

0 голосов
/ 30 мая 2019

Вот предложение

Помимо 3 основных таблиц, создайте свои таблицы ссылок как

campaign_character
campaign_item

. В вашем campaign_item создайте столбец, допускающий значение NULL, с именем equipped_by и сохраните character_id.

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


Для вложений создайте ссылкуТаблица item_attachment содержит только связь между элементами и вложениями.

Поскольку соединение между character и item уже установлено в таблице campaign_item, связь между attachment и characterмогут быть получены из таблиц campaign_item и item_attachment.

Пожалуйста, дайте мне знать, если это поможет

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