zoukankan      html  css  js  c++  java
  • ***社交网站的用户关系数据是怎么设计的,比如关注数,黑名单数,粉丝数等等

    Q:

    我见过一种设计,在数据库里面有一张用户关系表,表结构如下

    CREATE TABLE relation (
    relation_id private key AUTO_INCREMENT,//关系id
    relation_fans text,//粉丝数据
    relation_black text,//黑名单数据
    relation_action text//关注数据
    );
    这样的设计有什么用意,如果要取得用户的关系数据 怎么取得?

    A:

    text类型?是存些什么东西呢?很好奇。另外 private key 是笔误还是?

    你列出的这个 demo 里,我看不出来如何获得用户的关系数据。我自己设计时(当然也是我认为合理的方式)是这样的(不完全照搬我自己的,是根据你的这个表改了一下):

    CREATE TABLE relation (
    id PRIMARY KEY AUTO_INCREMENT, //主键,自增
    from_user_id big integer, // 用户 A 的 id
    to_user_id big interger,// 用户 B 的 Id
    rel_type enum(1,2) //关注数据
    );
    

    拉黑/粉丝/关注,在数据库里,存的都是一个映射关系的数字。比如,拉黑是 1,粉丝/关注是一个东西,是 2。那么,一条记录里的关键数据是:

    • from_user_id // 本条记录是哪个用户发起
    • to_user_id // 本条记录的接受方是哪个用户
    • 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;
    

    黑名单同理。

    这是按照你给出的表的方式处理的。我自己在做设计的时候,其实是给 关注/粉丝 建了一张表,黑名单又建一张表。按自己的需求和习惯来就好了,无所谓选哪种。

    希望有用。

  • 相关阅读:
    DDL
    [笔记]NFC笔记——初始化RF碰撞避免
    [笔记]Java没有C语言的编译开关怎么办?
    [笔记]NFC笔记——通用初始化及单设备检测(SDD)流程
    [笔记]NFC笔记——NFCIP1协议命令集(NFCIP1 Protocol Command Set)
    [笔记]C++代码演示SingletonMap 单类Map实例
    [笔记]NFC笔记——传输帧格式
    [笔记]C++代码演示Singleton单类实例
    [笔记]山寨中文编程语言
    [笔记]NFC笔记——ATR_REQ 消息结构
  • 原文地址:https://www.cnblogs.com/kenshinobiy/p/4318996.html
Copyright © 2011-2022 走看看