私は試験のために勉強していますが、デカルト積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))
誰でも理由を説明できますか?
私の考えでは、Natural Join がtakes.ID=student.ID
?を処理します。