📜  数据库管理系统 | 11套

📅  最后修改于: 2021-09-27 14:57:59             🧑  作者: Mango

以下问题已在 GATE CS 2007 考试中提出。

1) 关于学生集合的信息由关系stdinfo(studId, name, sex) 给出。关系enroll(studId, courseId)给出了哪个学生注册了(或参加了)该课程。假设每门课程都由至少一名男学生和至少一名女学生参加。下面的关系代数表达式代表什么?

(A) 所有女学生都参加的课程。
(B) 注册了适当的女学生子集的课程。
(C) 只招收男学生的课程。
(D) 以上都不是

答案 (B)
有问题的表达式按顺序执行以下步骤。
a) 选择所有女学生的stuids ,选择所有课程的所有courseids。
b) 然后查询执行上述笛卡尔积从不同表中选择两列。
c) 最后从上述步骤 (b) 的结果中减去登记表。这将删除其存在于登记表中的所有(studid,courseid)对。如果所有女学生都注册了一个课程,那么该课程将不会出现在减法结果中。
因此,完整的表达式返回其中注册了适当的女学生子集的课程。

studinfo table
studid   name    sex
------------------------
 1        a      Male
 2        c      Female 
 3        d      Female 

enroll table
studid  courseid
------------------
 1         1
 2         1
 3         1
 2         2 
 3         3
 3         2    


Result of step b
studid     courseid
---------------------
 2             1
 2             2
 2             3
 3             1
 3             2
 3             3  


Result of step c
studid    courseid
-------------------
 2           3

2) 考虑以姓名为键的关系employee(name, sex, supervisorName)。 supervisorName 给出正在考虑的员工的主管的姓名。以下元组关系演算查询产生什么?

(A) 有男性主管的员工姓名。
(B) 没有直接男性下属的员工姓名。
(C) 没有直接女性下属的员工姓名。
(D) 有女性主管的员工姓名。

答案 (C)
该查询选择所有直属下属为“男性”的员工。换句话说,它选择没有直接女性下属的员工姓名

3)考虑表employee(empId,name,department,salary)和下面的两个查询Q1,Q2。假设部门 5 有不止一名员工,并且我们想要找到比部门 5 中任何人薪水都高的员工,对于任意员工表,以下哪一项语句是正确的?

Q1 : Select e.empId
     From employee e
     Where not exists
        (Select * From employee s where s.department = “5” and 
                                        s.salary >=e.salary)
Q2 : Select e.empId
     From employee e
     Where e.salary > Any
    (Select distinct salary From employee s Where s.department = “5”)

(A) Q1 是正确的查询
(B) Q2 是正确的查询
(C) Q1 和 Q2 产生相同的答案。
(D) Q1 和 Q2 都不是正确的查询

答案 (B)
让员工(empId,姓名,部门,工资)有以下实例。

empId 名称 部门工资
—————————————————
e1 ———— A———— 1——10000
e2 ——-B ———— 5 ———5000
e3 ——-C ———— 5——-7000
e4 ——-D ———— 2——-2000
e5 ——-E ———— 3——-6000

现在实际结果应该包含 empId : e1 、 e3 和 e5 (因为他们的薪水比部门“5”中的任何员工都要高)

—————————————————————
现在第一季度:

注意:EXISTS(empty set) 给出 FALSE,NOT EXISTS(empty set) 给出 TRUE。

选择 e.empId
来自员工e
不存在的地方
(选择 * From employee s where s.department = “5” and
s.salary >=e.salary)

Q1 将仅产生 empId e1。
————————————————————
而 Q2 :

选择 e.empId
来自员工e
e.salary > Any
(从员工 s 中选择不同的工资,其中 s.department = “5”)

Q2 将产生 empId e1、e3 和 e5。
—————————————————————
因此 Q2 是正确的查询。

4) 以下哪一项陈述为假?
(A) 任何具有两个属性的关系都在 BCNF 中
(B) 每个键只有一个属性的关系是 2NF
(C) 素数属性可以传递依赖于 3 NF 关系中的键。
(D) 主要属性可以传递依赖于 BCNF 关系中的键。

答案 (D)

5) 考虑以下涉及两个事务的时间表。以下哪一项陈述是正确的?

(A) S1 和 S2 都是冲突可序列化的。
(B) S1 是冲突可序列化的,S2 不是冲突可序列化的。
(C) S1 不是冲突可序列化的,S2 是冲突可序列化的。
(D) S1 和 S2 都不是冲突可序列化的。

答案 (C)
S1 不是冲突可序列化的,但 S2 是冲突可序列化的

Schedule S1
   T1            T2
---------------------
  r1(X)
  r1(Y)
                r2(X)
                r2(Y)
                w2(Y)
  w1(X)
The schedule is neither conflict equivalent to T1T2, nor T2T1.

Schedule S2
   T1            T2
---------------------
  r1(X)
                r2(X)
                r2(Y)
                w2(Y)
  r1(Y)
  w1(X)
The schedule is conflict equivalent to T2T1.