什么是做这项操作的最佳方法

时间:2010-01-26 15:54:56

标签: architecture

我有一个问题,关于做这项操作的最佳方法是什么: 我有一个数据库让我们假设它有4个表(表的数量可以高得多),当我想对table1,table2和table3进行任何CRUD(插入,更新,删除)操作时我必须这样做对table4的操作,现在table4是非常关键的所以我必须确保所有操作都准确和快速,最终这个表将用于获取系统报告所以我需要它快速 现在,以下哪两种方式会更好:

- 第一种方法发生在数据库中,所以我创建了一个存储过程或触发器 当在任何表(table1,table2,table3)中执行任何操作时,这将激活执行相同操作的触发器。在表4中

- 第二种方法发生在程序代码(asp.net和c#)中,当对任何表(table1,table2,table3)执行任何操作时,我使用类或任何代码对table4执行相同的操作。

当我们选择安全性,数据库大小,应用程序架构和......等任何一种方式时,我们需要记住的是什么。

感谢

2 个答案:

答案 0 :(得分:1)

如果你的意思是table4仅用于只读用于生成报告,那么它应该是一个视图而不是一个表。但是如果它应该是一个表,那么使用触发器在数据库级别执行它是很好的。由于它更快,更安全,并且将来如果任何其他应用程序更新其他表,数据将在表4中自动更新,并且不需要重新实现应用程序逻辑。

答案 1 :(得分:0)

我喜欢Teja关于使用table4视图的想法(如果该表有效)(即该表不包含不在table1,table2或table3中的任何数据)。

在考虑使用存储过程时,请考虑如果对任何表的模式进行任何更改会发生什么。如果您不得不重新访问每个存储过程并对其进行更改,该怎么办?如果有很多,那可能需要付出很多努力,并引入创建错误的机会。

触发器比存储过程更容易更改。但它们确实带来了性能成本。如果很多表都有每个写操作的触发器,它们可以真正减慢你的应用程序。