Я учу себя django и хотел, чтобы пользователи имели несколько наборов персонажей, каждый со своим оборудованием / инвентарем. Я никогда не работал с базами данных, поэтому для правильного установления отношений мне нужна помощь / руководство.
Мое мышление:
User
может иметь несколько UserCharacters
, каждый из которых имеет ссылку на базовый экземпляр Character
, а также некоторые BaseAttributes
и AttributeModifiers
. Каждый UserCharacter
также имеет инвентарь из InventoryItems
, который, как и UserCharacters
, ссылается на экземпляр Item
и имеет BaseAttributes
и AttributeModifiers
.
Мне было интересно, было ли разумно / возможно ли повторно использовать идентичные InventoryItems
(и BaseAttributes
, AttributeModifiers
и т. Д.) Через UserCharacters
. То есть если два UserCharacters
каждого имеют инвентарь, содержащий "Меч" Item
с одинаковыми характеристиками, могу ли я назначить этот Меч InventoryItem
обоим UserCharacters
инвентарям, а затем просто создать новый экземпляр, если один из них изменится?
Модели, которые у меня есть сейчас (пожалуйста, прокрутите, так как часть этого становится скрытой)
========================================
| User
|---
| username
========================================
========================================
| AttributedObject
|---
| attributes
| modifiers
========================================
========================================
| Attribute
|---
| name
| description
========================================
========================================
| BaseAttribute
|---
| object >- ForeignKey(AttributedObject.id), related_name='attributes'
| attribute >- ForeignKey(Attribute.id)
| value
========================================
========================================
| AttributeModifier
|---
| object >- ForeignKey(AttributedObject.id), related_name='modifiers'
| attribute >- ForeignKey(Attribute.id)
| value
| method
| duration
========================================
========================================
| Item(AttributedObject)
|---
| name
| stack_size
========================================
========================================
| Character(AttributedObject)
|---
| name
| description
========================================
========================================
| UserCharacter(AttributedObject)
|---
| user >- ForeignKey(User.id), related_name='characters'
| character >- ForeignKey(Character.id)
| inventory
========================================
========================================
| InventoryItem(AttributedObject)
|---
| user_character >- ForeignKey(UserCharacter), related_name='inventory'
| item >- ForeignKey(Item)
| amount
========================================
Сейчас не так много кода, так как я не хочу разбираться с проблемами, настраивая это, просто чтобы изменить его после определения правильного маршрута, но я постараюсь предоставить что-нибудь необходимое для более полезного ответа.
Кроме того, любые рекомендации по существующей структуре, которые я изложил, будут высоко оценены.
Спасибо.