SQL数据库devise初学者指南

你知道如何deviseSQL解决scheme的好资源吗?

除了基本的语言语法,我正在寻找一些东西来帮助我理解:

  1. build立什么表格以及如何链接它们
  2. 如何devise不同的规模(小客户端APP到庞大的分布式网站)
  3. 如何编写有效/高效/优雅的SQL查询

我从这本书开始: 关系数据库devise明确解释(Morgan Kaufmann系列数据pipe理系统)(平装本)由Jan L. Harrington发现,它非常清楚和有用

数据库系统:devise,实施和pipe理的实用方法(国际计算机科学丛书) (简装本)

我认为SQL和数据库devise是不同的 (但是互补的)技能。

经验非常重要,但在表格devise方面,您可以从Hibernate和Grails等ORM的运作中学到很多东西,以了解他们为什么要这样做。 此外:

  1. 保持不同types的数据分开 – 不要将地址存储在订单表中,例如链接到单独地址表中的地址。

  2. 我个人喜欢在每个表上有一个整数或长的代理键(保存数据,而不是将不同的表连接在一起,例如,m:n关系),这是主键。

  3. 我也喜欢有一个创build和修改时间戳列。

  4. 确保在任何查询中“where column = val”的每一列都有一个索引。 数据types可能不是世界上最完美的索引,但至less是一个索引。

  5. 设置你的外键。 同时在相关的地方设置ON DELETE和ON MODIFY规则,根据你的对象结构设置级联或者设置null(所以你只需要在对象树的“头部”删除一次,所有对象的子对象都可以得到自动删除)。

  6. 如果你想模块化你的代码,你可能想模块化你的数据库模式 – 例如,这是“客户”区域,这是“订单”区域,这是“产品”区域,并使用连接/连接表即使它们是1:n关系,也可能复制重要信息(即将产品名称,代码,价格复制到您的order_details表中)。 阅读正常化。

  7. 其他人会推荐完全相反的一些或所有上述:p – 从来没有一个真正的方式做一些事情呃!

我从这篇文章开始

http://en.tekstenuitleg.net/articles/software/database-design-tutorial/intro.html

阅读整本书相当简洁,它非常好地解释了数据库devise的基础知识(规范化,关系types)。

Head First SQL是一个很好的介绍。

我读了一段时间(所以,我不确定它还有多less是相关的),但是我的回忆是,Joe Celko的SQL for Smarties书提供了大量关于编写优雅,有效和高效的查询的信息。

这些都是我的观点,需要来自不同领域的不同知识。

  1. 你不可能事先知道“哪个”表build立,你必须知道你需要解决的问题并相应地devise模式;
  2. 这是数据库devise决策和数据库供应商定制能力的混合(也就是说,你应该检查你的DBMS的文档,并最终学习一些缩放的“技巧和诀窍”),而且DBMS的configuration对于缩放(复制,数据分区等);
  3. 再次,几乎每个rdbms都带有一个特定的SQL语言“方言”,所以如果你想要有效的查询,你必须学习那个特定的方言 – 反之亦然。 很可能写出高效的查询也是一件大事:优雅和效率往往是相互冲突的目标 –

也就是说,也许你想读一些书,我个人在我的datbase大学课程中使用过这本书 (并find了一个很好的书,但我没有读过这个领域的其他书,所以我的build议是检查数据库devise中的一些好书)。