当前位置:  开发笔记 > 数据库 > 正文

关系数据库设计模式?

如何解决《关系数据库设计模式?》经验,为你挑选了6个好方法。

设计模式通常与面向对象的设计有关.
是否有用于创建和编程关系数据库的设计模式?
许多问题肯定必须有可重复使用的解决方案.

示例包括表格设计,存储过程,触发器等模式......

是否有类似于martinfowler.com的此类模式的在线存储库?


模式可以解决的问题示例:

存储分层数据(例如,具有类型的单个表与具有1:1密钥和差异的多个表...)

存储具有可变结构的数据(例如,通用列vs xml vs分隔列...)

非规范化数据(如何以最小的影响做到这一点......等等)

Michael Brow.. 143

Martin Fowler的签名系列中有一本名为Refactoring Databases的书.这提供了重构数据库的技术列表.我不能说我已经听过这么多的数据库模式列表.

我还强烈推荐David C. Hay的数据模型模式和后续的元数据地图,它建立在第一个并且更加雄心勃勃和有趣.仅前言就是有启发性的.

Len Silverston的数据模型资源手册系列第1卷包含普遍适用的数据模型(员工,账户,运输,购买等),第2卷包含行业特定的数据模型(会计,医疗保健等),第3卷提供数据模型模式.

最后,虽然本书表面上是关于UML和对象建模的,但是Peter Coad的UML中的颜色建模提供了一个"原型"驱动的实体建模过程,其前提是任何对象/数据模型都有4个核心原型.



1> Michael Brow..:

Martin Fowler的签名系列中有一本名为Refactoring Databases的书.这提供了重构数据库的技术列表.我不能说我已经听过这么多的数据库模式列表.

我还强烈推荐David C. Hay的数据模型模式和后续的元数据地图,它建立在第一个并且更加雄心勃勃和有趣.仅前言就是有启发性的.

Len Silverston的数据模型资源手册系列第1卷包含普遍适用的数据模型(员工,账户,运输,购买等),第2卷包含行业特定的数据模型(会计,医疗保健等),第3卷提供数据模型模式.

最后,虽然本书表面上是关于UML和对象建模的,但是Peter Coad的UML中的颜色建模提供了一个"原型"驱动的实体建模过程,其前提是任何对象/数据模型都有4个核心原型.


关于Ambler书:不,你不能列出"插入一个列"或"创建FK约束"作为一个模式出于同样的原因.4个Gang的书没有列出作为模式的"for"循环.

2> 小智..:

这是一个已经开发了数百个免费数据库模式的绅士的链接.

http://www.databaseanswers.org/data_models/

也许如果您必须快速构建数据库,这将为您提供给定模式中的表和关系的起点.请记住,您可能需要修改此起点.我发现它非常有用.

其次,SQL Server Magazine偶尔会出现一个名为"The Data Modeler"的专栏,它非常具有教育意义,通常包含给定系统的完整模式.



3> S.Lott..:

设计模式不是简单的可重用解决方案.

根据定义,设计模式是可重用的.它们是在其他好的解决方案中检测到的模式.

一种模式并非简单可重复使用.但是,您可以按照模式实现羽绒设计.

关系设计模式包括以下内容:

    使用外键的一对多关系(主 - 细节,父 - 子)关系.

    与桥表的多对多关系.

    在FK列中使用NULL管理的可选一对一关系.

    Star-Schema:Dimension and Fact,OLAP设计.

    完全标准化的OLTP设计.

    维度中的多个索引搜索列.

    "查找表",包含一个或多个应用程序使用的PK,描述和代码值.为什么有代码?我不知道,但是当它们必须被使用时,这是一种管理代码的方法.

    单表.[有人称之为反模式; 这是一种模式,有时它很糟糕,有时它很好.]这是一张包含许多违反第二和第三范式的预先加入的东西的表格.

    数组表.这是一个通过在列中包含数组或值序列来违反第一范式的表.

    混合使用数据库.这是一个针对事务处理进行规范化的数据库,但有许多额外的索引用于报告和分析.这是一种反模式 - 不要这样做.无论如何,人们都会这样做,所以它仍然是一种模式.

大多数设计数据库的人都可以轻易地打破六个"这是另一个"; 这些是他们定期使用的设计模式.

这不包括使用和管理的行政和运营模式.


@lhnz:您无法从交易数据库设计中提取********报告 - 锁定报告会减慢交易速度.复杂的连接(一次又一次地执行)是对交易性能的另一种打击.您无法在一个数据库中执行这两项操作.要执行大量大型报表,必须将数据移动到星型模式中.星型模式模式针对报告进行了优化.移动数据会消除任何锁争用.

4> Edo..:

看看这个博客 - 数据库程序员.

他描述了一些数据库模式.



5> skaffman..:

Joe Celko的书很适合这类东西,特别是"SQL for Smarties".他对常见问题有一些创新的解决方案,其中大部分都是可重复使用的设计模式.

http://www.celko.com/books.htm



6> Galghamon..:

AskTom可能是有关Oracle DB最佳实践的最有用的资源.(我通常只输入"asktom"作为特定主题的谷歌查询的第一个单词)

我认为用关系数据库谈论设计模式并不合适.关系数据库已经是对问题的"设计模式"的应用(问题是"如何在保持其完整性的同时表示,存储和处理数据",并且设计是关系模型).其他approches(通常被认为是过时的)是Navigational和Hierarchical模型(我不知道其他许多其他模型).

话虽如此,您可能会将"数据仓库"视为数据库设计中有些独立的"模式"或方法.特别是,您可能有兴趣阅读有关Star模式的信息.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有