相关疑难解决方法(0)

6
推荐指数
1
解决办法
1万
查看次数

是否有任何经验法则可以根据人类可读的描述构建 SQL 查询?

每当我们面前有任何查询描述时,我们都会尝试应用启发式和头脑风暴来构建查询。

是否有任何系统的分步或数学方法可以根据给定的人类可读描述构建 SQL 查询?

例如,如何确定 SQL 查询是否需要联接而不是子查询、是否需要 group by、是否需要 IN 子句等等。

例如,任何研究数字电子学的人都会知道卡诺图或奎因·麦克劳斯基方法等方法。这些是简化数字逻辑的一些系统方法。

是否有类似这样的方法来手动分析sql查询以避免每次头脑风暴?

sql database heuristics relational-database human-readable

5
推荐指数
1
解决办法
2323
查看次数

如何在关系代数中用 HAVING COUNT(*)>1 表示 GROUP BY?

在考试中,我被要求以 SQL 查询和代数表达式的形式获取拥有不止一笔租金的客户列表。

由于某些原因,更正没有提供代数版本。

所以现在我只剩下:

SELECT IdClient, Name, ...
FROM Client
WHERE IdClient IN (
    SELECT IdClient 
    FROM Rental
    GROUP BY IdClient
    HAVING COUNT(*) > 1
)
Run Code Online (Sandbox Code Playgroud)

我不知道代数符号是否有标准,因此:

  • ? 投影
  • × 笛卡尔积
  • ? 自然连接
  • ? 选择

然后我翻译成:

? IdClient, Name, ... (
    ? (count(IdClient)>1) (? Rental) ? (Client ? Rental)
)
Run Code Online (Sandbox Code Playgroud)

但我找不到任何来源来证明我是对还是错,尤其是对于:

  • 数学背后的逻辑
  • ? Rental 看起来像一个阴暗的生意

count()https://cs.stackexchange.com/questions/29897/use-count-in-relational-algebra看到了使用,虽然它的使用方式不同,但我想不出一种使用方法它没有投影(我想避免。)

sql relational-algebra

5
推荐指数
1
解决办法
1万
查看次数

关系v分层数据模型

当FE Codd提出关系模型时,已建立的时间数据库使用了层次模型.我的理解是,关系模型被认为是对分层方法的重大改进.

我的直觉是,出于某些原因,这"有道理".

  • 关系模型似乎是"查询不可知",因为它不是反映您可能查询它的方式的数据形状,而是结构化,以便可以相对容易地询问任何问题.
  • 关系模型也使可变性变得简​​单.您通过向表中添加行(将元组添加到集合)或删除它来断言或撤消事实.相反,在分层设置中,您需要添加或删除某些其他对象,这会引入次要问题,例如,如果父对象不存在则需要创建父对象,如果父对象为空,则将其删除.
  • 关系模型很容易模拟不容易适应父子方法的关系,例如三个实体之间的关系.
  • 关系模型似乎更适合模式增长,因为可以使用新表添加新类型的事实.小心这样做不需要破坏现有的表(和事实)或依赖它们的服务.

然而,虽然感觉关系数据模型具有优势,但我想要了解为什么它当时被认为显着优越,并且可能仍然存在.

我真的很感激某些提炼形式的论点,或理想情况下,一篇或多篇论文或其他文件,或经过这背后推理的规范参考.

为清楚起见,我不会询问任何一种方法的实际实现,或者它们在存储或计算方面的相对资源使用情况,除非这对答案非常重要.

谢谢.

relational-algebra relational-database hierarchical-data

5
推荐指数
1
解决办法
874
查看次数