【问题标题】:Duplicate columns values within a table表中的重复列值
【发布时间】:2009-06-10 13:57:31
【问题描述】:

我的场景是我有一个包含 A、B、C 和 D 列的表。A 是 PK,B 和 C 都是外键。

我打算在这个表 E 中添加一个 exta 列,在应用程序中这样做的副作用是它会导致插入一行,之后在 B 列和 C 列中会有重复的值。

这是否违反任何参考规则?我假设是这样,因为如果在这些外键上对该表进行任何连接,那么它们将不再返回唯一的行。

谢谢,

【问题讨论】:

    标签: sql-server sql-server-2005 database-design


    【解决方案1】:

    如果关系是一对多的,您不会因为多行引用单个外部行而违反引用规则。

    以这种方式添加额外的列可能会破坏现有应用程序。像这样的查询,过去只返回一行,现在可能返回多行:

     select *
     from table
     where b=1 and c=2
    

    【讨论】:

      【解决方案2】:

      如果您在应用程序中广泛使用了相关子查询,您可能仍然不安全,因为新规则可能意味着过去只返回一条记录的子查询现在可能在某些情况下返回两条或更多条记录,然后它将中断。仅仅因为该表允许一对多记录并不意味着所有相关的子查询都没有被写入仅过滤到一条记录(因为它们不能以任何其他方式工作),因此它们可能会受到更改的影响。这(以及性能)是我从不使用相关子查询的原因之一。

      【讨论】:

      • 感谢 HLGEM 的评论。这是一个非常有效的观点。我认为连接已被使用而不是子查询,所以我在这里可能很幸运。再次感谢
      猜你喜欢
      • 2019-05-07
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2019-04-22
      • 2017-03-30
      • 2018-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多