0

我们在一个更大的套件中有许多模块,它们都使用一组通用的存储过程和函数,部分原因是它们都使用一组通用的数据和表。这种方法可确保所有模块在拨打相同电话时收到相同的答案 - 这是一件非常好的事情(尤其是在金融行业)

但是,这种方法的缺点是,当我们更新套件中的一个模块时,需要更改其中一个共享存储过程或函数,它需要我们更新几乎整个套件。由于时间和成本,这是一件坏事。

每次我们更新单个存储过程时,可以采用什么样的策略来缓解这个套件升级问题,同时最大限度地降低管理复杂性。

这有点类似于微软在 DLL(s)/API(s) 中遇到的版本问题,您会看到 API 上的签名更改需要 xxx2 版本,这不是理想的原因,那么您基本上有两个版本两者都需要维护和升级,因为它们可能会失去同步(即同一个问题有两个不同的答案)。

在这方面的任何策略或最佳实践将不胜感激。

提前致谢。

什么

4

1 回答 1

0

两种策略是视图和存储过程。

使用视图访问表中的数据。这样,您可以更改基础表(针对一个模块),而不必立即更改其他模块。最终,您也可以更改该模块。例如,您可以将一个表拆分为一个模块的两个不同的表。其他模块永远不会注意到,因为它们访问视图,而您只需修改视图以返回原始数据。

按照这些思路,您永远不想使用select *,因为列、它们的名称或它们的顺序可能会改变。

第二种策略是将所有insertupdate和包装delete到存储过程中。这有第二个优势,您可以在过程中进行检查、记录和通知。您可以尝试使用触发器和约束来模拟这一点,但我发现存储过程方法更易于维护。

于 2013-03-23T21:12:40.987 回答