gpt4 book ai didi

mysql - 时间相关字段的数据库设计

转载 作者:可可西里 更新时间:2023-11-01 07:59:01 24 4
gpt4 key购买 nike

我正在制作一个 MySQL 数据库,并且非常有信心我知道如何对其进行规范化。但是,有一个问题我不确定如何处理。

假设我有一张 table

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表:

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 个用户。拥有更多更多用户是否需要不同的解决方案?

提前致谢。

最佳答案

我认为可以这样设计:
有一个级别表信息,如值(1,2,3,4,5),描述......
有一个user_level_history的关联表包含user_id, level_id,level_start_date ...
有一个从 level 表到 user 表的外键,角色为 user-active-level

你需要开发一种机制,当用户级别发生变化时,插入到历史表中。 enter image description here

关于mysql - 时间相关字段的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19872361/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com