设计与类似的表

时间:2010-12-04 00:53:07

标签: database-design

我正在建立一个代表不同类型内容的数据库。我有一个链接(可以把它想象成一个URL),它可以指出不同类型的数据,比如电话号码,电子邮件地址或网页。

我想我会制作像:

这样的表格
  • content_phone
  • content_email
  • CONTENT_URL

然后我还有一个需要指向特定类型内容的链接表。

链接指向的内容随时间变化(时间X指向URL时间X + 1指向电话号码等等)

内容类型没有共同的字段,我不希望它们会出现(不确定这是否会有所不同)。

我被困在了将链接和内容类型挂钩在一起的好方法。

编辑:

内容类型有大量不相关的表。有些表可能有10个字段。

3 个答案:

答案 0 :(得分:1)

创建一个父表(例如,称为“内容”),该表具有来自其他内容表的密钥。这样你就可以在其他地方引用一个表而不是几个不同的可能性。这避免了需要可空列。例如:

http://consultingblogs.emc.com/davidportas/archive/2007/01/08/Distributed-Keys-and-Disjoint-Subtypes.aspx

答案 1 :(得分:1)

当实体之间存在一些共同字段时,通常建议使用超类型/子类型,但在您的示例中,无论如何它都可能有用。

以下是类似问题答案的几个例子:

答案 2 :(得分:0)

看起来你想在那里有一个修订字段

create table contact
   person_id
   phone ..
   email ..
   url ..
   updated_at
)

然后你可以从表中拉出

SELECT * FROM person JOIN contact ON ( person.id = contact.person_id ) ORDER BY contact.updated_at DESC LIMIT 1

-daniel