首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将对象继承映射到数据模型?

如何将对象继承映射到数据模型?
EN

Stack Overflow用户
提问于 2013-02-11 22:04:23
回答 1查看 317关注 0票数 1

我有一个具有抽象基类和5-6类的对象模型,继承自该基类。我想设计一个适当的关系数据模型来存储它们。设计数据模型的最佳方法是什么?

下面是一个想要跟踪发送的消息的虚构应用程序的快速示例:

消息(基类)

  • 长id
  • 日期creationDate
  • 字符串文本

EmailMessage (扩展消息)

  • 字符串recipientList

PhoneMessage (扩展消息)

  • 字符串phoneNumber

我倾向于为每个类创建一个单独的表,其中每个表email_messagephone_message只包含它们的私有字段。它的美妙之处在于它反映了对象模型,并保持了清晰的关注点分离。不好的是,数据必须加载两次:一次用于确定具体类型,另一次用于从具体表加载剩余数据。

我发现这是一个很常见的问题,我还没有找到一个令人满意的答案。我将感谢你的任何建议。你的经历是什么?谢谢。

皮特

EN

回答 1

Stack Overflow用户

发布于 2013-02-11 22:36:30

有多种方法可以做到这一点,而选择取决于你。常见的解决方案是单表继承(STI)、多表继承(MTI),也称为类表继承(CTI),以及具体的表继承。

使用STI,父类的所有子类的所有列都定义在一个表中。不使用某些列的类将其值存储为NULL。类的类型通常存储在另一列中。

使用MTI,所有超类列都存储在一个父表中,而每个子类的单独表则保存它们的唯一字段。子类表上的外键链接回父记录。

具体表继承更进一步,需要为每个子类提供一个完全独立的表。

有许多文章介绍了各种方法-- STI通常是最简单的实现方法,而MTI/CTI可能避免STI固有的某些问题(所需的可空字段是常见的)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14821752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档