mySQL中的默认信用卡标志

时间:2014-01-22 17:30:48

标签: mysql database-design relational-database

我将信用卡和user_id的引用存储在卡片表中。我需要修改设计,以便用户可以注册多张卡。在这样做时,我需要存储哪个卡是默认卡。

用户可以删除所有卡,并可以选择默认卡。

我正在考虑像这样在牌桌上添加一个标志。

--Cards Table--

card_ref | user_id | default
------------------------------
  72138  |    12   |    0
  42356  |    12   |    1

当用户更改其默认卡时,我是否必须先将所有其他默认标志设置为0?我应该将all设置为0还是选择默认设置并设置为0。

插入新卡时,我是否需要检查是否有现有卡,如果没有,请将新卡设为默认卡?

1 个答案:

答案 0 :(得分:1)

您的具体问题的答案是:

不,您不必对与该用户关联的所有卡执行更新。只有当前的默认卡和新的默认卡记录才需要更新。这当然假设您的记录没有损坏,并且由于先前的代码更新失败或错误而导致一个用户有多个默认卡。

可能,你的第二个问题最终是一个设计考虑因素。你需要一张默认卡吗?如果是,那么答案是肯定的,您需要查询现有的卡并相应地更新默认值。

Gordon Linoff提供了一个很好的选择。

另一种替代方法是通过添加一个新表来扩展您的模式,该表仅用于保存默认卡信息(用户ID和卡ID为字段),并以用户ID作为主键。这种替代方案的优点是,您不会隐式地将新数据(可能您不希望现有数据使用者有权访问)暴露给现有代码或执行查询时提取整个记录的查询。