最近在看别人的项目,发现有的项目将用户表和用户余额表分开来创建
用户 -----> user 表用户余额 ----> user_balance 表(里面包含了用户id和用户的余额数量)
但是有的人又将用户余额表和用户表创建为一张表
所以就懵逼了,不知道哪种更好一点??
分开来创建的话不是冗余了???而且每次查询用户余额的时候先去用户表查询用户ID再去用户余额表查询余额 不是查询了两次 让数据库开销更大吗????
11 回答
倚天杖
TA贡献1828条经验 获得超3个赞
从领域模型来看,余额不是用户自身的属性,【用户】依赖【余额】,【余额】关联【用户】,所以分开存储更合理。如果因为余额的变更而引起用户信息改变,或删除用户后造成用户余额不可访问,这个听起来是有问题的。况且用户和余额可能分别有各自的状态。
慕莱坞森
TA贡献1810条经验 获得超4个赞
这种设计方法,简而言之就是(用户简单信息表->用户详细信息表)这种模式分开。
如果写在了同一张表中:
优点:用户进入个人中心查询详细信息只需要一次查询而不是用户表连接查询。提高效率。
缺点:用户信息表字段过多,比如有20个用户信息字段,那么用户表就有20个字段。登陆注册的时候,只需要用户名和密码的,但是表过于大,会降低效率。
如果分开两张表:
优点:用户简单信息表,只保存用户id,用户名,密码,等必查项。对用户登录注册比较方便。毕竟详细信息不会每天都查。提高效率
缺点:查询详细信息的时候,需要表连接,降低效率。
以上这只是最浅显的分析,容易理解。更深层次的分析如何设计数据库,还需要更多的场景和业务需求
跃然一笑
TA贡献1826条经验 获得超6个赞
这是一种取舍,余额如果特别重要,比如有些业务场景下和钱有关系,很敏感下,应该单独存放在扩展表里,如果仅仅是和user表内数据差不多的,那就放user表里好了,
慕的地10843
TA贡献1785条经验 获得超8个赞
拆开
拆开的同时保留用户表的数据作为缓存字段。余额表最近一条记录应该保存 用户id、发生时间、操作符号、产生金额、操作后结余金额,提高可靠性。
如果用户表的金额 和 操作表的对不上则说明存在异动。
- 11 回答
- 0 关注
- 560 浏览
添加回答
举报
0/150
提交
取消