代码之家  ›  专栏  ›  技术社区  ›  littlegreen

在使用代理键的情况下是否有单独的表?

  •  2
  • littlegreen  · 技术社区  · 16 年前

    我一直在阅读Stack Overflow和其他网站上关于复合键和代理键的激烈辩论,尽管对给出的一些论点感到困惑,但我觉得我知道每种方法的优缺点。

    我不确定是否要这样做,因为这5个字段中的每一个都经常被用作其他表中的选择标准。我在它们上面定义了索引,按照一定的自然顺序,因此选择操作执行得很快。如果我将所有5个字段迁移到一个单独的表中,我担心当我想选择其中的前三个字段时,我必须定义一个连接并从中进行选择,但由于该连接刚刚生成,因此没有在该连接上定义索引,我将遭受性能损失。

    或者我应该为每个表(包括5个键)定义一个视图,并在其上建立索引吗?

    我感到困惑,在输入了所有这些之后,我倾向于再次坚持使用自然键。 帮忙?

    2 回复  |  直到 16 年前
        1
  •  2
  •   a1ex07    16 年前

    我建议有一个带有5个唯一字段+代理主键的表。在该表中,您可以在每个字段上创建索引,并在5个字段上创建唯一约束。然后,在其他表中不再有5个字段,而是只有1列。

        2
  •  1
  •   Hank Gay    16 年前

    除非您对引入代理密钥有一个非常明确的目标,否则只要它对您有效,我可能就不使用它。