0

ここに画像の説明を入力 バンクーバー市にある会社で働くすべての従業員の名前、会社名、マネージャー名を検索します。

これをタプルリレーショナル計算でどのように書くのですか? 私は長い間これを考えてきました。「管理する」となると、manages.manager_name から employee.person_name への対処方法がわかりません。

4

1 に答える 1

0

workscompanyおよびmanages関係のすべてのタプルのデカルト積を取得する場合、 とcompany_nameの間でs が一致し、 との間worksでs が一致し、「バンクーバー」と一致するタプルに結果を制限すると、任意のおよびを一緒に取ることができます。fromを使用して、結果のタプルを作成します。例:companyperson_nameworksmanagescityperson_namecompany_namemanager_namemanages

{t : {person_name, company_name, manager_name} |
     ∀ w, c, m (
         works(w) ∧ company(c) ∧ manages(m) ∧
         w.company_name = c.company_name ∧ c.city = 'Vancouver' ∧
         w.person_name = m.person_name ∧ t.person_name = w.person_name ∧
         t.company_name = c.company_name ∧ t.manager_name = m.manager_name
     )
}

employeefor bothperson_namemanager_namein で結合したい場合works(冗長になりますが)、次のように実行できます。

{t : {person_name, company_name, manager_name} |
     ∀ e1, w, c, m, e2 (
         employee(e1) ∧ works(w) ∧ company(c) ∧ manages(m) ∧ employee(e2) ∧
         e1.person_name = w.person_name ∧ e1.person_name = m.person_name ∧ 
         w.company_name = c.company_name ∧ c.city = 'Vancouver' ∧
         m.manager_name = e2.person_name ∧ t.manager_name = e2.person_name ∧
         t.person_name = e1.person_name ∧ t.company_name = c.company_name
     )
}

それが理にかなっていることを願っています、それはしばらく経ちました、そして私はそれを調べなければなりませんでした.

于 2015-08-06T13:31:26.077 に答える