📌  相关文章
📜  门| Sudo GATE 2020 Mock III(2019年1月24日)|第61章

📅  最后修改于: 2021-06-30 01:45:00             🧑  作者: Mango

考虑以下架构:

Person(SSN, name, address)
Car(license, year, model)
Accident(license, accident_date, driver, damage_amount)
Owns(SSN, license) 

带下划线的主键。请注意,发生车祸的驾驶员不一定总是车主。假定事故日期是整数类型,并且表示年份(例如1980)。 Year也是整数类型。同样,假设汽车在特定日期不能卷入多起事故。

以下哪个查询对找到拥有一辆或多辆汽车的每个人的SSN都是正确的,而这些人均从未发生过车祸。
(一种)

SELECT O.SSN
FROM Owns O
WHERE O.license NOT IN (SELECT A.license
                        FROM Accident A) 

(B)

πSSN(Owns) - πSSN(Owns ⨝ Accident) 

(C)

{ O | ∃O1 ∈ Owns( O.SSN = O1.SSN ∧ ¬∃A∈ Accident( O1.license = A.license )) } 

(D)以上全部。答案: (B)
说明:仅选项(B)正确。

选项(A)和选项(C)会返回至少有一辆未参与事故的汽车的每个人的SSN,而问题将询问其所有汽车从未参与过事故的人员。
这个问题的测验