数据库结构设计中那些不得不冗余的字段

在说正题前我们先看一个比较常见的用户提现表结构:



用户提现(Withdraw)需要提供姓名、银行及卡号等信息,如上图所示,通过关联后这些信息可以从用户表(User)中读取,这样的结构也符合数据库范式。

现在我们来假设一种情况:某个用户申请提现,公司财务审核并成功处理了这笔提现,后来用户换卡,更改了帐户中的银行卡信息,自然,提现的卡号也随之变化,结果是公司财务查不出之前是给哪张卡提现了,问题严重了。

解决方法

在提现表增加姓名、银行及卡号等字段,这些字段虽然用户表中也存在,产生了冗余,但从实际应用出发,却是非常必要的:



类似的情况还存在于发货单中的收件人信息等等。

评论: 0 | 引用: 0 | 查看次数: 3630
发表评论
登录后再发表评论!