使用单个映射表将一个表映射到多个表

时间:2013-03-28 17:33:55

标签: sql database-design one-to-many

假设我有一个表EmailQueue,用于构建使用几个非相关进程发送给用户的电子邮件。电子邮件可以包含越来越多的不同“内容项目”,但现在我们只能说我们有新闻,活动和优惠。这些“内容项”中的每一个都已填充在各自的表中,并将有选择地添加到用户电子邮件中。

现在我有一个设计决定。

1
我可以保持标准化模式,并为电子邮件可以包含的每个“内容项”创建映射表。

|EmailId|NewsId| , |EmailId|OfferId| , ...

我在这个设计中看到的主要问题是,每次将新的“内容类型”集成到电子邮件系统时,都会产生大量的开销。数据库和对象映射都有。

2
我可以创建一个具有Type引用的映射表。

   |EmailId|ContentID|ContentType|

当然,最重要的问题是没有参照完整性。我觉得对象映射会更容易处理,添加新对象只需要添加一个新的ContentType行(当然还有所需的对象映射代码)。

这些解决方案中的一个比另一个好吗?或者是否有一种比我不知道的更好的解决方案?

我倾向于使用方法2,主要是因为这个项目需要快速发展,但担心我可能会后悔这个决定。

注意:我们使用亚音速作为我们的数据访问ORM,它通过键控关系处理对象图表做得不错(不完美)。我仍然可能需要将活动记录“内容”对象映射到域对象。

0 个答案:

没有答案