【问题标题】:Should I always design around foreign keys?我应该总是围绕外键设计吗?
【发布时间】:2010-11-05 22:25:53
【问题描述】:

例如,我有一个标签查找表,将标签连接到 3 种不同类型的表 (ObjectTypes)。每个都有标签,但它们不共享。

所以我可以这样做

标签 |对象类型 |对象 ID |

当我一起加入表格时,我会在加入之前按对象类型进行过滤。

现在我知道这会破坏在 ObjectId 列上执行外键的能力,感觉可能是三个表中的任何一个。

问题是..这是一件可怕的事情吗?如果是,为什么?

另一个选项是为每个对象创建一个查找表,除非有更好的方法。

【问题讨论】:

  • 这可能是我不应该为未来设计的一个案例。添加其他对象表会减少设计工作,但从长远来看,它可能会使事情变得更糟。

标签: database-design


【解决方案1】:

不要考虑外键,考虑是否要在数据库级别强制执行参照完整性。如果没有 RDBMS 强制执行的引用完整性,您将不得不自己在应用程序中强制执行它,或者不遗余力地编写复杂的数据库约束来执行 RDBMS 已经以外键形式提供给您的操作。

但实际上,您没有任何充分的理由将三个概念表存储在一个大表中。仅仅因为它们具有相同的列而将多个表的数据存储在同一个表中并不是一个好主意。它们具有相同的架构,但它们不是同一个表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-04
    • 2011-12-22
    • 1970-01-01
    • 2012-01-10
    • 2011-01-24
    • 2010-11-05
    • 2019-07-20
    • 1970-01-01
    相关资源
    最近更新 更多