数据库结构设计求助
假设我们用户表有 2 个字段,姓名和工作履历,但是每个人的履历不同,有的人履历有很多,有的人可能则很少。现在我想搜索某一个人所有履历,再通过所有履历去搜索其他表,例如找出张三与其互动的潜在同事,互动可能是别的表的数据。请问有什么高效的存储方案吗?请注意上面的场景是我抽象出来的,履历只是个例子,我要存的可能非常的大,非常感谢大神的帮助。
方案 1:履历用分隔符分开,履历字段可以存个 json 什么的
姓名 履历
张三 1|2|3
李四 0|9
优点:每次搜索一个人,直接把履历拿出来解析了去搜索别的表,没有重复保存非履历字段
缺点:随着某一个人履历越来越多,拿出来解析也相当占用资源,我们假设履历有几十 M 甚至几百 M 大,而我们可能只需要其中某几段履历而非全部履历,但是这却要整个解析用户的全部履历,以后大量查询性能堪忧。
方案 2:每个用户的履历多存几行
姓名 履历
张三 1
张三 2
张三 3
李四 0
李四 9
优点:这种方式如果要某几段张三的履历的时候可以之间单拿出来搜索,并用结果搜索其他的表。
缺点:张三这个字段存了好几次,这里的例子当然只有姓名这一个字段,实际上可能会有很多,当张三的履历很多的时候,姓名字段将会存储太多次了。
请教各位大神,是否有好的解决方案,我是个数据库的新手菜鸟,望大家多多指正,谢谢。
我目前考虑使用的数据库是 TiDB ,如果是这个数据库的话,是否有什么特定的技巧可以减少重复存储,谢谢。
假设我们用户表有 2 个字段,姓名和工作履历,但是每个人的履历不同,有的人履历有很多,有的人可能则很少。现在我想搜索某一个人所有履历,再通过所有履历去搜索其他表,例如找出张三与其互动的潜在同事,互动可能是别的表的数据。请问有什么高效的存储方案吗?请注意上面的场景是我抽象出来的,履历只是个例子,我要存的可能非常的大,非常感谢大神的帮助。
方案 1:履历用分隔符分开,履历字段可以存个 json 什么的
姓名 履历
张三 1|2|3
李四 0|9
优点:每次搜索一个人,直接把履历拿出来解析了去搜索别的表,没有重复保存非履历字段
缺点:随着某一个人履历越来越多,拿出来解析也相当占用资源,我们假设履历有几十 M 甚至几百 M 大,而我们可能只需要其中某几段履历而非全部履历,但是这却要整个解析用户的全部履历,以后大量查询性能堪忧。
方案 2:每个用户的履历多存几行
姓名 履历
张三 1
张三 2
张三 3
李四 0
李四 9
优点:这种方式如果要某几段张三的履历的时候可以之间单拿出来搜索,并用结果搜索其他的表。
缺点:张三这个字段存了好几次,这里的例子当然只有姓名这一个字段,实际上可能会有很多,当张三的履历很多的时候,姓名字段将会存储太多次了。
请教各位大神,是否有好的解决方案,我是个数据库的新手菜鸟,望大家多多指正,谢谢。
我目前考虑使用的数据库是 TiDB ,如果是这个数据库的话,是否有什么特定的技巧可以减少重复存储,谢谢。