sql-server – 嵌套视图是一个很好的数据库设计吗?
|
我很久以前就读过某个地方.该书指出我们不应该允许在SQL Server中使用嵌套视图.我不确定为什么我们不能这样做或者我可能记得不正确的陈述. 学生们 SELECT studentID,first_name,last_name,SchoolID,... FROM students CREATE VIEW vw_eligible_student AS SELECT * FROM students WHERE enroll_this_year = 1 老师 SELECT TeacherID,... FROM teachers CREATE VIEW vw_eligible_teacher AS SELECT * FROM teachers WHERE HasCert = 1 AND enroll_this_year = 1 学校 CREATE VIEW vw_eligible_school
AS
SELECT TOP 100 PERCENT SchoolID,school_name
FROM schools sh
JOIN
vw_eligible_student s
ON s.SchoolID = sh.SchoolID
JOIN
vw_eligible_teacher t
ON s.SchoolID = t.SchoolID
在我的工作场所,我调查了一个内部数据库应用程序.我检查了发现的对象,其中有两层或三层视图堆栈.所以这让我想起过去读过的东西.任何人都可以帮忙解释一下吗? 如果不这样做,我想知道它仅限于SQL Server,或者它通常用于数据库设计. 附加信息: 解决方法无论平台如何,以下评论均适用.( – )嵌套视图: >更难理解和调试 例如此视图列引用了哪些表列? Lemme dig through 4级视图定义…… 有关轶事证据,请参见this,this,this和this.与this相比,它显示优化器通常足够智能,可以正确解压缩嵌套视图并选择最佳计划,但不能没有编译成本. 您可以通过将视图查询与针对基表编写的等效查询进行比较来衡量性能开销. ()另一方面,嵌套视图让您: >集中和重用聚合或业务规则 我发现他们很少需要. 在您的示例中,您使用嵌套视图来集中和重用某些业务定义(例如“什么是符合条件的学生?”).这是嵌套视图的有效用法.如果要维护或调整此数据库,请权衡将其与删除数据库相比较的成本. > Keep:通过保持嵌套视图,您可以获得上面列举的优缺点. >您需要使用基本查询替换所有出现的视图.>如果您对符合条件的学生/教师/学校的定义发生变化,您必须记得更新所有相关查询,而不是仅更新相关的视图定义. (编辑:均轻资讯网_我爱站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sql-server-2008 – 链接服务器“(null)”的OLE DB提供程序
- sql – 在数据库中的未知表中查找特定的列条目?
- sql-server – SQL Server使用与定义不匹配的数据填充PERSI
- sqlserver查询死锁的方法是什么,如何避免死锁?
- sql-server – 如何编写SQL Server作业的脚本以进行迁移
- 数据库设计 – SSD是否会降低数据库的实用性
- sql-server – 设置varchar(8000)有什么后果?
- sql-server – 收缩数据库和文件有什么区别?
- sql-server-2008 – 参数嗅探与VARIABLES vs重新编译vs OPT
- sql-server – 使用SQL将XML结构转置/展平为列
- Powershell Invoke-Sqlcmd的错误检测并不总是有效
- sql-server – 如果我选择超过15个字段,我会遇到
- sql-server-2005 – 将数据类型nvarchar转换为da
- sql – 如何重用SELECT,WHERE和ORDER BY子句的结
- sql-server – sysmultiobjrefs SQL 2005上的Tem
- sql-server-2008 – 编写SQL查询的最佳方法,该查
- 执行sp_executeSql以选择…到#table但不能选择临
- 如何在文件系统和数据库之间进行协调?
- HTML表单标记教程(2):
- sql-server-2005 – 从SQL Server 2008降级到200

