1

我试图找出一种方法来设计我的 SQL Azure 数据库。有很多关于你的主键应该是什么(int 与 guid)以及两种方法的优缺点的信息,所以我知道那里正在进行的战争:)

但是,我想通过在我的表中添加以下三列来应用两全其美:

  • 内部标识
    • int 类型的 IDENTITY
    • 定义为聚集索引
    • 用于连接
    • 数据库生成的默认值
    • 仅在表中唯一
    • 仅在内部使用
    • 永远无法改变
  • 外部标识
    • 指南
    • 客户端(或域)生成的默认值
    • 全球唯一
    • 内用外用。
    • 永远无法改变
  • 网址标题
    • 一个字符串
    • 由域生成
    • 仅在表中唯一
    • 公共 url 中使用的实体的用户友好表示
    • 可以改变(但最好不要改变)

通过这样做,由于 InternalId,它将具有整数主键的性能,但由于 ExternalId,它仍然足够灵活。

我不是数据库专家,远非如此,所以我想听听您的意见,这是否可行,或者只是荒谬可笑?

4

1 回答 1

2

在一个表中为不同的目的使用几个不同的键并没有什么不寻常的。确保您强制执行所有具有唯一性约束的键并创建适当的索引。确保您的开发人员了解每个密钥的用途以及他们以一致的方式使用它们。

于 2013-08-13T16:56:23.540 回答