数据库设计 优先多字段还是多条记录?

问题描述

比如有 1000W 个值,不考虑相关性的前提下 是以每个值一条数据 (即 1000W 条数据)的形式存储 还是以 每条数据四个字段 存到 250W条数据中?

问题出现的环境背景及自己尝试过哪些方法

刚进一家公司,公司老大让以多条数据的方式存储,打比方,用户有人民币余额,美元余额,日元余额。从我的理解是,应当一条数据中存储三个字段,这仨字段分别代表相应的数值,但目前技术组长以及总监给出的解决方案(已经在用的)是以 用户 ID 、余额类型、余额额度这样表示 然后存在一张表中,也就是说 这一张表中 通过用户的 ID 会搜到三条结果 这三条结果就是 用户的三种余额。
我并非专业的数据库开发以及维护相关人员。我只是日常工作中会涉及到数据库所以稍微懂一点点而已,我认为应该用第一种,即一条数据中多个字段来构建这个表。但是其中的道理以及相关的专业解释并不是很明确,还希望有大神能够给予专业的解答。谢谢

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 3.8k
2 个回答

没什么好说的,首先表结构应根据具体业务来定,你老大的设计思路是解耦了两张表,三种不同的币种和用户信息你存储在一个表里是一种解决方案,讲用户信息和币种解耦两张表存储也是一种解决方案,那么自然是解耦开好啊,这样你以后再增加一个币种就不需要修改原表结构了不是?

没有完美的设计,你举得例子中你老大是考虑后续可能会接入其它的币种,记住避免对核心表表结构的修改是非常有必要的一件事,还以此为例,一个用户同时拥有三种币种的可能性较低,所以记录一个用户的资产状态很有可能只要一个币种是有效的,剩下的币种都是无意义的值0,对于这种不可用于扩展的字段会导致大量信息冗余,占用mysql本身的存储空间,尤其是随着币种的增加这种浪费就越多。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题