![]() |
1
10
在设计数据库时,我更喜欢以下内容:
这允许DBA直接处理表(添加列、清理内容、注入数据等),而不会干扰代码库,并且它将代码库与对表所做的任何更改(临时或其他)隔离开来。 这样做可能会对性能造成影响,但到目前为止,这并不重要——绝缘层的好处是可以多次挽救生命。 |
![]() |
2
4
您不会注意到对一个表视图的任何性能影响;在为使用这些视图的任何代码构建执行计划时,SQL Server将使用基础表。我建议您使用模式绑定这些视图,以避免在不更改视图的情况下意外更改基础表(想想可怜的下一个家伙)。
根据我的经验,这种情况很少发生。添加列、删除列、更改索引和更改数据类型是您将要运行的通常的更改表脚本。
我对此表示怀疑。将计算放入列定义和将其放入视图定义之间有什么区别?此外,您还将看到将其移动到视图而不是计算列的性能会受到影响。唯一的真正优势是 改变 在视图中计算比更改表(由于索引和数据页)更容易。
这就是拥有视图、表和列别名以及组合多个表的真正原因。在我过去的几项工作中,最佳实践是在需要将数据非规范化的地方使用视图(如您已经指出的查找等)。 像往常一样,对DBA问题最真实的回答是“它取决于”——取决于您的情况、技能等。在您的情况下,重构“一切”无论如何都会破坏所有应用程序。如果您确实正确地修复了基表,那么您试图从视图中获得的间接寻址就不需要了,而且对于将来的任何更改,模式维护只需要增加一倍。我想说,跳过包装视图,修复表和存储的过程(这些过程已经提供了足够的信息隐藏),这样就可以了。 |
![]() |
3
1
我同意 Steven's comment --主要是因为您使用的是Access。在重新设计数据库时,保持访问的优缺点非常重要。我去过那里,通过访问前端/SQL服务器后端(尽管它不是ADP项目)完成了这项工作。 我想补充一下,视图对于确保数据不会在项目中的访问表单之外发生更改是很好的。缺点是所有更新都需要存储过程——如果您还没有这些更新,那么也必须创建它们。 |
![]() |
Glory Raj · 有什么方法可以使这两个块具有共同的功能吗 2 年前 |
![]() |
Justin · Python自属性重命名 6 年前 |
![]() |
Sabutobi · 长dict属性行的重构 6 年前 |
![]() |
Falco Alexander · 简单LINQ重构/样式 6 年前 |
|
05bs001 · Euler 12需要优化 7 年前 |
![]() |
slartidan · 如何将lambda表达式重构为方法引用? 7 年前 |
|
Alex · 在Java类中频繁使用与映射键相同的字符串[已关闭] 7 年前 |