现在的位置: 首页 > web前端 > 正文

微豆瓣关注功能数据库是如何设计的

2020年07月20日 web前端 ⁄ 共 1439字 ⁄ 字号 评论关闭

  微豆瓣关注功能部分的数据库是如何设计的,比如用户A关注用户B,是不是就在数据库中生成一条关注记录(估且不管它的关注表具体字段都有什么);还是说在A用户表中修改关注用户ID这么个字段(可能会存在,将关注的用户Id,以逗号分隔的形式存在这个字段中),是这两种方式中的哪一种呢,还是说是别的方式?


  微豆瓣关注功能数据库是如何设计的


  一个字段记录他所关注的好友信息,应该是json的,然后去数据库查最新的就是更新就是。


  微豆瓣代码


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


  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好友用字串连成一条记录(这也太吝啬啦)


  总之,微豆瓣给大家简单的介绍了一些,希望大家多看看。


  

抱歉!评论已关闭.