关系代数疑问:包含所有塔尔萨客户的分支解法是否正确
关于关系代数解法的疑问:找出包含所有塔尔萨客户的分支
我最近在做一道关系代数的题目,遇到了和教授解法不一致的困惑,想请教大家帮忙理清思路。
给定的关系模式
首先明确题目里的数据库关系模式:
Account: bname, acct_no, balanceDepositor: cname, acct_noCustomer: cname, street, city(备注:这里的Customer是所有客户的集合,包括仅持有贷款的客户和仅持有账户的客户)Loan: loan_no, amount, b_nameBorrower: cname, loan_noBranch: bname, b_city, assets
问题要求
找出包含所有居住在塔尔萨(Tulsa)的客户的分支。
教授给出的解法
教授给出的关系代数表达式是:
Π cname, bname (account ⋈ depositor) / Π cname (σ city == ‘Tulsa’ (customers))
我的困惑点
我仔细分析了这个解法,觉得Π cname, bname (account ⋈ depositor)这部分存在明显问题:它只关联了账户和存款人关系,得到的是拥有账户的客户和他们对应的分支信息,完全漏掉了那些只持有贷款、没有开立账户的客户。
但题目要求的是“包含所有塔尔萨客户的分支”,并没有限定是“账户客户覆盖所有塔尔萨客户”,所以我实在想不通教授的解法为什么只考虑了有账户的客户。是不是我忽略了题目里的隐含条件,或者对关系代数的除法操作理解有偏差?
内容的提问来源于stack exchange,提问作者csguy
相关产品推荐
相关产品推荐

