0

我觉得我有一个非常基本/愚蠢的问题,但我从来没有看到/读过/听到这个方向的任何东西。

假设我有一个表users(userId, name)和一个表首选项(id, userId, language)。该示例很简单,但可以扩展到具有多级关系和更多表的情况。
当我的 UI 请求删除用户时,我首先想显示一个警告,说明其首选项也将被删除。如果在某个时候数据库扩展了更多的表和关系,但软件没有相应地调整(客户端没有更新),则应该显示一条通用消息。

我该如何实施?UI 不知道整个数据结构,也不应该费心去遍历所有关系来手动删除所有依赖记录。

我认为这将受到限制。
约束最初不会是任何动作,因此约束会抛出一个可以被 UI 捕获的错误。UI 收到确认后,约束应该变成cascade

不知怎的,我觉得我把这一切都弄错了..

4

2 回答 2

1

我要做的是:

  1. 约束是 CASCADE
  2. 应用程序检查首选项是否存在。
  3. 如果他们这样做,请显示警告。
  4. 如果不存在首选项,或者接受警告,请删除客户端。

动态更改数据库关系不是一个好主意!

干杯,

RB。

于 2008-09-17T09:53:16.810 回答
0

如果您担心用户没有意识到他们删除的全部影响,您可能需要考虑不实际删除数据 - 相反,您可以简单地在名为“说”的列上设置一个标志marked_for_deletion。(然后可以在安全的时间后删除条目)
缺点是您需要记住过滤掉其他查询中的标记行。这可以通过在表上创建一个过滤掉标记行的视图来缓解,然后始终在查询中使用该视图。

于 2008-09-17T10:06:09.820 回答