84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
我见过一种设计,在数据库里面有一张用户关系表,表结构如下
CREATE TABLE relation ( relation_id private key AUTO_INCREMENT,//关系id relation_fans text,//粉丝数据 relation_black text,//黑名单数据 relation_action text//关注数据 ); 这样的设计有什么用意,如果要取得用户的关系数据 怎么取得?
走同样的路,发现不同的人生
text类型?是存些什么东西呢?很好奇。另外 private key 是笔误还是?
text
private key
你列出的这个 demo 里,我看不出来如何获得用户的关系数据。我自己设计时(当然也是我认为合理的方式)是这样的(不完全照搬我自己的,是根据你的这个表改了一下):
CREATE TABLE relation ( id PRIMARY KEY AUTO_INCREMENT, //主键,自增 from_user_id big integer, // 用户 A 的 id to_user_id big integer,// 用户 B 的 Id rel_type enum(1,2) //关注数据 );
拉黑/粉丝/关注,在数据库里,存的都是一个映射关系的数字。比如,拉黑是 1,粉丝/关注是一个东西,是 2。那么,一条记录里的关键数据是:
from_user_id // 本条记录是哪个用户发起
from_user_id
to_user_id // 本条记录的接受方是哪个用户
to_user_id
rel_type // 发起者对接受者,做了什么事情?存事情的类型
rel_type
场景举例:
用户 A 关注用户 B
插入数据:
INSERT INTO relation (rel_type, from_user_id, to_user_id) VALUES(2, A.id, B.id)
用户 A 的粉丝数:
select COUNT(*) from relation where rel_type=2 and to_user_id=A.id;
黑名单同理。
这是按照你给出的表的方式处理的。我自己在做设计的时候,其实是给 关注/粉丝 建了一张表,黑名单又建一张表。按自己的需求和习惯来就好了,无所谓选哪种。
希望有用。
楼上说的差不多了 高并发下的话 最好把粉丝数 放到redis里面哦~
text
类型?是存些什么东西呢?很好奇。另外private key
是笔误还是?你列出的这个 demo 里,我看不出来如何获得用户的关系数据。我自己设计时(当然也是我认为合理的方式)是这样的(不完全照搬我自己的,是根据你的这个表改了一下):
拉黑/粉丝/关注,在数据库里,存的都是一个映射关系的数字。比如,拉黑是 1,粉丝/关注是一个东西,是 2。那么,一条记录里的关键数据是:
from_user_id
// 本条记录是哪个用户发起to_user_id
// 本条记录的接受方是哪个用户rel_type
// 发起者对接受者,做了什么事情?存事情的类型场景举例:
用户 A 关注用户 B
插入数据:
用户 A 的粉丝数:
黑名单同理。
这是按照你给出的表的方式处理的。我自己在做设计的时候,其实是给 关注/粉丝 建了一张表,黑名单又建一张表。按自己的需求和习惯来就好了,无所谓选哪种。
希望有用。
楼上说的差不多了
高并发下的话 最好把粉丝数 放到redis里面哦~