我有这个问题。
两个表:第一个是员工: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 by
或count
。
谢谢:)
答案 0 :(得分:4)
无法从基本关系代数运算构造聚合和分组操作。您必须定义自己的COUNT
和GROUP BY
运算符才能执行此操作。
你可以使用基本关系代数的许多建议扩展,或者你甚至可以定义自己的扩展 - 但为了正式这样做,我怀疑数学会变得相当复杂。
这里可以找到一个简单的提案(没有太多形式),http://myweb.lmu.edu/dondi/share/db/relational3.pdf。 (第3.2节)
使用该链接中提出的扩展代数,您的表达式将写成: