如何存储登录数据库?

Mis*_*hko 4 mysql sql database database-design

我的应用程序允许用户相互发送文件.普通用户可以编辑他们的联系人,更改密码等.此外,管理员用户可以添加/删除用户并查看发生的事情的日志.我的问题是如何将这个日志存储在MySQL数据库中?

我想像这样存储日志:

log_id   time   user_id   action_type                      description
------   ----   -------   ----------------   ----------------------------------------
   1     ....      4      User added         Added new user: alex
   2     ....      1      Contact added      Added contact Paul to group Family 
   3     ....      1      User removed       Removed user: gabrielle 
   4     ....      3      Files sent         Sent files 3,5,7,14 to contacts 2,4,8
   5     ....      8      Group added        Added new group: Family 
   6     ....      8      Password changed   
   7     ....      8      First Name changed Changed First Name from Michael to Misha       
Run Code Online (Sandbox Code Playgroud)

什么类型最适合action_type?由于action_type将来可能会添加新的,我认为这ENUM不是一个好的选择.所以我想要做到VARCHAR(..),就像description.

这看起来合情合理吗?

我很乐意听到任何意见/建议.

mea*_*gar 12

如果您担心添加其他操作类型,请创建一个单独的表来存储您的操作类型,并使用外键将其连接到您的日志表:

logs 表:

log_id   time   user_id   action_type_id     description
------   ----   -------   ----------------   -----------------------------------
   1     ....      4            1            Added new user: alex
   2     ....      1            2            Added contact Paul to group Family 
...
Run Code Online (Sandbox Code Playgroud)

action_types 表:

id    name
---   ---------------
1     User added
2     Contact added
.....
Run Code Online (Sandbox Code Playgroud)