3

我有这个问题。

对于两个表:第一个是员工:Employee(id, roomID)第二个是:Room(roomID, roomName)

问题是:每个房间有多少员工在工作。

我可以用 SQL 语言轻松地做到这一点:

select Room.roomID, COUNT(Employee.id) as NumofEmployee
from Employee, Room
where employee.roomID = Room.roomID
group by Room.roomID

同样的问题,但在关系代数语言下写作。这个问题让我很头疼,因为我懂这门语言,只要做一些简单的操作:join selection projection difference。因此,许多我不知道如何处理的 SQL 命令,例如 :group bycount.

谢谢 :)

4

1 回答 1

4

聚合和分组操作不能从基本的关系代数操作中构造出来。您必须定义自己的COUNTGROUP BY操作员来执行此操作。

您可以使用许多对基本关系代数的建议扩展,或者您甚至可以定义自己的扩展 - 但要正式这样做,我怀疑数学会变得相当复杂。

可以在这里找到一个简单的提案(没有太多形式), http: //myweb.lmu.edu/dondi/share/db/relational3.pdf。(第 3.2 节)

使用该链接中提出的扩展代数,您的表达方式将像:

于 2013-05-31T17:38:43.180 回答