incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Robert Sanford <wob...@gmail.com>
Subject Newbie Data Modeling
Date Tue, 09 Mar 2010 20:10:40 GMT
I've done this w/ an RDBMS and have it down pretty well. I'm taking what I already know and
trying to learn CouchDB by taking an existing problem and translating it to the new domain.
I'm looking for advice on "The CouchDB Way" of getting it done...

I'm creating a game for one of my kids similar to games like Pokemon or Magic - The Gathering.
You have a collection of items that each have different properties that result in a "score"
depending on what happens in the game environment.

Let's say I have a "Wind Rider" card that is in play and that card will normally attack at
50pts. But during game play an unexpected event happens and a "Great Wind" blows through doubling
the attack value of all Wind based cards so it becomes 100pts of attack. Really cool and so
far a straightforward calculation.

So now we add in that there are multiple tournaments that can be running in that any player
can participate in and each tournament can have a different a different scoring system (Great
Wind can be 2.0 in one tournament, 1.25 in another, 3.5 in yet another) as well as a different
likelihood (5% chance in one, 25% in another, etc.).

In my RDBMS model a Tournament has a Scoring System column and by JOINing to that in a SQL
VIEW I can can then run my calcs. If performance is an issue (projected to be an issue at
certain numbers then I will run the calcs offline and denormalize the data modifying the VIEW
to use that so that my application code does not have to know anything about how the calcs
actually happen.

So to recap...
+ A Tournament has some number of players who have a collection of playable items that have
base performance characteristics and then bonuses
+ A Tournament will pit players head-to-head in a game where the highest score wins based
on the items played and then random events that occur during play
+ A Tournament is associated with a Scoring System that determines the likelihood and multiplier
values of each random event

We can talk about different tournament styles and schedules (single elimination, double elimination,
qualifying into a field followed by single or double elimination) later... 

Comments, suggestions, hints are welcome.

Many thanks!

rjsjr
Mime
View raw message