小编Ric*_*nit的帖子

嵌套视图是一个好的数据库设计吗?

我很久以前在某个地方读过。这本书指出我们不应该允许在 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
Run Code Online (Sandbox Code Playgroud)

老师

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
Run Code Online (Sandbox Code Playgroud)

学校

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
Run Code Online (Sandbox Code Playgroud)

在我的工作场所,我调查了我们的一个内部数据库应用程序。我检查了对象,发现有两到三层的视图相互堆叠。所以这让我想起了我过去读过的东西。有人可以帮忙解释一下吗?

如果这样做不行,我想知道它仅限于 …

performance database-design sql-server view

45
推荐指数
4
解决办法
4万
查看次数

为什么要在存储过程中避免使用动态 SQL?

我听说它说您不想使用动态 SQL。你能给我一些具体的或现实生活中的例子吗?

就个人而言,我在我的数据库中多次使用它进行编码。我认为这是可以的,因为它的灵活性。

我的猜测是关于 SQL 注入或性能。还要别的吗?

sql-server stored-procedures dynamic-sql

15
推荐指数
2
解决办法
1万
查看次数

不升级数据库服务器的优点或缺点是什么?

我有一个旧的数据库服务器。写它的人早已不在了。根本没有文档,只有代码中的一些注释。幸运的是,这并不复杂,但如果我想修复它(来自用户的请求),调查所有相关的数据库对象(表、视图或存储过程)需要时间。

最近,我收到我们 IT 部门人员的建议,我应该将我们的数据库升级到更新的数据库版本 (2005/2008)。现在,它是 SQL Server 2000。他说它将有更好的性能和安全性。我想如果我升级到新版本,我们的旧机器(硬件)可能不足以支持新的数据库引擎。目前,据用户称,响应时间是可以接受的。

我试着去思考所有的利弊。我宁愿不升级,但我想确保我不会错过任何东西。

不升级

  • 更好的投资回报率(不是支付所有费用)

升级

  • 为新服务器/许可证付费
  • 重做一些工作以获得相同的功能
  • 更好的性能/安全性

问题是:我该怎么办?升级或不升级我们的数据库服务器。

sql-server sql-server-2000 upgrade

6
推荐指数
1
解决办法
558
查看次数