处理银行账户的数据库历史

时间:2015-07-17 05:43:20

标签: mysql database rdbms surrogate-key

我正在创建一个银行数据库,我在这里遇到了以下问题。

假设CustomerA有一个帐号4444,通过这个我访问与客户相关的所有详细信息,我有一个单独的主键,但我通常会查询此帐号。

现在,由于某种原因,CustomerA的账号从4444变为5555,而新的CustomerB的账号为4444.

我希望我的数据库能够处理这样的变化,我应该采用什么方法?

我开发的方法是:为帐号分配时间戳,这将有助于我有效查询以找出当前与帐号相关的客户名称。

但我无法设计查询:

  • 当我使用4444访问CustomerB时,仅显示与B相关的当前详细信息,而不是该4444指向CustomerA,
  • 客户A在被5555访问时显示所有详细信息,包括由4444存储在数据库中的一个

1 个答案:

答案 0 :(得分:0)

我将假设这是一项教育活动而非真正的银行应用程序。

仅凭帐号识别客户信息并不合理。客户可以拥有多个帐户,并且多个客户可以共同持有帐户,因此帐号不一定是客户的合适密钥。我建议你为此创建一个客户编号。

我严重怀疑任何一家银行都会不谨慎地为新客户分配旧账号。很可能这可能发生在自上次使用帐号以来已经过去多年之后,但可能不是您需要在数据库设计中预期的事情。同样,我不希望删除或覆盖客户帐号,因为帐户详细信息(包括帐号)通常会保留数年(可能是数十年)。