I'd alter your suggestion a bit - if a game always two and only two teams, 
then assuming it is like baseball or soccer or football, you'd have two 
teams, a 'home' team and an 'away' team. So, there would be a 1-1 mapping, 
not a 1-many.

On Monday, October 1, 2012 1:46:38 AM UTC-7, Cliff Kachinske wrote:
>
> Do not let your tables proliferate this way.
>
> You need a teams table, even if it contains only the team name or some 
> other identifier.
>
> You need a games table.  
>
> You need to relate these two.  One game has multiple teams, I suppose, so 
> that makes a one-to-many relationship.
>
> If the same team can participate in more than one game, you need a many to 
> many relationship.
>
> The DAL chapter in the Web2py manual explains how to implement these.
>
> Next you add a game_id field to both your offers and decisions tables. 
>  That ties these events to the game.  Alternatively you could simply call 
> the field 'game', assuming you can remember that it contains the record id 
> of the game in question. 
>
> You also need to add a team_id field to these tables.  That ties each 
> record to the team involved.
>
> This data structure will allow you to select records for each game, for 
> each team in a game.  If the teams persist, you can also select all the 
> records related to the team.
>
> On Sunday, September 30, 2012 5:31:50 PM UTC-4, curiouslearn wrote:
>>
>> Hello,
>>
>> This is a question about recommended practice for doing the following:
>>
>> I want to create a web interface for creating a setup for new games. For 
>> example, the web interface will let me specify 
>> name of the game, number of teams etc. Based on this information I want 
>> to create new database tables for the game.
>> Should the table definitions be given in a controller function, such as 
>> in the example below? Is that the recommended way
>> to do this, or is there another way that you would recommend.
>>
>> Thank you.
>>
>> ***Controller function for creating tables***
>>
>> def createtables():
>>     if request.post_vars:
>>         experimentname = request.post_vars.experimentname
>>         numteams = int(float(request.post_vars.numteams))
>>         teams_tablename = "{0}_teams".format(experimentname)
>>         offers_tablename = "{0}_offers".format(experimentname)
>>         ardecisions_tablename = "{0}_ardecisions".format(experimentname)
>>         migrate_teamstablename = "{0}.table".format(teams_tablename)
>>         migrate_offerstablename = "{0}.table".format(offers_tablename)
>>         migrate_ardecisionstablename = "{0}.table".format(
>> ardecisions_tablename)
>>         db.define_table(teams_tablename, 
>>                 Field('teamname', 'string', length=40, required=True,
>>                       unique=True, notnull=True),
>>                 Field('passwd', 'password'),
>>                 Field('role', 'string', length=20, required=True,
>>                       default='NA'),
>>                 format = '%(teamname)s', migrate=migrate_teamstablename)
>>         # Table showing the ask amount of the first mover
>>         referencestring = 'reference {0}'.format(teams_tablename)
>>         db.define_table(offers_tablename,
>>                         Field('round', 'integer'),
>>                         Field('askamount', 'integer'),
>>                         Field('payoff', 'integer'),
>>                         Field('teamname_id', referencestring),
>>                         migrate = migrate_offerstablename)
>>
>>
>>         # Table accept-reject decisions
>>         db.define_table(ardecisions_tablename,
>>                         Field('round', 'integer'),
>>                         Field('acceptorreject', 'string', length=2),
>>                         Field('payoff', 'integer'),
>>                         Field('teamname_id', referencestring),
>>                         Field('offerer_id', referencestring),
>>                         migrate = migrate_ardecisionstablename)
>>
>>
>>         teamnames = maketeamnames(numteams)
>>         for tname in teamnames:
>>             db[teams_tablename].update_or_insert(teamname=tname)
>>         db.experimentlist.insert(experimentname=experimentname)
>>     return dict()
>>
>>
>>
>>

-- 



Reply via email to