如何处理mysql中的锁定帐户

8i9zcol2  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(237)

我正在为我教会的执事们开发一个网络应用程序。虽然我有很多用几种语言编写代码的经验,但在决定解决组织的这种需求之前,我还必须进行任何认真的数据库建模。
我非常熟悉在现有数据库上编写sql/ddl查询(严格来说是mysql控制台、springmvc、boot、java等)。但是,从大学开始我就没有考虑过标准化,2nf,3nf,1:1,1:many等等。。。至少可以说,这是一次卑微的经历,用多年前学过的数据库理论来刷新我的记忆,并尝试应用这些概念。
我创建了一个模型,至少对我来说,似乎是为了满足用户的需求
我的具体问题是关于锁定帐户。我确实读了几篇关于它的文章,这让我更加困惑于如何用我给定的数据模型来处理这个概念?我真的很感激任何其他的建议和/或批评;我完全理解通过失败学习的概念和力量。。。。谢谢。
用例:

1. Users holding office in a particular year can sign into the web 
   application, and view their information *(Name, Account Status, 
   Ordained, Team number, Calendar of their assigned duty days)*. 
   They can only update their personal info (name, address, 
   phone). Note: The account will be created for users.

2. Director, Asst. Director and System admin can log into the web 
   application (admin dashboard) and see a data table of all users, 
   w/ all relevant fields(view). This group has full read-write 
   privileges.

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

50pmv0ei

50pmv0ei1#

抱歉没有使用图表(我不使用图表工具)。下面是一个非常基本的示例,其中包含审计表的相关位:

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 到一些更严格的方案,例如,可能的更新操作字典的外键( ENABLED , DISABLED ,无论什么)和实际值正在更改。或者其他更复杂的方案更适合你的情况。
但自由形式审计是一个起点。
这里的主要价值在于,您可以看到系统中重要实体的所有修改历史,而不仅仅是当前状态。

相关问题