程序逻辑应该强化数据库逻辑吗?

时间:2014-04-22 11:00:10

标签: c# relational-database software-design

这对我们中的一些人来说似乎是一个奇怪的问题,但是在自学成才的情况下,我从来没有让别人传授最佳实践。

简而言之,假设我有一个数据库表(表1)链接到另一个数据库表(表2)。它们之间存在一种关系,用于指定如果删除表1中的记录,则应在表2中采取不采取措施 - 如果表2中存在链接记录,则应加强参照完整性并停止删除表1中的记录。

因此,如果我以编程方式删除表1中已链接表2中的记录的记录(例如使用ADO.NET),我会收到错误。

问题是,我是否应该通过在请求删除记录之前检查链接记录来强化逻辑。据我所知,这会使检查(查询)加倍,并提供更改数据库中关系的人员的安全性,但确保仍然遵守逻辑 - 每次检查的资源成本都很低,但是什么是正确的方式???

1 个答案:

答案 0 :(得分:2)

在您尝试删除之前进行检查似乎是一个好主意,但IMO有点多余(除非您只有1个用户),因为它不能保证删除是安全的,数据库的状态可能非常在执行检查和发出删除命令之间由另一个用户轻松更改。

我会让数据库处理删除,然后捕获并处理特定的异常,如果它们被抛出代码中。我认为在这种情况下你会得到一个SqlException然后你需要检查你想要处理的错误的错误代码。