设计模式通常与面向对象的设计有关。
有用于创建和编程关系数据库的设计模式吗?
当然,许多问题必须具有可重用的解决方案。
示例包括表设计,存储过程,触发器等的模式。
是否存在类似于martinfowler.com的此类模式的在线存储库?
模式可以解决的问题示例:
- 存储分层数据(例如,具有类型的单个表与具有1:1密钥和差异的多个表...)
- 存储具有可变结构的数据(例如,通用列vs xml vs分隔列...)
- 对数据进行非规范化(如何在影响最小的情况下进行处理等)
设计模式通常与面向对象的设计有关。
有用于创建和编程关系数据库的设计模式吗?
当然,许多问题必须具有可重用的解决方案。
示例包括表设计,存储过程,触发器等的模式。
是否存在类似于martinfowler.com的此类模式的在线存储库?
模式可以解决的问题示例:
Answers:
Martin Fowler的签名系列中有一本书叫Refactoring Databases。这提供了重构数据库的技术列表。我不能说我已经听到这么多数据库模式列表。
我也强烈推荐David C. Hay的数据模型和后续的元数据地图,该地图建立在第一个基础上,并且更具雄心和吸引力。仅前言就具有启发性。
Len Silverston的数据模型资源手册丛书第1卷包含通用的数据模型(员工,帐户,运输,购买等),也是查找某些罐头数据库模型的好地方,第2卷包含行业特定的数据模型(会计,医疗保健等),第3卷提供了数据模型模式。
最后,尽管这本书表面上是关于UML和对象建模的,但Peter Coad的“ 使用UML进行颜色建模”提供了一个“原型”驱动的实体建模过程,前提是任何对象/数据模型都有4种核心原型
设计模式并非简单可重用的解决方案。
根据定义,设计模式是可重用的。它们是您在其他好的解决方案中检测到的模式。
模式不可重用。但是,您可以按照该模式实施向下设计。
关系设计模式包括:
使用外键的一对多关系(主从,父子关系)。
与桥表的多对多关系。
在FK列中使用NULL管理的可选一对一关系。
星型图:维度和事实,OLAP设计。
完全标准化的OLTP设计。
一个维度中的多个索引搜索列。
“查找表”,包含一个或多个应用程序使用的PK,描述和代码值。为什么要有代码?我不知道,但是当必须使用它们时,这是一种管理代码的方式。
单表。[有人称其为反模式;这是一种模式,有时是不好的,有时是好的。]这是一个包含很多预先连接的东西的表,它违反了第二和第三范式。
数组表。该表通过在列中包含数组或值序列来违反第一范式。
混合用途数据库。这是一个规范化的数据库,用于事务处理,但具有许多用于报告和分析的额外索引。这是一种反模式-不要这样做。人们还是这样做,所以它仍然是一种模式。
设计数据库的大多数人都可以轻松地打出六打“这是其中的另一个”。这些是他们定期使用的设计模式。
并且这不包括使用和管理的管理和运营模式。
经过多年的数据库开发,我可以说在开始之前还有一些不可行和一些问题需要回答:
问题:
不使用:
建议:
我希望这是一个良好的起点。
您的问题有点含糊,但我想UPSERT
可以认为是一种设计模式。对于未实现的语言MERGE
,存在许多解决问题的替代方法(如果存在合适的行UPDATE
;否则INSERT
)。