V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vindac
V2EX  ›  数据库

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

  •  
  •   vindac · 2020-06-09 15:45:09 +08:00 · 1498 次点击
    这是一个创建于 1613 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    数据库:mysql

    第 1 条附言  ·  2020-06-09 16:43:30 +08:00
    不好意思,描述有点问题。
    管理员收到的通知可以理解成一个链接,点开的页面展示的是那一百多个字段,同时修改过的字段要标红。
    14 条回复    2020-06-12 12:20:33 +08:00
    LYEHIZRF
        1
    LYEHIZRF  
       2020-06-09 15:47:04 +08:00
    这不是加一张操作表的事儿吗
    LYEHIZRF
        2
    LYEHIZRF  
       2020-06-09 15:48:13 +08:00   ❤️ 1
    | 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
        3
    p1094358629  
       2020-06-09 15:53:21 +08:00
    在修改的接口里,直接调三方接口推送 /短信啥的不就行了,干嘛要动表
    vindac
        4
    vindac  
    OP
       2020-06-09 16:45:01 +08:00
    @LYEHIZRF 感谢回复,我描述的有问题,这个操作记录应该实现不了想要的功能
    vindac
        5
    vindac  
    OP
       2020-06-09 16:45:53 +08:00
    @p1094358629 这里的管理员是一个概念,可以理解成用户的上级领导。不涉及到第三方以及短信。
    tanranran
        6
    tanranran  
       2020-06-09 16:49:11 +08:00
    xiaoyang7545
        7
    xiaoyang7545  
       2020-06-09 16:57:02 +08:00
    你说的是修改表结构的,还是修改表内数据啊。如果是表内数据的 2 楼想法应该是可以用的。
    vindac
        8
    vindac  
    OP
       2020-06-09 17:01:38 +08:00
    @xiaoyang7545 表内数据。
    比如 age 原来是 18,用户改成了 19,那就要通知管理员。管理员打开的页面这个字段是要标红的。
    2 楼的能实现提醒修改前为 18,修改后为 19 。可我是表单页面,管理员和用户看到的应该一样的。只是管理员需要知道改后的字段。
    mhycy
        9
    mhycy  
       2020-06-09 17:07:06 +08:00
    @vindac 管理员账户联查后边的修改数据添加标记,或异步查询后标记
    ccpp132
        10
    ccpp132  
       2020-06-09 17:07:15 +08:00 via Android
    你这是想要一个 change history 表吧,google 应该一下有现成方案的
    coolair
        11
    coolair  
       2020-06-09 17:09:03 +08:00
    我先在也有这种需求,也是表单,不过我不是用的字段,我是在主业务表里存了一个表单内容的 json 。
    每次用户变更内容的时候,把变更内容的 json 存到该用户的操作步骤里,并更新主业务表的内容。
    这样,每一步都知道哪个用户变更了哪些内容,而且主业务表里的内容也是最新的。
    dog82
        12
    dog82  
       2020-06-09 17:11:45 +08:00
    spring 写一个 post 的切面,然后调用发通知的接口
    标红是前端的事情,跟通知互不干涉
    spicecch
        13
    spicecch  
       2020-06-09 20:32:03 +08:00 via iPhone
    感觉你说的问题 2 楼的方法完全能解决
    vindac
        14
    vindac  
    OP
       2020-06-12 12:20:33 +08:00 via Android
    @LYEHIZRF 仔细想了一下,我脑子太笨啦。这个方法是可以的。感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2664 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:44 · PVG 09:44 · LAX 17:44 · JFK 20:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.