使用其他合成字段而不是主键来引用表

时间:2010-12-09 04:29:32

标签: sql database schema

我最近不得不使用一个应用程序,其中大多数表不通过主键相互引用,而是依赖于其他合成字段。例如,假设有表Person(id,name,token)和Pet(id,name,personToken)。一个人可以养很多宠物。 Pet.personToken将是引用Person.token的外键。

现在,如果我正在创建架构,我只需使用Person.id来引用其中的记录。我被告知应用程序使用“令牌”列,以便在不同服务器之间轻松迁移数据。

我的问题是,这是一个相当普遍的事情还是仅仅是奇怪的设计?

2 个答案:

答案 0 :(得分:1)

这似乎只是一种奇怪的设计。

我以前没见过这样的东西。

这似乎有点矫枉过正,我将不得不看到Index / Foreign键的实现。也不希望看到令牌生成器的实现 ...

当你说我被告知应用程序使用“令牌”列时,为了便于不同服务器之间的数据迁移。这是用于复制吗?或者只是从测试到开发?

总而言之,这似乎不是我遇到过的最佳设计。

答案 1 :(得分:1)

我不能说整个行业是否普遍存在,但我在过去的许多应用程序中都看到了同样的事情。

我认为这是一个奇怪的设计,最终会被放到位,因为对系统的初始设计没有足够的考虑。