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)