2012-04-20 86 views
0

我有一些表格,它们分别是:商店计算出的数据或表预先计算的数据(计算用户的年龄或时间戳)

user 
============================== 
user_id | username | etc.. 
============================== 

user_metadata 
==================================== 
user_id | birthday | gender | etc.. 
==================================== 

game 
======================== 
game_id | name | etc.. 
======================== 

我要存储用户喜欢的游戏,因为年龄属性是很重要的,我需要区分什么时候做出类似的事情,如果某人在5岁或8岁时喜欢比赛,那么它应该是不同的实体。那么您推荐哪种表格结构?

  1. 店岁的用户的时候喜欢做:

    user_likes 
    ========================================== 
    user_id | game_id | user_age_when_liking 
    ========================================== 
    
  2. 商店时间戳

    user_likes 
    ========================================== 
    user_id | game_id | liked_at (timestamp) 
    ========================================== 
    

因此,与选项编号2,如果我需要让所有用户都喜欢某个年龄段,我会计算用户birthdate和likes_at之间的年差。

其他建议非常受欢迎。

回答

0

它主要取决于使用列的目的。如果你根本不需要花费时间计算(加法,减法等),那么这个人的年龄是完全有效的(基本上你是预先评估birthDate-likeDate)。但是,如果您有意在10天前说某人喜欢游戏,那么将预先评估的用户年龄恢复为类似日期以进行另一次调查将会有更多工作。请记住,您最可能希望保持您的数据库数据可扩展性,使用已在1,首选我的意见。

我还会注意到,stackoverflow不是一个旨在回答没有特定代码答案的理论问题的网站,这个问题应该可能在programmers.stackexchange.com上。

+0

目前我不知道我是否需要喜欢除了计算年龄以外的任何目的,这就是为什么我很困惑。猜猜我会去使用likedAt。关于这个问题,下次我会记住这一点。谢谢。 – ayublin 2012-04-21 08:53:33