假设我有一张学生表,其中包含他们的 ID 和成绩:
-----------------
| id | grade |
-----------------
| 1 | 83 |
| 2 | 94 |
| 3 | 92 |
| 4 | 78 |
Run Code Online (Sandbox Code Playgroud)
我如何编写引用最高分的学生的元组关系微积分公式?
我的尝试:
从 SQL 的角度考虑,我会编写一个查询,该查询对表与自身进行笛卡尔乘积,取比其他等级低的每个等级,然后从原始表中减去。但是,在元组关系演算中,不可能在子查询中构建子表,这就是我被卡住的原因。
但是,我在这个方向尝试了一些东西:
{ <id> | ? grade1 ? students (id, grade) ? ? grade2 ? students (id, grade2) ? grade1 > grade2}
Run Code Online (Sandbox Code Playgroud)
我相信这会让我获得较低的成绩,但是我如何从原始学生表中减去所有这些?我不允许将此语句插入到另一个 TRC 查询中。在此先感谢您的帮助!
我有以下要求(作为更大系统的一部分)。
parts
在数据库中,我需要维护销售这些零件的人员列表suppliers
。
许多suppliers
可以销售相同的产品part
,并且每个part
可以由许多供应商销售。然而,价格各不相同。
在我的系统中,我应该能够跟踪我们购买特定产品的唯一一个。supplier
part
按照我的想法,我需要实体Supplier
和上的两个关系Part
。一种关系Sells
记录特定supplier
携带特定part
,反之亦然,另一种关系Purchase
记录我们part
从谁购买。
但是,我不会price
两次记录该属性。我认为这将是不好的做法。因此,我问,我可以将一种关系与另一种关系联系起来吗?
我在下面提供了一个示例图。虚线是我不确定的。
erd ×1