请教一个表结构设计的问题

2020-06-09 15:45:09 +08:00
 vindac

现在有个业务数据表 A,大概有一百多个字段,页面表单也呈现的是这一百多个字段。 要求:每次用户修改了其中的字段,都要发送提醒给管理员。管理员要知道修改了哪些字段。

这种是不是要多加一百多个字段标识是否修改过?

数据库:mysql

1420 次点击
所在节点    数据库
14 条回复
LYEHIZRF
2020-06-09 15:47:04 +08:00
这不是加一张操作表的事儿吗
LYEHIZRF
2020-06-09 15:48:13 +08:00
| actions | CREATE TABLE `actions` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`action_module` varchar(32) NOT NULL COMMENT '操作模块',
`action_type` varchar(32) NOT NULL COMMENT '操作类型',
`operations` json NOT NULL COMMENT '操作内容 json',
`username` varchar(32) NOT NULL COMMENT '用户名',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间戳',
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `ix_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='操作记录表' |
p1094358629
2020-06-09 15:53:21 +08:00
在修改的接口里,直接调三方接口推送 /短信啥的不就行了,干嘛要动表
vindac
2020-06-09 16:45:01 +08:00
@LYEHIZRF 感谢回复,我描述的有问题,这个操作记录应该实现不了想要的功能
vindac
2020-06-09 16:45:53 +08:00
@p1094358629 这里的管理员是一个概念,可以理解成用户的上级领导。不涉及到第三方以及短信。
tanranran
2020-06-09 16:49:11 +08:00
xiaoyang7545
2020-06-09 16:57:02 +08:00
你说的是修改表结构的,还是修改表内数据啊。如果是表内数据的 2 楼想法应该是可以用的。
vindac
2020-06-09 17:01:38 +08:00
@xiaoyang7545 表内数据。
比如 age 原来是 18,用户改成了 19,那就要通知管理员。管理员打开的页面这个字段是要标红的。
2 楼的能实现提醒修改前为 18,修改后为 19 。可我是表单页面,管理员和用户看到的应该一样的。只是管理员需要知道改后的字段。
mhycy
2020-06-09 17:07:06 +08:00
@vindac 管理员账户联查后边的修改数据添加标记,或异步查询后标记
ccpp132
2020-06-09 17:07:15 +08:00
你这是想要一个 change history 表吧,google 应该一下有现成方案的
coolair
2020-06-09 17:09:03 +08:00
我先在也有这种需求,也是表单,不过我不是用的字段,我是在主业务表里存了一个表单内容的 json 。
每次用户变更内容的时候,把变更内容的 json 存到该用户的操作步骤里,并更新主业务表的内容。
这样,每一步都知道哪个用户变更了哪些内容,而且主业务表里的内容也是最新的。
dog82
2020-06-09 17:11:45 +08:00
spring 写一个 post 的切面,然后调用发通知的接口
标红是前端的事情,跟通知互不干涉
spicecch
2020-06-09 20:32:03 +08:00
感觉你说的问题 2 楼的方法完全能解决
vindac
2020-06-12 12:20:33 +08:00
@LYEHIZRF 仔细想了一下,我脑子太笨啦。这个方法是可以的。感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/680035

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX