实体删除策略

时间:2009-06-05 04:12:58

标签: database entity-relationship

假设您有一个ServiceCall数据库表,记录了向您发出的所有服务调用。每条记录都包含与客户记录的多对一关系,其中存储了哪个客户进行了服务呼叫。

好的,假设客户已停止与您开展业务,并且您不需要数据库中的客户记录。创建新的ServiceCall记录时,不再需要将客户的名称显示在下拉列表中。

你做什么的? 您是否允许用户从数据库中删除客户的记录?

您是否为该客户的记录设置了特殊列IsDeleted为true,然后确保所有下拉列表都不会加载IsDeleted设置为true的所有记录?虽然这可以防止旧记录在内部连接处中断,但它也会阻止用户添加与旧客户同名的新记录,不是吗?

你完全不允许删除吗?只是允许“禁用”它?

您使用的其他策略是什么?我猜每个人都有自己的方式,我只需要看看你的意见。

当然上面的内容非常简化,通常ServiceCall记录会链接到许多其他实体表。当需要删除它们时,所有这些都将面临同样的问题。

2 个答案:

答案 0 :(得分:2)

我更喜欢设置IsDeleted标志,其中一个好处是您仍然可以报告历史信息(所有数据仍然存在)。

关于无法插入具有相同名称的其他客户的问题,如果您使用通常自动填充的ID列(例如CustomerId),则这不是问题。

答案 1 :(得分:0)

我同意@ Tetraneutron的answer

此外,您可以创建仅列出活动客户的VIEW,以便更方便地填充下拉列表等。

相关问题