📜  数据库管理系统 |设置 4

📅  最后修改于: 2021-09-28 10:09:36             🧑  作者: Mango

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

1. 考虑一个具有以下属性的每个注册学生的单个记录的关系表。

1. Registration_Number:<每个注册学生的唯一注册号
2. UID:唯一的身份号码,每个公民在国家层面都是唯一的
3. BankAccount_Number:银行的唯一帐号。一个学生可以有多个账户或联名账户。此属性存储主帐号
4.姓名:学生姓名
5. Hostel_Room:宿舍的房间号

以下哪个选项是不正确的?
(A) BankAccount_Number 是候选键
(B) Registration_Number 可以是主键
(C) 如果所有学生都来自同一个国家,则 UID 是候选键
(D) 如果 S 是一个超键,使得 S ∩ UID 为 NULL 那么 S ∪ UID 也是一个超键

答案 (A)

候选键值必须唯一标识表中的相应行。 BankAccount_Number 不是候选键。根据问题“一个学生可以有多个帐户或联名帐户。此属性存储主帐号”。如果两个学生有一个联名账户并且如果联名账户是他们的主要账户,那么 BankAccount_Number 值不能唯一标识一行。

2) 考虑一个具有足够数量记录的关系表 r,具有属性 A1、A2、…、An 并且让 1 <= p <= n。下面给出了两个查询 Q1 和 Q2。

可以将数据库配置为对 Ap 进行有序索引或对 Ap 进行散列。下面哪个描述是正确的?
(A) 对于两个查询,有序索引总是优于散列
(B) 对于两个查询,散列总是优于有序索引
(C) 散列将在 Q1 上优于有序索引,但在 Q2 上则不然
(D) 散列将在 Q2 上优于有序索引,但在 Q1 上则不然。

答案 (C)

如果从表中访问特定值的记录,散列会做得更好。如果在一系列值中访问记录,则有序索引的性能会更好。有关更多详细信息,请参阅此内容。

3) 下面给出了名称为 Loan_Records 的数据库表。

Borrower    Bank_Manager   Loan_Amount
 Ramesh      Sunderajan     10000.00
 Suresh      Ramgopal       5000.00
 Mahesh      Sunderajan     7000.00

以下 SQL 查询的输出是什么?

SELECT Count(*) 
FROM  ( (SELECT Borrower, Bank_Manager 
       FROM   Loan_Records) AS S 
        NATURAL JOIN (SELECT Bank_Manager, 
                             Loan_Amount 
                      FROM   Loan_Records) AS T ); 

(一) 3
(乙) 9
(三) 5
(四) 6

答案 (C)

以下将是临时表 S 的内容

Borrower    Bank_Manager
--------------------------
 Ramesh      Sunderajan
 Suresh      Ramgopal
 Mahesh      Sunderajan

以下将是临时表 T 的内容

Bank_Manager   Loan_Amount
---------------------------
Sunderajan      10000.00
Ramgopal        5000.00
Sunderajan      7000.00

以下将是上述两个表自然连接的结果。需要注意的关键是自然连接发生在同名的列名上,即上例中的 Bank_Manager。 “Sunderajan”在 Bank_Manager 列中出现了两次,因此它们将是四个条目,其中 Bank_Manager 为“Sunderajan”。

Borrower  Bank_Manager   Load_Amount
------------------------------------
Ramesh    Sunderajan     10000.00
Ramesh    Sunderajan     7000.00
Suresh    Ramgopal       5000.00
Mahesh    Sunderajan     10000.00
Mahesh    Sunderajan     7000.00

4) 考虑一个包含两列 X 和 Y 的数据库表 T,每列都是整数类型。创建表后,在表中插入一条记录(X=1,Y=1)。

令 MX 和 My 表示任意时间点表中所有记录中 X 和 Y 各自的最大值。使用 MX 和 MY,新记录插入表 128 次,X 和 Y 值分别为 MX+1、2*MY+1。可以注意到,每次插入后,MX 和MY 的值都会发生变化。执行上述步骤后,以下 SQL 查询的输出将是什么?

SELECT Y FROM T WHERE X=7;

(一) 127
(乙) 255
(三) 129
(四) 257

答案 (A)

X    Y
-------
 1    1
 2    3
 3    7
 4    15
 5    31
 6    63
 7   127
 ......
 ......

请参阅GATE Corner了解所有往年论文/解决方案/解释、教学大纲、重要日期、笔记等。