我有一些表,它们是:
user
==============================
user_id | username | etc..
==============================
user_metadata
====================================
user_id | birthday | gender | etc..
====================================
game
========================
game_id | name | etc..
========================
我想存储喜欢游戏的用户,并且由于年龄属性很重要,我需要在做出类似的时候有所不同,如果有人在5岁时喜欢游戏,那么它应该是不同的实体或者是在8岁。你会推荐哪种表结构?
在喜欢的时候存储用户的年龄:
user_likes
==========================================
user_id | game_id | user_age_when_liking
==========================================
存储时间戳
user_likes
==========================================
user_id | game_id | liked_at (timestamp)
==========================================
因此,使用选项编号2,如果我需要让所有用户都喜欢某个年龄,我将计算用户birthdate和likes_at之间的年份差异。
其他建议非常受欢迎。
答案 0 :(得分:0)
它主要取决于使用列的目的。如果您根本不需要根据时间进行计算(加法,减法等),那么这个人的年龄就完全有效了(基本上你是在预先评估birthDate-likeDate)。但是,如果您有意在10天前说某人喜欢某个游戏,那么将预先评估的用户年龄转回到likeDate以允许另一个calucation将会有更多的工作。请记住,您最有可能希望保持数据库数据的可扩展性,我认为首选使用 likesAt 。
我还要注意,stackoverflow不是一个旨在回答没有特定代码答案的理论问题的网站,这个问题可能应该在programmers.stackexchange.com上。