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,如果我需要让所有用户都喜欢某个年龄,我将计算用户生日和 like_at 之间的年份差。

其他建议非常受欢迎。

4

1 回答 1

0

这主要取决于列的使用目的。如果您从不需要根据类似事件发生的时间进行任何时间计算(加法、减法等),那么此人的年龄是完全有效的(基本上您正在预先评估birthDate-likeDate)。但是,如果您打算说某人在 10 天前喜欢某款游戏,那么将预先评估的用户年龄反转回 likeDate 以允许再次计算将需要更多的工作。请记住,您很可能希望保持数据库数据可扩展,我认为使用likeAt是首选。

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

于 2012-04-20T23:48:57.567 回答