26

我的问题是关于关系数据库系统中的继承建模。我有规范的数据模型,并且我有一些与从产品表继承某些属性的产品定价相关的字段,我想在MySQL关系数据库中对此继承进行建模,因此,我们如何在关系中执行继承建模数据库?“如何在关系数据库中进行继承建模?

谢谢。

回答

27

Martin Fowler在他的“企业应用程序体系结构模式”一书中对此进行了广泛讨论。获取这本书,并考虑:

  1. Single Table Inheritance
  2. Class Table Inheritance
  3. Concrete Table Inheritance

网站应该给你一些想法。您可能还想阅读inheritance mappers的部分。每种不同的方法都有其优点和缺点,所以要明智地选择。

+18

这个答案涉及购买一本书以完全实现。你有可能添加类似的网页资源吗? – 2010-10-27 23:11:01

3

关系数据库不处理对象(因此,继承) - 他们处理人际关系。你真正要问的是如何将你的对象结构映射到你的数据库 - 而答案是“它取决于你的ORM层”。

看一看Mapping Objects to Relational Databases: O/R Mapping In Detail文章的一些细节。如果您告诉我们您使用的是什么软件堆栈,您可能会得到更为切实的答案。

+1

这可能听起来很迂腐,但我不认为说关系数据库处理关系并不准确,而是他们被称为是因为他们处理这里定义的关系: http://en.wikipedia.org/ wiki/Relation_(数据库) – 2009-10-14 18:17:07

+1

@Ralph:Wiki是一个脓肿; confabulator没有认证。关系数据库处理实体和关系,而不是对象。如果RDb是真正的关系,则对象可以很容易地映射;如果不是,则不行。 – PerformanceDBA 2010-11-11 04:06:25

+3

您可以在没有ORM的情况下拥有表继承 – 2013-12-23 20:19:32

2

如果你只是想在一些网络文章看的读一本书,而不是,你可以找到通过谷歌搜索上的一些好文章:

Generalization Specialization Relational Modeling 

艮规范模式涵盖了很多相同的地那继承在OOP环境中。

如果您在

Generalization Specialization Object Modeling 

谷歌,你会得到一个全新的一批物品,其中大部分明确提及继承。

有一种设计技术总结在信息标签下面的标签中。这允许您使用子类表“扩展”类表,如果您允许奇怪使用单词“extend”。这涉及到一些工作,但这是值得的。

+0

尽管这在理想化的S.O.中并不是真正的答案。感觉,我发现它非常有用。 – derekv 2018-02-09 21:54:16

1

“数据库管理中的实际问题”第6章可能是一个有趣的读物。

正如所有其他章节,可能,但那些不直接关系到你的问题。