处理银行账户的数据库历史
Handling Database History for Banking Accounts
我正在创建一个银行数据库,但我遇到了以下问题。
假设客户 A 的帐号为 4444,通过此我可以访问与该客户相关的所有详细信息我有一个单独的主键,但我通常查询此帐号。
现在,由于某种原因,客户 A 的帐号从 4444 更改为 5555,新客户 B 的帐号为 4444。
我想让我的数据库处理这样的变化,我应该采用什么方法?
我开发的方法是:为账号分配一个时间戳,这将帮助我有效地查询以找出与当前账号相关的客户名称。
但我无法设计一个查询:
- 当我使用 4444 访问 CustomerB 时,仅显示与 B 相关的当前详细信息,而不是指向 CustomerA 的 4444,并且
- CustomerA 在被 5555 访问时显示所有详细信息,包括被 4444 存储在数据库中的详细信息
我假设这是一个教育练习,而不是真正的银行应用程序。
单靠账号来识别客户信息,其实意义不大。客户可以拥有多个账户,账户可以由多个客户共同持有,因此帐号不太可能成为客户的合适密钥。我建议您为此创建一个客户编号。
我严重怀疑任何银行会轻率地将旧帐号分配给新客户。自从上次使用帐号以来已经过去了很多年,这可能会发生,但这可能不是您在数据库设计中需要预期的事情。同样,我不希望删除或覆盖客户帐号,因为包括帐号在内的帐户详细信息通常会保存多年(可能几十年)。
我正在创建一个银行数据库,但我遇到了以下问题。
假设客户 A 的帐号为 4444,通过此我可以访问与该客户相关的所有详细信息我有一个单独的主键,但我通常查询此帐号。
现在,由于某种原因,客户 A 的帐号从 4444 更改为 5555,新客户 B 的帐号为 4444。
我想让我的数据库处理这样的变化,我应该采用什么方法?
我开发的方法是:为账号分配一个时间戳,这将帮助我有效地查询以找出与当前账号相关的客户名称。
但我无法设计一个查询:
- 当我使用 4444 访问 CustomerB 时,仅显示与 B 相关的当前详细信息,而不是指向 CustomerA 的 4444,并且
- CustomerA 在被 5555 访问时显示所有详细信息,包括被 4444 存储在数据库中的详细信息
我假设这是一个教育练习,而不是真正的银行应用程序。
单靠账号来识别客户信息,其实意义不大。客户可以拥有多个账户,账户可以由多个客户共同持有,因此帐号不太可能成为客户的合适密钥。我建议您为此创建一个客户编号。
我严重怀疑任何银行会轻率地将旧帐号分配给新客户。自从上次使用帐号以来已经过去了很多年,这可能会发生,但这可能不是您在数据库设计中需要预期的事情。同样,我不希望删除或覆盖客户帐号,因为包括帐号在内的帐户详细信息通常会保存多年(可能几十年)。