1
dong3580 2014-09-10 13:16:27 +08:00
删除了文章评论不就不会出来了,不要在数据库中设外键什么的,用程序判断。
只删除文章就行,级联删除可能太麻烦。 窃以为,用户删除了就是删除,你还留着人家的某些信息是违法吧? 再说留着也会造成一堆垃圾信息。 |
3
tushiner 2014-09-10 13:51:12 +08:00
给一个标记字段不就行了,对用户显示“已删除”。
|
5
hellov22ex 2014-09-10 15:20:51 +08:00
楼主,你这不是2么,不判断难道每次删完备份下啊,3楼的方法应该最简单
|
6
node OP @hellov22ex 原先我也是这么做的,真是很累,开发的时候每一句select,包括其它关联表的查询,都得加上这个判断条件,就像颗定时炸弹一样,一不留神就忘了啊。删除同时备份的话虽然那一下子有点烦,可好歹在开发流程里就这一步。其实我也是拿捏不准怎么样合适,假如你也做过的话,请谈谈看着方面的体会吧
|
7
hellov22ex 2014-09-10 16:12:17 +08:00
@node 如果你做的大,肯定加判断很麻烦,但是这时候备份应该更麻烦,你完全可以加个标签,在select那边判断个这个标签,这个应该是最简单的,我做的就是这样子的,没办法,没想到别的办法啊
|
8
dongbeta 2014-09-10 16:14:02 +08:00
soft delete
|
9
mahone3297 2014-09-10 16:40:20 +08:00
这个问题确实麻烦。。。
php symfony的话,doctrine是有相关插件 其他可能也有,或者需要你造轮子 原理,应该也是有个字段表示isDeleted,然后系统自动每次都帮你加上。 |
10
mengzhuo 2014-09-10 18:06:04 +08:00
这年头还有人手写SQL语句??
|
12
alexapollo 2014-09-10 19:05:04 +08:00
直接放到另外一张专用“回收站”型的数据库里~
|
13
node OP 查了一下,貌似可以建一个isDeleted=false的view来解决之前提到的那个麻烦,不过直接物理删除并挪到另一个表里去,就像 @alexapollo 说的这种,这种过程有没有缺陷呢?
|
14
alexapollo 2014-09-10 20:56:15 +08:00
@node 我记得以前有蛮多的老外讨论过这个问题,可以搜搜,SO上应该有
|
15
node OP @alexapollo 嗯,搜到了这个 http://stackoverflow.com/questions/2549839/are-soft-deletes-a-good-idea ,不过好像没有提到删除到“回收站”表的pros和cons
|
16
frankzeng 2014-09-10 22:26:18 +08:00
建个触发器,每次删除就把文章挪到另一个表里,这个能满足你的要求,但是如果数据量大的话,性能会有问题。
|
17
belin520 2014-09-10 22:29:37 +08:00
用户被屏蔽而不是删掉就可以了。
|
18
JmmBite 2014-09-10 22:35:00 +08:00
status:{true,false} # 公开,删除
status:{1,0,-1} # 公开,草稿,删除 |
19
lygmqkl 2014-09-10 22:44:17 +08:00
deleted = 0
|
20
minuux 2014-09-11 08:54:35 +08:00
创建一张视图,直接筛掉已经删除的也可以吧?
|