考虑一个具有关系模式 EMP(EmpId、EmpName、DepId)和 DEPT(DeptName、DeptId)的数据库。请注意,在关系 EMP 中可以允许 DepId 为 NULL。考虑以下以元组关系演算表示的数据库查询。
我。 {t | ∃ u ∈ EMP (t[EMPName] = u[EmpName] ∧ ∀ v ∈ DEPT (t[DeptId] ≠ DeptId]))}
二、 {t | ∃ u ∈ EMP (t[EMPName] = u[EmpName] ∧ ∃ v ∈ DEPT (t[DeptId] ≠ DeptId]))}
三. {t | ∃ u ∈ EMP (t[EMPName] = u[EmpName] ∧ ∃ v ∈ DEPT (t[DeptId] = DeptId]))}
(A)仅 I 和 II
(B)仅 I 和 III
(C)仅 II 和 III
(D) I、II 和 III答案: (D)
说明:安全表达式是保证产生有限数量的元组作为其结果的表达式。否则,它被称为UNSAFE
鉴于,可以允许 DepId 为 NULL
我。 {t | ∃ u ∈ EMP (t[EMPName] = u[EmpName] ∧ ∀ v ∈ DEPT (t[DeptId] ≠ DeptId]))} : 给出不属于任何部门的 empname
二、 {t | ∃ u ∈ EMP (t[EMPName] = u[EmpName] ∧ ∃ v ∈ DEPT (t[DeptId] ≠ DeptId]))} : 给出不属于某个部门的 empname
三. {t | ∃ u ∈ EMP (t[EMPName] = u[EmpName] ∧ ∃ v ∈ DEPT (t[DeptId] = DeptId]))}:给出不属于同一部门的 empname
所有这些查询都给出了一些有限的结果,因此都是安全的表达式。
因此,选项 D是正确的。
这个问题的测验