我最近不得不使用一个应用程序,其中大多数表不通过主键相互引用,而是依赖于其他合成字段。例如,假设有表Person(id,name,token)和Pet(id,name,personToken)。一个人可以养很多宠物。 Pet.personToken将是引用Person.token的外键。
现在,如果我正在创建架构,我只需使用Person.id来引用其中的记录。我被告知应用程序使用“令牌”列,以便在不同服务器之间轻松迁移数据。
我的问题是,这是一个相当普遍的事情还是仅仅是奇怪的设计?
答案 0 :(得分:1)
这似乎只是一种奇怪的设计。
我以前没见过这样的东西。
这似乎有点矫枉过正,我将不得不看到Index / Foreign键的实现。也不希望看到令牌生成器的实现 ...
当你说我被告知应用程序使用“令牌”列时,为了便于不同服务器之间的数据迁移。这是用于复制吗?或者只是从测试到开发?
总而言之,这似乎不是我遇到过的最佳设计。
答案 1 :(得分:1)
我不能说整个行业是否普遍存在,但我在过去的许多应用程序中都看到了同样的事情。
我认为这是一个奇怪的设计,最终会被放到位,因为对系统的初始设计没有足够的考虑。