如何在关系数据库中进行继承建模?

Rac*_*hel 31 mysql database inheritance data-modeling class-table-inheritance

我的问题是关系数据库系统中的继承建模.我有规范的数据模型,并且我有一些与产品定价相关的字段,从产品表继承某些属性,我想在MySQL关系数据库中建模这种继承,所以,

"我们如何在关系数据库中进行继承建模?"

谢谢.

Ric*_*dOD 37

Martin Fowler在他的"企业应用程序架构模式"一书中对此进行了广泛的讨论.获取本书并查看:

  1. 单表继承
  2. 类表继承
  3. 具体表继承

本网站应该给你一些想法.您可能还想阅读有关继承映射器的部分.每种不同的方法都有其优点和缺点,因此明智地选择.

  • 这个答案涉及购买一本完全实现的书.你有可能添加类似的网络资源吗? (27认同)

Wal*_*tty 6

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

Generalization Specialization Relational Modeling
Run Code Online (Sandbox Code Playgroud)

gen-spec 模式涵盖了很多与 OOP 环境中的继承相同的基础。

如果你谷歌

Generalization Specialization Object Modeling
Run Code Online (Sandbox Code Playgroud)

你会得到一批全新的文章,其中大部分都明确提到了继承。

在 info 标签下的以下标签总结了一种设计技术。这允许您使用子类表来“扩展”类表,如果您允许奇怪地使用“扩展”一词。需要做一些工作,但这是值得的。


Chs*_*y76 5

关系数据库不处理对象(以及继承)——它们处理关系。您真正要问的是如何将对象结构映射到数据库 - 答案是“这取决于您的 ORM 层”。

查看将对象映射到关系数据库:O/R 映射详细文章了解一些详细信息。如果您告诉我们您使用的是什么软件堆栈,您可能会得到更中肯的答案。

  • 你可以在没有 ORM 的情况下继承表 (3认同)
  • 这可能听起来很迂腐,但我认为说关系数据库处理关系并不准确,而是这样称呼它们是因为它们处理如下定义的关系:http://en.wikipedia.org/wiki/Relation_(数据库) (2认同)