我正在制作一个 MySQL 数据库,并且相当有信心知道如何对其进行规范化。但是,有一个问题我不知道如何处理。
说我有一张桌子
users
----------
user_id primary key
some_field
some_field2
start_date
user_level
现在, user_level 给出了用户的级别,可以是 1,2,3,4,5 说。但随着时间的推移,用户可能会改变级别。显然,如果他们更改级别,我可以简单地对用户表进行更新。但我想保留用户过去水平的历史记录
出于这个原因,我正在考虑一个名为 user_level_history 的新表
user_level_history
--------------
id autoincrement primary key
user_id
level_start_date
然后修改用户表:
users
----------
user_id primary key
some_field
some_field2
start_date
user_level_history_id
然后为了获取用户的当前级别,我检查了
user_level_history_id = user_level_history.id
为了获取用户的历史记录,我可以从 user_level_history 中选择所有具有 user_id 的行并按时间顺序排列。
这是执行此操作的标准方法吗?我无法想象我是第一个遇到这个问题的人。
还有一点:我想象不到 5000 个用户。拥有更多的用户是否需要不同的解决方案?
提前致谢。