我很久以前就读过书。本书指出,我们不应允许在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, first_name, last_name, SchoolID, ... 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或通常用于数据库设计。
附加信息:我更新了公司的示例。我进行了一些改动,使其变得更加通用,而没有太多的技术性(此示例中的列太多)。通常,我们使用的嵌套视图基于抽象或聚合视图。例如,我们有一个大学生表,其中有几百列。说,Eligible Student View
是根据今年入学的学生而定。符合学生资格的视图可以在其他地方使用,例如在存储过程中。