我有一个User
数据库表,其中包含以下字段,
Id
Username
Password
Status_id
状态表仅包含Id
和title
字段,其值为Pending
,On Hold
,Active
和Completed
当状态更改为Pending
时,我想在单独的表中记录将用户更改为此状态的管理员的ID,date_changed(datetime)
和reason(text)
等待。
当On Hold
时,我想知道reason(text)
为什么,他们暂停的日期/时间以及他们将暂停的时间。
对于Completed
我想知道他们得到的final_grade(int)
,附件的任何comments(text)
和文件名。
由于许多状态类型,这让我很头疼,我想知道哪种数据库设计最适合这种情况?
如果有人想知道我正在使用PHP表单来更改状态值,那么我会根据所选值输入适当的值。
由于
答案 0 :(得分:2)
您是否只为每种状态类型创建一个新表,并在每次状态更改时放入记录?这样,每个状态都有自己的字段。
某些联接应该允许您找到所需的任何信息。
答案 1 :(得分:0)
您可以将日志表用作:
tbl_logs | id | moderator | user | from_status | to_status | timestamp | reason
注意:
from_status
是多余的,您可以通过在时间戳上排序日志来从之前的to_status
获取其值。 final_grade
。如果它仅用于物流目的,你可以把它放在日志中,如果它是用户固有的,你可以将它保存在用户表中。答案 2 :(得分:0)
最后,我使用Doctrine Inheritance mapping解决了我的问题