我正在备考考试,但无法找到可靠的标准来确定是使用笛卡尔积 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)
问题:查找所有选修在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
了吧?