冗余操作人信息
场景
意见处理功能,实际上是加载意见反馈的分页列表,然后补充关联的 意见处理信息、意见反馈人信息、意见处理人信息
问题
1. 意见反馈人注销导致报错或者显示为空
哪怕用户注销这里也理应能够查看记录的
是用了 MyBatis Plus,官方明确不支持对@TableLogic
标记的逻辑删除条件临时失效
于是不得不手写 SQL 语句,而且可以预见的,如果意见处理人也存在被删除的可能,那么也会出现同样的问题
2. 试图通过反馈人或者操作人信息条件筛选记录非常麻烦
比如:根据反馈人姓名条件查询对应的记录,整个链路会是这样
- 根据反馈人性命条件查询用户得到对应的用户 ID,如果查询结果为空直接返回不再向下执行
- 用 用户 ID 条件查询意见反馈
- 用意见反馈人 ID 反查并补充用户信息
- 用意见处理 ID 查询意见处理内容并补充
- 用意见处理人 ID 反差并补充管理员信息
结论
所以我认为不应该这么设计:意见表 + 处理表,一对一,并且不冗余任何操作人信息
如果在两张表中各自冗余了操作人信息,那么上面的两个问题都非常好实现,更低的复杂度也更不容易出错更容易维护
当然代价是操作人信息不实时更新,但是本身内容就是记录性质的,只要没有特殊要求产品不反对就行
本文作者:YaosGHC
本文链接:https://www.cnblogs.com/yaocy/p/18739581
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步