Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 关于数据库设计和查询,学习集理论有什么样的投资回报?_Sql_Database_Tsql_Database Design - Fatal编程技术网

Sql 关于数据库设计和查询,学习集理论有什么样的投资回报?

Sql 关于数据库设计和查询,学习集理论有什么样的投资回报?,sql,database,tsql,database-design,Sql,Database,Tsql,Database Design,我现在正在学习数据库——有些查询简直是疯了。我知道在查询优化过程中,有时您可能会以不同的方式重写查询,以最小化某些事情。我正在查看一个相关子查询示例,并看到它产生与左连接相同的结果集 我在想,它们可能在数学上(集合论)是相关的,如果熟悉集合论的人能够很容易地看到这一点 我的问题是:从学习集合论中我会看到什么样的投资回报?我会看到投资回报吗?仅仅通过编写更多的查询来学习数据库会更快吗,还是我应该花时间学习集合论?我不想掉进兔子洞里。我想精通数据库,但我需要尽快做到这一点。如果“集合论”的意思是理解

我现在正在学习数据库——有些查询简直是疯了。我知道在查询优化过程中,有时您可能会以不同的方式重写查询,以最小化某些事情。我正在查看一个相关子查询示例,并看到它产生与左连接相同的结果集

我在想,它们可能在数学上(集合论)是相关的,如果熟悉集合论的人能够很容易地看到这一点

我的问题是:从学习集合论中我会看到什么样的投资回报?我会看到投资回报吗?仅仅通过编写更多的查询来学习数据库会更快吗,还是我应该花时间学习集合论?我不想掉进兔子洞里。我想精通数据库,但我需要尽快做到这一点。

如果“集合论”的意思是理解交集、并集、差分等,那么肯定有助于理解这些基本原理。这不会花你很长时间,而且是值得的

不要被公理或无限等等分散注意力


关系数据库是建立在集合论基础上的(例如,不能保证行的顺序是因为它是一组返回的记录,除非使用order BY)。

IMHO,学习集合论肯定会改进关于表对象的概念模型,但要真正做到这一点,我认为您需要全力以赴,开始编写生产级SQL,每天处理它们

阅读特定于SQL的书籍,查看实际示例,最重要的是亲自尝试

举个例子,我可以了解计算机工作的所有最深方面,甚至TGEHP结构,但这对解决我当前的SQL“难题”几乎没有帮助:)


达奈特这是个棘手的问题。我在学校上过集合论和关系代数的课程,我可以肯定地说,它们有助于我理解关系数据库。但是仅仅学习集合论本身可能不会有多大帮助。关系代数需要一些基本的集合论,它是一种更好的关系数据库建模形式(通过设计),如果您计划大量使用它们,那么学习它是一件很好的事情。它不仅有助于查询优化,也有助于数据库设计,在不检查理论基础的情况下,数据库设计似乎是一门黑色艺术。例如,数据库范式可以简洁地描述为关系代数中的简单表达式

如果您只进行简单的SQL查询,而没有进行复杂的查询或数据库设计,那么学习关系代数的努力可能无法从中获益


值得一提的是,现实世界中的关系数据库实际上不是集合,而是包或多集合。将集合论应用于行李往往会因阻抗失配而引起头痛。

实数集合论更多地是关于公理理论、类与集合等。虽然我发现这是一个非常有趣的话题,但我不认为从中可以学到很多适用于数据库的东西


更合适的(如果你想扩展你的理论背景)是关系理论(作为起点)和——当然——关系数据库理论本身。

虽然大多数关系数据库工作依赖于一些基本的集合论概念,但我认为你不会看到太多直接的“ROI”从现在开始回去研究它——特别是如果你想在你的时间投资上快速扭转局面的话


我建议多花点时间试验查询及其结果,然后学习索引的基础知识和不同类型的连接。获得一本关于您正在使用的特定DBMS的书也可能很有用

我认为答案取决于你的年龄。如果你还不到,比如说22岁,并且你的主要精力是学习而不是工作,那么一定要学习集合论、抽象代数等。这种心理体操可以帮助你为未来的编程挑战做好准备

(如果你在数学课程中学习过不同的代数结构,那么你就会知道,例如,平方矩阵构成了一个包含3个运算(加法、乘法和标量乘法)的代数)然后你会遇到关系数据库,看到一个代数,它在表上有5个操作——选择、投影和三种类型的连接,没什么大不了的。现代计算机密码学是基于环的理论,特别是整数环和多项式等。)

但是如果你年纪较大,有一份全职的编程工作,我猜集合论的投资回报率会很低,你最好花时间练习编写和优化查询。

“仅仅通过编写更多的查询来学习数据库会更快吗,还是我应该花时间学习集合论?我不想掉进兔子洞里。我想精通数据库,但我需要尽快到达那里。”

如果我能从字面上理解最后一句话,那么我说开始学习理论。集合论,关系代数,类型理论,微积分,与谓词逻辑的联系,规范化理论

这足以让你学习至少10年,对我来说,这似乎是一个合理的估计,即“最快的可能”,以便真正掌握数据库


如果你认为有可能在一年的时间内成为一名真正的数据库专家,那么你就是在欺骗自己。

我同意前面的答案,但我想补充一些想法。不久前我也想到了同样的问题。首先,学习数学总是好的,可以解决我们的问题第二,投资回报率取决于