松散耦合的数据库设计 - 如何?

时间:2009-09-14 11:48:57

标签: sql-server database loose-coupling

我正在使用带有SQL Server数据库的Silverlight在后端实现一个基于Web的应用程序,用于应用程序将显示的所有数据。我想确保应用程序可以轻松扩展,我觉得这样做的方向是使数据库松散耦合,而不是将所有内容与外键绑定。我试过寻找一些例子,但无济于事。

有没有人有任何信息或良好的起点/样本/示例来帮助我实现这个目标?

非常感谢。

亲切的问候,

4 个答案:

答案 0 :(得分:8)

我认为你的术语有点混淆了。 “松散耦合”指的是具有不相互依赖的软件组件的可取性,它们不能在不在同一程序中的情况下运行或甚至编译。我从未见过用于描述同一数据库中表之间关系的术语。

我认为如果你搜索术语“规范化”和“非规范化”,你会得到更好的结果。

答案 1 :(得分:2)

除非您一次进行大量插入操作,例如数据仓库,否则使用外键Normalization像疯了一样扩展,你应该利用它。外键很快,如果你一次插入数百万条记录,那么约束实际上只能阻止你。

确保使用具有聚簇索引的整数键。这应该使加入表非常迅速。你可以在没有外键的情况下自己解决的问题很多并令人沮丧。我只是花了整个周末这样做,我们有意识地选择没有外键(尽管我们有数TB的数据)。

答案 2 :(得分:1)

在您想到这样的事情之前,您需要考虑数据完整性。存在外键,因此如果它们所基于的主数据不存在,则无法将记录放入表中。如果您不使用外键,您迟早(可能更早)会得到毫无价值的数据,因为您实际上并不知道订单附加到哪个客户。外键是数据保护,你永远不应该考虑不使用它们。

即使您认为所有数据都来自您的应用程序,但在现实生活中,这根本不是真的。数据来自多个应用程序,来自大量数据的导入,来自查询窗口(想想当有人决定更新所有价格时,他们不会从用户界面一次只做一个价格)。数据可以从许多来源进入数据库,并且必须在数据库级别受到保护。做得更少就是将整个应用程序和数据置于风险之中。

答案 3 :(得分:0)

通过外部源(如数据库脚本)输入数据时,有关数据库安全性的注释。