猿问

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

最近在看别人的项目,发现有的项目将用户表和用户余额表分开来创建

用户 -----> user 表
用户余额 ----> user_balance 表(里面包含了用户id和用户的余额数量)

但是有的人又将用户余额表和用户表创建为一张表

所以就懵逼了,不知道哪种更好一点??

分开来创建的话不是冗余了???
而且每次查询用户余额的时候先去用户表查询用户ID再去用户余额表查询余额 不是查询了两次 让数据库开销更大吗????

料青山看我应如是
浏览 561回答 11
11回答

素胚勾勒不出你

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

陪伴而非守候

建议是分开 主要是看自身业务要求形态,具体情况具体分析 分开好处: 不是用户表自身属性 分开,更容易控制金额的变化(尤其是分布式下)

倚天杖

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

慕莱坞森

这种设计方法,简而言之就是(用户简单信息表->用户详细信息表)这种模式分开。如果写在了同一张表中: 优点:用户进入个人中心查询详细信息只需要一次查询而不是用户表连接查询。提高效率。 缺点:用户信息表字段过多,比如有20个用户信息字段,那么用户表就有20个字段。登陆注册的时候,只需要用户名和密码的,但是表过于大,会降低效率。 如果分开两张表: 优点:用户简单信息表,只保存用户id,用户名,密码,等必查项。对用户登录注册比较方便。毕竟详细信息不会每天都查。提高效率 缺点:查询详细信息的时候,需要表连接,降低效率。 以上这只是最浅显的分析,容易理解。更深层次的分析如何设计数据库,还需要更多的场景和业务需求

阿晨1998

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

ibeautiful

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

红糖糍粑

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

跃然一笑

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

慕的地10843

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

Smart猫小萌

顶楼上。。。
随时随地看视频慕课网APP
我要回答