【问题标题】:Sql column without foreign key reference没有外键引用的sql列
【发布时间】:2013-10-19 00:09:13
【问题描述】:

在我的数据库中,我需要创建一个包含临时数据的表,稍后将删除部分数据。该表将包含 IP 列。问题是我已经将 IP 存储在其他表中,并且在许多其他表中引用了它。因此,如果我在我的新表(将包含临时数据的表)中创建外键约束并稍后删除行,如果新列具有外键引用,我将在原始表中拥有无用的 IP。

Table1 列:

  IP,
  Col1

Table2 列:

  IP,
  Col1,
  Col2

所以我的问题是,在需要时创建没有外键引用的列是一种好方法吗? db design 可以不在 Table2 中为 IP 列创建外键引用吗?

【问题讨论】:

    标签: sql foreign-keys foreign-key-relationship


    【解决方案1】:

    在某些情况下,可以在没有 FK 引用的情况下创建列,但您可能面临的问题是,由于没有约束,您可以从一个表中删除数据并在另一个表中拥有孤立记录。

    此外,没有什么可以强制您在一个表中输入的数据也存在于另一个表中。

    这里的主要问题是,虽然您将 IP 存储在其他表中,但您是否需要使用 IP 列将新表连接到现有表?如果不是,那么你对 FK 没有用处。

    【讨论】:

    • 我不需要以任何方式加入新表。满足一个条件后,新表中的数据将被删除。以后不再加入,也不再使用该数据。
    • 那你就不需要FK了:)
    • 我从一开始就知道 :) 但它是一个好的数据库设计吗?我从未在任何地方看到过这种方法。
    • 如果您不需要两个表之间的关系,这是一个很好的设计,仅仅因为您有两个匹配的数据集并不自动意味着它们必须具有关系。在你的情况下,我觉得 FK 不会给你带来任何好处
    • 是的,这听起来也很像我 :)
    【解决方案2】:

    我假设您使用一个表来存储会话数据,并使用另一个表来更永久地存储有关 IP 的数据。

    您可以将会话表中的 IP 用作该表的外键,以获取有关 IP 的更多信息。如果您想查询当时正在使用您的应用程序的所有人的信息,这将非常有用。

    【讨论】:

    • 是的,但我不需要新表中的数据。在满足一个条件后,该表中的数据将被删除。无需连接
    猜你喜欢
    • 2016-11-30
    • 1970-01-01
    • 2012-09-30
    • 2011-03-11
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    相关资源
    最近更新 更多