2010-11-21 3 views
1

Итак, я работаю над расширением использования предметов по адресу 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 

Я не совсем уверен, как моделировать дополнительные данные, результаты (например, повреждение, что меч будет делать, то damage_type, и т.д.).

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

Есть ли лучший способ выложить этот материал, который мне не хватает?

ответ

0

Ну, различные виды оружия могут делиться общими умениями.
Например, «острые» оружие может включать в себя длинные мечи, короткие мечи, кинжалы и катаны; все они могут разделить аналогичный базовый урон, а также несколько дополнительных особых вещей, которые относятся к реальному оружию индивидуально.
Аналогичным образом, «тупые» оружие может включать в себя молотки, булавы и цепы.
Итак, я думаю, вам следует ввести понятие «типа оружия», поэтому вам не нужно копировать предметы для каждого типа оружия.