Database 成功和失败的列名

Database 成功和失败的列名,database,naming,Database,Naming,我有一个表请求跟踪,它保存了各种与安全相关的请求 每次登录失败和成功都必须保存,并在request_track表中标记相应的条目。现在我很难为《2》找到一个好名字,我想知道你们在我这里会做什么 我考虑了以下选择: 选择1 创建两列:is\u login\u success和is\u login\u failure默认为0。 专业人士 这很清楚 方便以后检索数据时使用。为了比较失败和成功,我可以简单地使用sumis\u login\u success和sumis\u login\u failure

我有一个表请求跟踪,它保存了各种与安全相关的请求

每次登录失败和成功都必须保存,并在request_track表中标记相应的条目。现在我很难为《2》找到一个好名字,我想知道你们在我这里会做什么

我考虑了以下选择:

选择1 创建两列:is\u login\u success和is\u login\u failure默认为0。 专业人士

这很清楚 方便以后检索数据时使用。为了比较失败和成功,我可以简单地使用sumis\u login\u success和sumis\u login\u failure 缺点

在逻辑中,两个选项中只有一个设置为1,或者两个选项都设置为0。但从技术上讲,将两者都设置为1是可能的,这将导致代码中出现不可预测的问题。 2列,只有一列可用于具有类似效果 选择2 类似这样的东西是\u login\u success TINYINT default null。 1表示它是一个成功的登录请求,0表示请求不成功,null表示两者都不是。 专业人士

只需要一列 缺点

根本不清楚0是否明确表示它是一个失败。 要检索数据以比较所有成功和失败,需要两个查询 选择3 我可以使is_登录枚举“成功”、“失败”默认为空 专业人士

非常清楚 只有一列 缺点

要检索数据以比较所有成功和失败,需要两个查询,或者是否有方法将失败和成功相加并使用enum?返回两者?。
我最喜欢的显然是3,但我不想使用两个SELECT查询。我敢肯定,虽然只有一种可能。我本应该在课堂上多加注意。

我最终找到了解决选项3缺点的方法。 is_登录列:

`登录名为'ENUM'success','failure'为空默认为空 用于检索成功和失败金额的查询:

选择 SUMcase当rt.is_登录类似“success”时,则1其他0结束登录\u成功, SUMcase当rt.is_登录类似“失败”时,则1 else 0结束登录_失败 从请求跟踪rt;
您不需要两个查询来获取这些情况下的成功/失败次数

选择1

对每列使用一次SUM函数

CREATE TABLE request_track (
  request_id INT NOT NULL AUTO_INCREMENT,
  is_login_success TINYINT NOT NULL,
  is_login_failure TINYINT NOT NULL,
  PRIMARY KEY ( request_id )
);
成功数 数字故障 13 2.
关于选项2-如果您在某些情况下需要不同的故障代码,那么使用0表示成功,使用其他任何表示失败的方法可能会更好。谢谢您的回答!案例就是我最终实现的内容。>每种类型都需要一个新的is_uu列吗?你的桌子有可能很快变宽这是一个非常好的观点。目前,我只区分请求是发送电子邮件还是登录请求,我不打算包括更多内容,因为此表仅用于安全,而不是审计。但如果我要包括更多类型,我绝对会制作外部表。
SELECT SUM( is_login_success ) AS num_success,
  SUM( is_login_failure ) AS num_failure
FROM request_track;