回答

收藏

永久删除数据库记录(软删除)

技术问答 技术问答 323 人阅读 | 0 人回复 | 2023-09-13

故事3 {! r2 p+ a  _, n9 a$ D
我将编写一些代码来管理应用程序中已删除的项目,但是我将对其进行软删除,以便在需要时可以将其返回。在隐藏或删除项目时,我有一个层次结构要尊重我的应用程序的逻辑。0 }) L1 I2 G- E" ^, X
我顺理成章地将我的物品放在三个容器中,分别放入国家,城市,地区和品牌。每个项目都应该属于一个国家,城市,地区和品牌。现在,如果我删除了一个国家,则应该删除属于给定国家的城市,地区,品牌和商品。如果我删除了该城市,它还应该删除其下的所有内容(区域,品牌等)
0 C. f" ]& u- v( y! O: |! M. @$ @. z. b& G. I. Y* b4 p! P9 Q* [: s+ L
一张纸条' [4 u8 Y8 o+ ^8 ?5 r# b) S
当我删除一个国家/地区并删除关联的品牌时,应注意一个品牌可能在多个国家/地区拥有商品。
8 ~  e* y: j4 ~7 S6 g: r. C; B" m3 j0 L
问题1 P1 B5 A5 q8 A
你建议
' w+ P) P6 G* ?8 L& E# X  `[ol]9 D' H8 x$ i* F3 V! T% v! M" e
将项目(无论是国家,城市,项目等)标记为已删除,每次从数据库中加载任何项目时(无论是否删除)都将需要大量代码来检查,是否需要删除,还需要一些额外的字段来标记是否删除其所属的城市,删除其所属的国家,依此类推。
, _' T& |# v% N! L  R/ c! N5 G* ]# g: Z2 q# j( \
将已删除的内容分别移动到特定的表(DeletedCountries,Deleted Cities等),并保存与之关联的项目的ID,以便稍后将它们插入到其原始表中。当然,这将为我的应用程序保存所有可用来检查所有已删除项目并确保所有层次结构都已删除的代码。
- D+ b1 ^  ~9 \, Z
. I# O/ q  X2 P也许您对实现这种目标有更好的方法/建议/想法!
2 W" l  X' R4 ?# @" q4 q1 n( l! @. J% a7 i
[/ol]4 u) o- ]3 W7 Y, y- a- C/ R) r; B
                / s, g5 O9 n: I+ D2 m* _& |
解决方案:' I0 M/ Q' C1 b7 y( n
                0 r( A5 G: D! i  C8 W
% w+ h+ q) F: q$ Z. V- n& `4 `+ F

( O) R3 e5 p" a0 D; E2 Y# z                出于争论的考虑,解决方案2(将已删除项目移动到他们自己的表中)的一个优点是,如果您有很多记录,则不必担心就其“已删除”状态对记录建立索引。
2 f5 c8 s1 ~2 U1 E7 K话虽如此,如果我要在表之间“移动”数据(通过删除然后插入),我将确保在1个事务中完成。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则