Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在数据库中存储日志?_Sql_Mysql_Database_Database Design - Fatal编程技术网

Sql 如何在数据库中存储日志?

Sql 如何在数据库中存储日志?,sql,mysql,database,database-design,Sql,Mysql,Database,Database Design,我的应用程序允许用户互相发送文件。普通用户可以编辑他们的联系人、更改密码等。此外,管理员用户还可以添加/删除用户,并查看所发生事件的日志。我的问题是如何在MySQL数据库中存储此日志 我想这样存储日志: log_id time user_id action_type description ------ ---- ------- ---------------- --------------------------------

我的应用程序允许用户互相发送文件。普通用户可以编辑他们的联系人、更改密码等。此外,管理员用户还可以添加/删除用户,并查看所发生事件的日志。我的问题是如何在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       
对于
动作类型
,哪种类型最合适?由于将来可能会添加新的
action\u类型
s,我认为
ENUM
将不是一个好的选择。所以我想把它做成
VARCHAR(..)
,比如
description

这似乎合理吗


我很乐意听取任何意见/建议。

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

日志
表格:

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 
...
id    name
---   ---------------
1     User added
2     Contact added
.....
动作类型
表格:

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 
...
id    name
---   ---------------
1     User added
2     Contact added
.....

恼怒:调用主键
id
,而不是
log\u id
。您可以避免难看的重复:
logs.log\u id
@meagar-使用log\u id没有错,这是一种推荐的命名方案。它可以确保列名在进行连接时不会发生冲突,而不会键入一长串别名。@mellowsoon这就是为什么我说“pet peeve”,而不是“you't doing It right”。