Database relationships question.

Hello.

For fun, I'm making a text based web MMO.

I have the following tables to consider.

characters
quests
objectives

So right now my quests can have many objectives (ie: kill 10 wolves,
kill pack leader).

So that's easy enough.
But many characters can have the same quests. So I made

characters_quests

Ok that's fine. But since quests have multiple objectives that I need to
track how do I do this?

characters_quests_objectives ?

I don't know why but I can't wrap my head around this relationship
right now.

I think this is the relationship model?

character has_and_belongs_to_many quests
character has_many objectives, :through => quests

quest has_and_belongs_to_many characters
quest has_many objectives

TomRossi7 wrote:

I think this is the relationship model?

character has_and_belongs_to_many quests
character has_many objectives, :through => quests

quest has_and_belongs_to_many characters
quest has_many objectives

I think I have to make a separate table. tracked_objectives which
belongs to character through quests.

As multiple people can do the same quests and will be at different steps
at different times, they'll need the same objectives but at different
counts.

It sounds like you should avoid has_and_belongs_to_many since you are tracking attributes of the join relationship. Maybe something like this:

character has_many objective_assignments

character has_many objectives, :through => objective_assignments
character has_many quest_assignments

character has_many quests, :through => objective_assignments

Does that seem right?