Так что я работаю над расширением использования элементов на www.ninjawars.net , и я не совсем уверен, как гибко представить их в реляционной базе данных, которую мы используем.
Возможно, я лаю не на том дереве, поэтому не стесняйтесь делать предложения в других направлениях, но в настоящее время я думаю, что у каждого элемента должны быть реляционные "теги".
Например, Katana в настоящее время является строкой в базе данных "items". Чтобы превратить его в оружие, и что-то вроде этого, я думал, что у меня будет база данных «черт» и таблица item_traits, которая соединяет их.
// Objects and their basic data
item_id | item | material | etc
1 | Naginata | steel | etc
// Things that objects can do
trait_id | trait
1 | weapon
2 | holdable
// How those objects do those things, e.g. powerfully, weakly, while on fire
_item_id | _trait_id | item_trait_data
1 | 1 | damage: 5, damage_type: sharp, whatever, etc
Я не совсем уверен, как смоделировать дополнительные данные, которые в результате (например, урон, нанесенный мечом, тип_повреждения и т. Д.).
Я также не особенно рад, что весь предмет будет храниться в более чем одном месте, например чтобы создать копию предмета с другим именем, например, «короткий меч», мне нужно было бы скопировать несколько таблиц, чтобы создать дубликат предмета.
Есть ли лучший способ выложить вещи, которые мне не хватает?