我正在使用silverlight 和后端的SQL Server DB 来实现一个基于Web 的应用程序,以获取应用程序将显示的所有数据。我想确保应用程序可以轻松扩展,我觉得这样做的方向是使数据库松散耦合,而不是将所有内容与外键捆绑在一起。我尝试搜索一些示例,但无济于事。
有没有人有任何信息或良好的起点/样本/示例来帮助我着手解决这个问题?
非常感谢帮助。
亲切的问候,
我正在使用silverlight 和后端的SQL Server DB 来实现一个基于Web 的应用程序,以获取应用程序将显示的所有数据。我想确保应用程序可以轻松扩展,我觉得这样做的方向是使数据库松散耦合,而不是将所有内容与外键捆绑在一起。我尝试搜索一些示例,但无济于事。
有没有人有任何信息或良好的起点/样本/示例来帮助我着手解决这个问题?
非常感谢帮助。
亲切的问候,
我认为你有点混淆了你的术语。“松散耦合”是指希望拥有的软件组件相互依赖程度不高,以至于如果不一起在同一个程序中,它们就无法运行甚至无法编译。我从未见过用于描述同一数据库中表之间关系的术语。
我认为,如果您搜索术语“规范化”和“非规范化”,您会得到更好的结果。
除非您一次执行大量插入操作,例如使用数据仓库,否则请使用外键。规范化像疯了一样扩展,你应该利用它。外键速度很快,而且只有在您一次插入数百万条记录时,该约束才会真正阻碍您。
确保您使用的是具有聚集索引的整数键。这应该使连接表非常快速。在没有外键的情况下您可以解决的问题很多且令人沮丧。我整个周末都在这样做,我们有意识地选择不使用外键(不过我们有 TB 的数据)。
在您想到这样的事情之前,您需要考虑数据完整性。存在外键,因此如果它们所基于的主数据不存在,则无法将记录放入表中。如果您不使用外键,您迟早会(可能更早)得到毫无价值的数据,因为您并不真正知道订单所附加的客户是谁。外键是数据保护,你永远不应该考虑不使用它们。
即使您认为所有数据都来自您的应用程序,但在现实生活中,这根本不是真的。数据来自多个应用程序,来自大量数据的导入,来自查询窗口(想想当有人决定更新所有价格时,他们不会从用户界面一次只执行一个价格)。数据可以从许多来源进入数据库,并且必须在数据库级别进行保护。少做就是将您的整个应用程序和数据置于风险之中。
当通过数据库脚本等外部源输入数据时,关于数据库安全性的有趣评论。