新浪微博的“关注功能”数据库是如何设计的

你好。方法有二个:

我觉得是这样设计的

一个字段记录他所关注的好友信息

应该是json的

然后去数据库查最新的就是更新就是

uchome就是这么干的

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

-- 用户表(如果这个表数据相当多,可以用分区表)

create table userinfo

( userid number(38,0), -- 可以用序列递增值也成,自己看着办

  username varchar2(60),

  phone varchar2(20),

  address varchar2(20),

  sex char(1),

  cdate date default sysdate

  -- 其他字段,自己添加

);

  

alter table userinfo add constraints pk_userinfo primary key(userid);

  

-- 用户关注信息表(如果这个表数据相当多,可以用分区表):

create table userattention

( userid number(38,0),           -- 用户ID

  attention_userid number(38,0), -- 被关注的用户ID

  status number(18,0),           -- 关注状态(或者说关注等级,自己定义:0代表什么,1代表什么)

  cdate date default sysdate,    -- 创建时间

  udate date default sysdate     -- 修改时间

  -- 其他字段,自己添加

);

  

-- 为保持数据完整性:不管是“用户ID”还是“被关注的用户ID”其ID必须在userinfo表中存在!

alter table userattention add constraints pk_userattention primary key(userid,attention_userid);

alter table userattention add constraints fk_userattention_userid foreign key (userid) references userinfo(userid);

alter table userattention add constraints fk_userattention_att_userid foreign key (attention_userid) references userinfo(userid);

  

userattention表中一个userid对应该可能有N条记录(而不像你说的:用一条记录,其不同的attention_userid 用逗号隔开,这样设置是不合理的)

  

-- 好比QQ号,我的QQ可以添加N个QQ好友,但我想:腾迅应该不会将我这N个QQ好友用字串连成一条记录(这也太吝啬啦)

猜你喜欢

转载自blog.csdn.net/bfboys/article/details/82986771