既然练习语句一开始就没有指定这两个属性,那么属性是如何突然发挥作用的呢? [已关闭]

问题描述 投票:0回答:1

我的练习答案很大程度上依赖于关系代数过程查询语言。

练习如下:

考虑以下关系数据库模式:

person(ID, firstName, lastName, nickName)
follows(pID1, pID2)

关系实例 person 存储每个人的信息。每个人都通过他们的 ID 来识别。关系实例 follow 跟踪谁关注谁,即 pID1 follow pID2。属性 pID1 和 pID2 都是关系人中属性 ID 的外键

编写一个关系代数查询,查找所有昵称对 (name1, name2),使得 name1 跟随 name2。

由于练习语句一开始并没有指定这两个属性,所以属性

name1
name2
是如何突然发挥作用的?

name1
name2
代表什么(例如,
nickName
的属性或子成分)?

在编写关系代数查询时我应该如何使用这两个全新的属性?

我的回答:

π nickName (σ pID1=ID ∧ pID2=ID (person ⨝ follows))

分解:

  1. person ⨝ follows
    - 使用自然连接操作(也称为笛卡尔积?)来组合表并简化过滤过程。
  2. σ pID1=ID ∧ pID2=ID
    - 使用选择操作过滤掉不遵守上述顺序的名称 - “名称 1 跟随名称 2” - 将约束与 ID 属性相关联。 c)
    π nickName
    - 仅检索“nickName”列及其关联的域,这些域是其封装的字符类型值。
database relational-algebra
1个回答
-1
投票

自从我在课堂上使用该符号以来已经很长时间了。
在标准 SQL 数据库中,您会看到类似这样的内容。希望这有帮助。

select distinct p1.nickName name1, p2.nickName name2
from follows f
join person p1 on p1.ID = f.pID1
join person p2 on p2.ID = f.pID2
© www.soinside.com 2019 - 2024. All rights reserved.