在 web 开发中,以那种删除数据库中文章的方式最优雅

2018-05-22 09:36:04 +08:00
 Mrkon
最近在学习 web 开发,想删除用户文章,以那种方式为最优雅的处理方式啊
我的想法:
1.通过文章标题的 hash 值
2.标题和时间戳结合
3.标题和 ID 值结合

如果可以的话,请 V 友指出你们所用的方式,以及在哪里可以学到类似这种经验的书或文章。谢谢大家
5650 次点击
所在节点    Python
40 条回复
summerwar
2018-05-22 10:30:10 +08:00
文章是个表,里面有自增 ID 和用户 id,用户 ID 用来区分谁发的文章,自增 ID 在删除的时候用,别用标题查询删除,因为会重复,不是 unique,容易误删标题一样的文章,删除的时候用个 status 来表示,删除为 0,不删除为 1。获取文章列表的时候,添加个过滤规则 status ==1 就行了。
Patrick95
2018-05-22 10:31:06 +08:00
你说的三点我没怎么理解,一般来讲通过文章 ID 来进行删除就可以。
DELETE FROM table WHERE id = [:id];
或者软删除
UPDATE table SET deleted = 1 WHERE id = [:id];
balamiao
2018-05-22 10:32:29 +08:00
一般都不是立即删除,属于打标,在查询逻辑中剔除掉删除的即可。

可以配合后台定时任务,处理比如 30 天以前已经打标删除的文章!
zzzwwwlll
2018-05-22 10:35:55 +08:00
你这想的太复杂了,直接根据 id 删除就行
Mrkon
2018-05-22 10:38:16 +08:00
@Patrick95
@summerwar
@balamiao
@zzzwwwlll
谢谢,问题我已经明白了,直接通过 ID 软删除。
wemore
2018-05-22 10:54:03 +08:00
有个疑问哈,逻辑删除的话那对需要删除表的改查都要加个查询字段,会不会太麻烦了,有啥办法能解决这个问题。
iConnect
2018-05-22 10:55:23 +08:00
伪删除的做法,面向欧盟用户的话,是违反 GDPR 的。
ycz0926
2018-05-22 11:09:48 +08:00
加个 status,不要真的删了,一来破坏了表与表间的关联,二来嘛,数据还是挺重要的,这东西决定了现代互联网的拓扑和连接方式
ycz0926
2018-05-22 11:10:20 +08:00
@ycz0926 没数据,你还怎么玩,是不?
sobigfish
2018-05-22 11:23:39 +08:00
@jennifertxwoodma #1 @Patrick95 #22
软删除用时间戳 deleted_at (timestamp) 更合适而不是单纯的 bool,因为同时记录了删除时间(除非另有 log/表记录删除时间等信息)
soho176
2018-05-22 11:30:07 +08:00
https://www.douban.com/group/topic/36082266/ 是这种?用户注销了,但是用户数据却保留了
Mrkon
2018-05-22 15:09:12 +08:00
@soho176 是用户自己删除他的文章。现在才发现大家都是用的软删除,汗。。
jennifertxwoodma
2018-05-22 18:04:23 +08:00
@sobigfish 嗯嗯,如果空间足够大的话,你的做法比较好。
andylsr
2018-05-22 18:37:46 +08:00
@KimJongun 这是什么路子。。。
andylsr
2018-05-22 18:38:10 +08:00
@Mrkon 互联网企业不存在删除操作。。。
qf19910623
2018-05-22 18:39:25 +08:00
@Mrkon 写程序的原则是尽可能给自己留后路
CoderGeek
2018-05-22 18:41:36 +08:00
isdel 不可能真正删除用户的文章 而且 一般还会保存几个历史版本 QAQ
loveCoding
2018-05-22 18:46:01 +08:00
逻辑删除
lk1ngaa7
2018-05-22 19:33:17 +08:00
软删除
Reficul
2018-05-22 21:49:47 +08:00
created at,updated at 和 deleted at😂😂

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

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

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

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

© 2021 V2EX