如何在mysql中处理锁定的帐户

时间:2018-05-15 17:28:19

标签: java mysql spring-boot mysql-workbench

我正在为教堂里的执事开发一个网络应用程序。虽然我有多种语言编码经验,但在决定解决组织需求之前,我还不得不进行任何严肃的数据库建模。

我非常熟悉在现有数据库中编写sql / ddl查询(严格来说是mysql控制台,Spring MVC,Boot,Java等)。但是,不是因为大学以来我不得不考虑规范化,2nf,3nf,1:1,1:多等等......至少可以说,这是一种令人羞愧的经历,试图用数学理论在几年前学会并尝试应用这些概念。

我创建了一个模型,至少在我看来,以满足用户的需求

我的具体问题是关于锁定的帐户。我确实阅读了几篇关于它的帖子,这让我更加困惑的是如何用我给定的数据模型来处理这个概念?我真的很感激任何其他建议和/或批评;我完全理解失败学习的概念和力量....谢谢。

使用案例

currentTime.DayOfWeek.ToString().Equals(_list)

我在模型中有一个锁定的表,但不确定这是否是处理用户状态从活动状态更新为非活动状态的正确方法。如果不活动,则无法登录Web应用程序。如果用户尝试登录的次数超过x次,我也会使用此功能。此外,将数据库中的先前用户保留x年,当然处于非活动状态会很有帮助(报告和统计数据)。

1 个答案:

答案 0 :(得分:1)

很抱歉没有使用图表(我不使用图表工具)。这是非常基本的样本,包含审计表的相关位:

CREATE TABLE users (
  user_id SERIAL,
  -- ...
);
-- ...
CREATE TABLE user_updates_audit (
  audit_id SERIAL,
  user_id INT NOT NULL,
  audit_timestamp TIMESTAMP NOT NULL default now(),
  -- just free form text describing applied update (maybe old value, new value, etc)
  audit_text VARCHAR(1024) NOT NULL
);

ALTER TABLE user_updates_audit ADD CONSTRAINT user_updates_audit_pk PRIMARY KEY (audit_id);
ALTER TABLE user_updates_audit ADD CONSTRAINT user_updates_audit_user_id_fk FOREIGN KEY (user_id) REFERENCES users;

当然,您可以从此处扩展,例如,将自由格式audit_text更改为更严格的方案,例如可能更新操作(ENABLEDDISABLED,等等)的字典的外键和正在更改的实际值。或者其他更精细的方案更适合您的情况。

但自由形式审计是一个起点。

此处的主要价值是,您可以查看系统中重要实体的所有修改历史记录,而不仅仅是当前状态。