【发布时间】:2015-07-17 05:43:19
【问题描述】:
我正在创建一个银行数据库,但这里有以下问题。
假设 CustomerA 有一个帐号 4444,通过它我可以访问与该客户相关的所有详细信息,我有一个单独的主键,但我通常会查询此帐号。
现在,由于某种原因,客户 A 的帐号从 4444 更改为 5555,并且新客户 B 的帐号为 4444。
我希望我的数据库能够处理这样的变化,我应该采用什么方法?
我开发的方法是:为账号分配时间戳,这将有助于我有效地查询以找出当前账号相关的客户名称。
但我无法设计一个查询:
- 当我使用 4444 访问 CustomerB 时,仅显示与 B 相关的当前详细信息,而不是 4444 指向 CustomerA,并且
- 当 5555 访问客户 A 时,会显示所有详细信息,包括 4444 存储在数据库中的详细信息
【问题讨论】:
-
最直接的解决方案是不使用改变值的字段作为外键/主键。在这种情况下,这意味着仅使用帐号来查找帐户 ID,然后将其用作标识符。
-
好的,但我不能这样做,现在我已经通过帐号访问所有内容
-
好吧,如果仅通过帐号无法找到您要查找的内容,而您只有一个帐号...
-
帐号不应更改
-
客户帐号可能会发生变化。当然,变化的不是一个数字;将号码分配给特定帐户会发生变化。
标签: mysql database rdbms surrogate-key