基于 Mysql,如何实现回收站功能呢?求赐教

2020-12-30 14:05:38 +08:00
 SjwNo1

需求

设计一个 web 端的回收站,用户可以删除文件 /文件夹放入回收站,回收站内可销毁 /复原 文件 /文件夹

当前的设计

文件,文件夹,回收站都有单独的表,路径 path 都有记录

遇到的问题

文件 /文件夹复原的时候复杂度特别高,需要检验原始路径-->再生缺失的文件夹-->合并 等等步骤,总的来说已经理不清思路了。。。

有实现过类似功能的 v2er 吗,给点建议什么的,感激不尽

3476 次点击
所在节点    MySQL
23 条回复
974879409
2020-12-30 14:17:51 +08:00
”文件,文件夹“ 加个是否已删除的状态,假性删除如何
liyanggyang
2020-12-30 14:19:27 +08:00
直接 写个脚本 删除功能使用 mv 移动到“回收站”(服务器目录:/xxx ) 回收站里面删除 使用 rm, 可?
liyanggyang
2020-12-30 14:21:47 +08:00
文件 /文件夹复原的时候复杂度特别高,需要检验原始路径-->再生缺失的文件夹-->合并 等等步骤,总的来说已经理不清思路了。。。
----
这个问题,我觉得产品设计换个角度吧,比如 如果原始路径存在,那么直接回复到原始,如果不存在,那么用户选择一个路径
Latin
2020-12-30 14:22:31 +08:00
加回收站表就是浪费,1 楼建议 ok 的 软删除状态即可
SjwNo1
2020-12-30 14:25:40 +08:00
@974879409 @Latin 当初也想这么嫩,考虑到父级文件夹会 被移动 /重命名 /删除 等情况才设计如此
SjwNo1
2020-12-30 14:27:59 +08:00
@liyanggyang 定下的需求是 如有重复会让用户选择是否保留两者或跳过
pixiaotiao
2020-12-30 14:29:59 +08:00
@SjwNo1 再怎么操作 ,父级 id 不会变吧
Lemeng
2020-12-30 14:33:31 +08:00
自己建一个,意思到了就行
SjwNo1
2020-12-30 14:37:53 +08:00
@pixiaotiao 父级 id 是不会变哈,但是父级被移动了我还原的时候不能跟着它走
jjianwen68
2020-12-30 14:46:07 +08:00
删除(到回收站)只是改个状态;清空回收站(或者直接选择彻底删除-不可恢复)才彻底删除文件。一般应该这样设计吧
liyanggyang
2020-12-30 14:52:48 +08:00
@SjwNo1 其实我觉得很简单,直接操作你的操作系统怎么做的,这个最符合人的使用习惯,如果不符合,那就产品经理自行背锅(给出完整逻辑,应该怎么办)
SjwNo1
2020-12-30 14:57:45 +08:00
@jjianwen68 是的,一般这样就感觉足够了,无奈产品无脑,看到什么想做成什么样。。
974879409
2020-12-30 14:57:50 +08:00
974879409
2020-12-30 14:58:55 +08:00
@974879409 @Latin 当初也想这么嫩,考虑到父级文件夹会 被移动 /重命名 /删除 等情况才设计如此
--------------------
文件(夹)之间的父子级别关系,和每个文件的"删除"状态没关系
jintianfengda
2020-12-30 15:05:29 +08:00
你父子级关系跟逻辑删除没关系啊,最多就是恢复的时候判断一下名称重复?是不是被产品经理给绕进去了:P
SjwNo1
2020-12-30 15:09:08 +08:00
@974879409 可能我表述的不准确,可是还原的时候很有可能会发生 状态还原但路径未还原,假设现有 /A/B/C,先删 B,再删 A,状态都为“已删除”,这时还原 B 应该需要很多操作哈 (不知道我想的对不对)
Latin
2020-12-30 15:15:06 +08:00
层级关系不是应该有对照表吗,按对照表次序来还原是不是没那么复杂了。。。
SjwNo1
2020-12-30 15:21:01 +08:00
@Latin 我打算一个个还原了,不做事件级的还原,谢谢老哥
preach
2020-12-30 18:26:30 +08:00
1. 数据库软删除
2. dot 也就 是 . 软删除
abigeater
2020-12-30 18:42:46 +08:00
我的理解
放入回收站 = 软删除(数据状态变更)
彻底删除 = 数据库记录删除
恢复过程拿出该条记录 做对应处理就好了吧 产品说要合并就合并 要改回路径就改回路径 按看你说法 恢复时如果目录不存在 就创建一个 那么记录里应该有删之前的目录快照(类似 没有就整一个)

如果要跟踪目录更改的话 原来的目录如果被改变了理应这条记录的路径也应该存储(但是快照保留旧的)

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

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

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

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

© 2021 V2EX