【问题标题】:design with similar tables用类似的桌子设计
【发布时间】:2010-12-04 00:53:07
【问题描述】:

我正在建立一个代表不同类型内容的数据库。我有一个链接(将其视为一个 URL),它可以随着时间的推移指向不同类型的数据,例如电话号码、电子邮件地址或网页。

我想我会制作这样的表格:

  • 内容电话
  • content_email
  • content_url

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

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

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

我一直在寻找一种将链接和内容类型挂钩的好方法。

编辑:

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

【问题讨论】:

    标签: database-design


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      以下是几个类似问题的示例:

      【讨论】:

        【解决方案3】:

        您似乎想在其中有一个修订字段

        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
        

        -丹尼尔

        【讨论】:

        • 我真的不想拥有所有的空值......它也不是真正的联系信息,可能有诸如车牌或地理定位之类的东西(没关系出于讨论的目的)。
        猜你喜欢
        • 2014-01-22
        • 2018-07-10
        • 2010-11-16
        • 2023-01-23
        • 1970-01-01
        • 1970-01-01
        • 2019-08-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多