您是否了解如何设计SQL解决方案?
除了基本的语言语法,我正在寻找帮助我理解的东西:
要构建哪些表以及如何链接它们
如何设计不同规模(小客户端APP到庞大的分布式网站)
如何编写有效/高效/优雅的SQL查询
inspite.. 60
我从这本书开始:Jan L. Harrington 明确解释了关系数据库设计(Morgan Kaufmann数据管理系统系列)(平装本),发现它非常明确和有用
当你加快速度时,数据库系统:设计,实施和管理的实用方法(国际计算机科学系列)(平装)
我认为SQL和数据库设计是不同的(但互补的)技能.
我从这本书开始:Jan L. Harrington 明确解释了关系数据库设计(Morgan Kaufmann数据管理系统系列)(平装本),发现它非常明确和有用
当你加快速度时,数据库系统:设计,实施和管理的实用方法(国际计算机科学系列)(平装)
我认为SQL和数据库设计是不同的(但互补的)技能.
我从这篇文章开始
http://en.tekstenuitleg.net/articles/software/database-design-tutorial/intro.html
与阅读整本书相比,它非常简洁,它很好地解释了数据库设计(规范化,关系类型)的基础知识.
经验最重要的了很多,但在表设计方面,你可以从中学到很多像Hibernate和Grails的ORM是如何运作的,看看他们为什么做的事情.此外:
保持不同类型的数据分开 - 例如,不要在订单表中存储地址,链接到单独的地址表中的地址.
我个人喜欢具有每个表上的整数或长代理键(即保持数据,而不是那些不同的表连接在一起,E,G,M:.1.关系),这是主键.
我也喜欢有一个创建和修改的时间戳列.
确保在任何查询中执行"column = val"的每个列都有一个索引.也许不是世界上数据类型最完美的索引,但至少是一个索引.
设置外键.还设置了ON DELETE和上修改酌情要么级联或设置为null,这取决于你的对象结构的规则(所以你只需要在你的对象树的"头",删除一次,所有对象的子对象得到自动删除).
如果你想modularise你的代码,你可能想modularise你的DB模式 - 比如,这是"客户"区域,这是"订单"面积,这就是"产品"范围,然后使用加入/链接表他们之间,即使它们是1:n的关系,也许复制的重要信息(即,重复的产品名称,代码,价格到您ORDER_DETAILS表).阅读规范化.
对于上面的部分或全部,其他人会建议完全相反:p - 从来没有一种真正的方式做某些事情呃!
我真的很喜欢这篇文章.. http://www.codeproject.com/Articles/359654/important-database-designing-rules-which-I-fo
Head First SQL是一个很棒的介绍.