数据库编程概念

时间:2009-06-25 23:16:24

标签: sql

所以我读了几本关于SQL的书,我使用了SQL并创建了数据库,但实际上并没有什么高级,几个表,几个连接,等等。

所以现在我正在开展一个非常大的项目。数据库将有多个表,我们每天将处理40,000到80,000行数据。

现在我发现自己缺少一些基本的SQL概念,例如:

我有一个包含文件和文件详细信息的数据集。这些文件列在一个表中,文件详细信息列在另一个表中。我们还有一个构建表和第四个表,它们将构建表,文件表和文件详细信息表连接在一起。

问题就像是,“我如何处理文件并将正确的文件详细信息与文件关联并与构建相关联?

即使我的大学也没有涵盖这一点,现在我觉得自己非常深入。

让我们再看一个例子。让我们拿文件表。在我的应用程序中,我有40'000个文件,我需要将尚未存在的文件添加到文件表中。我是否必须搜索每个单独的条目并添加它是否不存在,如果存在则跳过它?

所以我真正的问题是,在哪里阅读一般概念的好地方?

4 个答案:

答案 0 :(得分:5)

我在这个主题上找到的最好的书籍是Joe Celko的“SQL for Smarties”系列。它们涵盖了从规范化一直到如何在SQL中表示不同数据结构的基础知识。

答案 1 :(得分:3)

  • SQL and Relational Theory - How to Write Accurate SQL Code,来自Chris J. Date;来自前言

      

    SQL无处不在。但是SQL难以使用:它复杂,令人困惑,容易出错 - 我冒昧地建议,而不是它的辩护者会让你相信。为了有希望编写SQL代码,你可以确定它是准确的,因此(意味着它完全按照它应该做的,不多也不少),你必须遵循一些适当的规则 - 这就是这个的论点以关系方式使用SQL的书是你需要的学科。但是,这是什么意思?反正不是SQL关系吗?

         

    确实,SQL是与关系数据库一起使用的标准语言 - 但这个事实本身并不能使它成为关系型。可悲的事实是,SQL在很多方面都脱离了关系理论;重复的行和空值是两个明显的例子,但它们不是唯一的例子。因此,它可以让你自己挂绳子,就像它一样。所以,如果你不想挂起自己,你需要理解关系理论(它是什么和为什么);你需要知道SQL与该理论的偏离;你需要知道如何避免它们可能导致的问题。总之,您需要以关系方式使用SQL。然后,您可以表现得就像SQL真正是关系型的,并且您可以享受使用实际上是真正的关系系统的好处。

         

    现在,如果每个人都已经在关系中使用SQL,那么就不需要这样的书 - 但事实并非如此。相反,我在当前的SQL使用中观察到很多不好的做法。我甚至在教科书和类似的出版物中,通过真正应该更了解的作家(没有名字,没有包装练习)观察这种做法。事实上,对这方面的文献进行审查是一项非常令人沮丧的工作。关系模型首先在1969年看到了光明,然而在这里,我们已经差不多40年了,而且数据库社区似乎仍然没有很好地理解它。部分由于这些原因,本书使用关系模型本身作为组织原则;它深入解释了模型的各种功能,并在每种情况下都显示了如何最好地使用SQL来实现相关功能。 ...

  • 从那里,如果你想深化Lex de Haan(RIP)和Toon Koppelaars的主题Applied Mathematics for Database Professionals;来自前进,由Hugh Darwen和Chris J. Date(再次):

      

    我们欢迎对数据库文献的贡献。这是关于关系数据库的理论和实践的另一本书,但这个有趣的是不同。本书的大部分内容都致力于理论的处理。治疗不仅严谨和数学,而且比其他类似的文本更平易近人。如果要认真对待数据库研究,作者就像我们一样清楚地认识到逻辑和数学的重要性。他们很好地描述了他们的前任教师Bert de Brock和Frans Remmen开发的某种形式主义。这种形式主义包括一些对许多读者来说都是新颖的想法,即使那些已经对这一主题有一定程度熟悉程度的读者也是如此。对我们来说,一个特别有趣的新想法是第10章中更新和交易的形式化。...

  • Practical Issues in Database Management: A Reference for the Thinking Practitioner,作者:Fabian Pascal:

      

    <强>前言

         

    计算机行业 - 尤其是数据库行业 - 类似于时尚行业:它是由时尚驱动的。而且,通常情况下,供应商会从加速淘汰的过程中获益,而这种过时是基于时尚的过时。然而,这是用户,而不是供应商,他们付出了代价。在贸易媒体的帮助下,这些供应商可以通过简单地引诱用户进入下一个时尚 - 互联网只是最新的一种 - 来利用无知和模糊严重的产品缺陷和可疑的做法。 ...... [我的注释:这本书于2000年出版,但没有任何迹象表明WWW特别是超越其时尚功能模式。]

  • An Introduction to Relational Database Theory,来自Hugh Darwen,这个免费,可以直接从其网站下载。

答案 2 :(得分:1)

首先回答你的最后一个问题,如果你想了解更多关于SQL的内容,那么有很多非常好的书。正如LPCRoy所说,Joe Celko的任何东西都很好。此外,特别是对于集合理论,我强烈推荐一本名为“数据库专业应用数学”的书。另外,不要忽视论坛。我是个人SqlServerCentral.com论坛和文章的忠实粉丝。

现在,您更具体的问题是与数据库中的文件系统和处理文件(或至少文件名列表)进行交互。大多数RDBMS都有办法在存储过程中执行此操作,但具体取决于您使用的是哪个系统。而且,即使在允许你这样做的那些,我也不会推荐它。

我建议使用不同的编程语言(如Python或C#)来解析文件,然后将所需的数据输入数据库。请注意,如果需要,某些较新的RDBMS(例如MS Sql Server 2008)允许您直接将文档链接到数据库,甚至可以将文档存储在数据库中。即使这是您的最终目标,您最好使用Python或C#等外部语言将其插入数据库。

答案 3 :(得分:0)

您提出的问题似乎有一个简单的连接查询解决方案,也许有点查询。您打算在PL / SQL块或代码中执行这些操作吗?您在寻找一些代码 - 数据库交互概念还是纯粹的数据库级别?

我通常会发现第一个系列是一个信息丰富且有趣的学习方式。 http://headfirstlabs.com/books/hfsql/