Database design 当所需数据依赖于“时,规范化架构”;状态字段“;?

Database design 当所需数据依赖于“时,规范化架构”;状态字段“;?,database-design,Database Design,我有一个User数据库表,其中包含以下字段 Id Username Password Status_id 状态表只包含一个Id和title字段,其值为Pending、On Hold、Active和Completed 当状态更改为Pending时,我想在一个单独的表中记录将用户更改为该状态的管理员的id、date\u changed(datetime)以及他们被挂起的原因(text) 当暂停时,我想知道原因(文本)原因、暂停的日期/时间以及暂停的时间 对于完成的我想知道他们得到的最终成绩(int

我有一个
User
数据库表,其中包含以下字段

Id
Username
Password
Status_id
状态表只包含一个
Id
title
字段,其值为
Pending
On Hold
Active
Completed

当状态更改为
Pending
时,我想在一个单独的表中记录将用户更改为该状态的管理员的id、
date\u changed(datetime)
以及他们被挂起的
原因(text)

暂停时
,我想知道
原因(文本)
原因、暂停的日期/时间以及暂停的时间

对于
完成的
我想知道他们得到的
最终成绩(int)
,任何
评论(文本)
和附加文件的文件名

由于状态类型很多,这让我很头疼,我想知道什么样的数据库设计最适合这种情况

如果有人想知道,我将使用PHP表单更改状态值,然后根据所选值输入适当的值


谢谢

您不是为每种状态类型创建一个新表,并在每次状态更改时放入一条记录吗?这样,每个状态都有自己的字段


一些连接应该允许您查找所需的任何信息

您可以将日志表用作:

tbl_logs | id | moderator | user | from_status | to_status | timestamp | reason
  • 主持人和用户是用户表的外键
  • 从\u状态到\u状态是状态表的外键
  • 原因是文本
注:

  • from_status
    是冗余的,您可以通过按时间戳对日志进行排序,从先前的
    到_status
    获取其值
  • 我不确定期末成绩。若它只用于物流目的,你们可以把它放在日志中,若它是用户固有的,你们可以把它放在用户表中
最后,我用它解决了我的问题