为了账号安全,请及时绑定邮箱和手机立即绑定

数据表设计的一个小小疑问

数据表设计的一个小小疑问

PHP
料青山看我应如是 2019-03-07 15:04:19
最近在看别人的项目,发现有的项目将用户表和用户余额表分开来创建 用户 -----> user 表用户余额 ----> user_balance 表(里面包含了用户id和用户的余额数量) 但是有的人又将用户余额表和用户表创建为一张表 所以就懵逼了,不知道哪种更好一点?? 分开来创建的话不是冗余了???而且每次查询用户余额的时候先去用户表查询用户ID再去用户余额表查询余额 不是查询了两次 让数据库开销更大吗????
查看完整描述

11 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

分开,为未来业务扩展做准备

查看完整回答
反对 回复 2019-03-18
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

建议是分开

主要是看自身业务要求形态,具体情况具体分析

分开好处:

  1. 不是用户表自身属性
  2. 分开,更容易控制金额的变化(尤其是分布式下)
查看完整回答
反对 回复 2019-03-18
?
倚天杖

TA贡献1828条经验 获得超3个赞

从领域模型来看,余额不是用户自身的属性,【用户】依赖【余额】,【余额】关联【用户】,所以分开存储更合理。如果因为余额的变更而引起用户信息改变,或删除用户后造成用户余额不可访问,这个听起来是有问题的。况且用户和余额可能分别有各自的状态。

查看完整回答
反对 回复 2019-03-18
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

这种设计方法,简而言之就是(用户简单信息表->用户详细信息表)这种模式分开。
如果写在了同一张表中:

优点:用户进入个人中心查询详细信息只需要一次查询而不是用户表连接查询。提高效率。
缺点:用户信息表字段过多,比如有20个用户信息字段,那么用户表就有20个字段。登陆注册的时候,只需要用户名和密码的,但是表过于大,会降低效率。

如果分开两张表:

优点:用户简单信息表,只保存用户id,用户名,密码,等必查项。对用户登录注册比较方便。毕竟详细信息不会每天都查。提高效率
缺点:查询详细信息的时候,需要表连接,降低效率。

以上这只是最浅显的分析,容易理解。更深层次的分析如何设计数据库,还需要更多的场景和业务需求

查看完整回答
反对 回复 2019-03-18
?
阿晨1998

TA贡献2037条经验 获得超6个赞

用户余额字段如果只有一个的话建议放在用户表,余额不是大字段,没必要拆分.
数据库设计的两个基本要求:

  1. 能实现需求
  2. 能保证性能
查看完整回答
反对 回复 2019-03-18
?
ibeautiful

TA贡献1993条经验 获得超5个赞

看业务需求,余额并非用户属性,而是属于比较敏感的数据,分开比较好

查看完整回答
反对 回复 2019-03-18
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

范式和反范式都需要看业务需求。

查看完整回答
反对 回复 2019-03-18
?
跃然一笑

TA贡献1826条经验 获得超6个赞

这是一种取舍,余额如果特别重要,比如有些业务场景下和钱有关系,很敏感下,应该单独存放在扩展表里,如果仅仅是和user表内数据差不多的,那就放user表里好了,

查看完整回答
反对 回复 2019-03-18
?
慕的地10843

TA贡献1785条经验 获得超8个赞

拆开

拆开的同时保留用户表的数据作为缓存字段。余额表最近一条记录应该保存 用户id、发生时间、操作符号、产生金额、操作后结余金额,提高可靠性。
如果用户表的金额 和 操作表的对不上则说明存在异动。

查看完整回答
反对 回复 2019-03-18
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

顶楼上。。。

查看完整回答
反对 回复 2019-03-18
  • 11 回答
  • 0 关注
  • 560 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信