我正在为考试而学习,但未能找到一个可靠的标准来确定是x
使用笛卡尔积还是使用自然连接|X|
。
我想出了一个粗略的指南:
“如果您需要投影与要连接的表中的属性同名的属性,您必须使用x
并说明要投影的表名称:tableA.colname1 = tableB.colname1
”
然而,这并没有遵循我笔记中的一些解决方案,我的讲师似乎使用x
上述约定或|x|
互换使用。
有没有人可以遵循一个规则来定义一个在另一个之上的使用?
以这个模式为例(仅与为简洁起见引用的问题相关的模式):
takes(ID, course_id, sec_id, semester, year, grade)
student(ID, name, dept_name, tot_cred)
Q) 找出所有参加过 2011 年春季或 2011 年秋季课程的学生的姓名。
我的回答尝试:
π name(σ semester="Spring" ^ year=2011(takes ⋈ student)) ∪ π name(σ semester="Autumn" ^ year=2011(takes ⋈ student))
实际答案:
π name(σ semester="Spring" ^ year=2011 ^ takes.ID=student.ID(takes x student)) ∪ π name(σ semester="Autumn" ^ year=2011 ^ takes.ID=student.ID(takes x student))
任何人都可以提供一个理由吗?
在我看来,自然加入会处理takes.ID=student.ID
?