用户退出群后 是用一个状态标记好 还是直接删除用户记录好 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
broli7753
V2EX    MySQL

用户退出群后 是用一个状态标记好 还是直接删除用户记录好

  •  
  •   broli7753 Aug 13, 2024 4331 views
    This topic created in 624 days ago, the information mentioned may be changed or developed.

    三张表 用来实现群组功能

    CREATE TABLE `group` ( `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '群 ID', `type` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '群类型[1:普通群;2:企业群;]', `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '群名称', PRIMARY KEY (`id`), ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='群'; CREATE TABLE `group_apply` ( `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自增 ID', `group_id` int unsigned NOT NULL DEFAULT '0' COMMENT '群组 ID', `user_id` int unsigned NOT NULL DEFAULT '0' COMMENT '用户 ID', `status` int NOT NULL DEFAULT '1' COMMENT '申请状态', `updated_at` datetime NOT NULL COMMENT '更新时间', PRIMARY KEY (`id`), ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='申请加群表'; CREATE TABLE `group_member` ( `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自增 ID', `group_id` int unsigned NOT NULL DEFAULT '0' COMMENT '群组 ID', `user_id` int unsigned NOT NULL DEFAULT '0' COMMENT '用户 ID', `leader` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '成员属性[0:普通成员;1:管理员;2:群主;]', ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='群成员表'; 

    疑问

    • 用户退出群后 是用一个状态标记好 还是直接 删除 group_member 表的 用户记录好
    19 replies    2024-08-14 18:41:25 +08:00
    amrom
        1
    amrom  
       Aug 13, 2024
    肯定是给一个标记好,考虑到后续的业务,比如,新用户首单优惠这种的,有了标记就可以避免被重复注册薅羊毛
    corcre
        2
    corcre  
       Aug 13, 2024
    我应该会另开一个表记录退群操作, 然后删除记录
    Twnysta
        3
    Twnysta  
       Aug 13, 2024
    可以加一个 history 表
    历史用户记录都在里面
    mudi
        4
    mudi  
       Aug 13, 2024
    标记吧,防止需要恢复,真删就真没了
    broli7753
        5
    broli7753  
    OP
       Aug 13, 2024
    标记的弊端就是,一堆脏数据。
    fFeeOps
        6
    fFeeOps  
       Aug 13, 2024
    @broli7753 #5 开个单独的表来记录
    ciki
        7
    ciki  
       Aug 13, 2024
    单独做个日志表
    freemoon
        8
    freemoon  
       Aug 13, 2024
    JC:把群的史成全都我出,包括退群的,看一下 xx 的言
    WX:好的。
    broli7753
        9
    broli7753  
    OP
       Aug 13, 2024
    @fFeeOps
    @ciki
    @Twnysta

    各位佬 也是支持 二楼做法么。 先删除 保持群内成员的准确性, 然后再记录下来 方便后期查看
    broli7753
        10
    broli7753  
    OP
       Aug 13, 2024
    @lasuar 这个需求 其实标记更加合适。 只要加入过这个群的。 基本跑不了。
    kneo
        11
    kneo  
       Aug 13, 2024 via Android
    随便。看你现有架构怎么修改方便。
    加标记需要你保证每次查询都设置正确的条件,容易出 bug ,也有一定程度性能影响。
    v1
        12
    v1  
       Aug 13, 2024
    考虑合规的话就不能避免脏数据,另外开表记录后期也是脏,不如提前规划好条件字段标记匹配,营销活动另外做关联表,间隔一段时间清洗数据、分表操作,旧数据打包封入冷存储备份
    buchikoma
        13
    buchikoma  
       Aug 13, 2024
    @broli7753 #5 定期归档就行,这块成本很低
    ETiV
        14
    ETiV  
       Aug 13, 2024 via iPhone
    删了之后,群里这个用户的聊天记录咋显示,不显示昵称、头像什么的了吗?
    drymonfidelia
        15
    drymonfidelia  
       Aug 13, 2024
    单独一个数据库,存档全部操作记录(加群退群改名什么的全要存),线上表直接删除啊
    你们都没做过大一点的项目吗
    现在查数据 每个用户在哪个时间改成了哪个昵称都要求你能查出来
    swulling
        16
    swulling  
       Aug 13, 2024 via iPhone
    用历史替代标记
    whileFalse
        17
    whileFalse  
       Aug 13, 2024 via Android
    @ETiV 难道你会给群用户一个单独的群内 id ?如果还用 uid 有啥关系。
    GBdG6clg2Jy17ua5
        18
    GBdG6clg2Jy17ua5  
       Aug 14, 2024
    看自己的需求咯,如果是内部系统,不涉及审计,直接删除。
    如果外部用户的,还是做标志吧。日志表挺麻烦的。
    broli7753
        19
    broli7753  
    OP
       Aug 14, 2024
    分析了下自己的业务场景,决定用一个状态标记处理。 简单直接, 因为用户量不算大,查询性能也影响不了多少。
    About     Help     Advertise     Blog     API     FAQ     Solana     983 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 57ms UTC 21:53 PVG 05:53 LAX 14:53 JFK 17:53
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86