菜鸟求助,如何解决数据库一行中某一个字段可能存储多个元素并搜索的问题,谢谢大神。

2022-01-01 05:22:38 +08:00
 hkhk366
数据库结构设计求助
假设我们用户表有 2 个字段,姓名和工作履历,但是每个人的履历不同,有的人履历有很多,有的人可能则很少。现在我想搜索某一个人所有履历,再通过所有履历去搜索其他表,例如找出张三与其互动的潜在同事,互动可能是别的表的数据。请问有什么高效的存储方案吗?请注意上面的场景是我抽象出来的,履历只是个例子,我要存的可能非常的大,非常感谢大神的帮助。

方案 1:履历用分隔符分开,履历字段可以存个 json 什么的
姓名 履历
张三 1|2|3
李四 0|9

优点:每次搜索一个人,直接把履历拿出来解析了去搜索别的表,没有重复保存非履历字段
缺点:随着某一个人履历越来越多,拿出来解析也相当占用资源,我们假设履历有几十 M 甚至几百 M 大,而我们可能只需要其中某几段履历而非全部履历,但是这却要整个解析用户的全部履历,以后大量查询性能堪忧。

方案 2:每个用户的履历多存几行
姓名 履历
张三 1
张三 2
张三 3
李四 0
李四 9
优点:这种方式如果要某几段张三的履历的时候可以之间单拿出来搜索,并用结果搜索其他的表。
缺点:张三这个字段存了好几次,这里的例子当然只有姓名这一个字段,实际上可能会有很多,当张三的履历很多的时候,姓名字段将会存储太多次了。

请教各位大神,是否有好的解决方案,我是个数据库的新手菜鸟,望大家多多指正,谢谢。

我目前考虑使用的数据库是 TiDB ,如果是这个数据库的话,是否有什么特定的技巧可以减少重复存储,谢谢。
1373 次点击
所在节点    数据库
5 条回复
dayeye2006199
2022-01-01 06:05:36 +08:00
关系型数据库设计不可以吗?

用户表 - 用户 id | 姓名 | 其他信息
公司表 - 公司 id | 公司名称 |其他信息
履历表 - 用户 id | 公司 id | 职位 |起止时间
powinds
2022-01-01 07:44:48 +08:00
用户和履历之间建张中间表,了解一下数据库三范式
vanton
2022-01-01 08:37:33 +08:00
履历单独存张表啦,履历表可以多几个字段,存的时候就提取关键信息。
用户表越简单越好,uid 对上就行。

为啥要在读数据的时候做那么多工作?
这种工作是存的时候做的。
johnsona
2022-01-01 19:13:50 +08:00
一楼
jones2000
2022-01-02 17:05:51 +08:00
mongo 存呗, 搜索直接同步到 es 上

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/825617

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX