代码之家  ›  专栏  ›  技术社区  ›  Dhiresh Budhiraja

如何在cassandra中与表本身建立多对多关系

  •  0
  • Dhiresh Budhiraja  · 技术社区  · 7 年前

    实际上,我正在开发一个应用程序,在这个应用程序中,一个用户表可以和它自己有多对多的关系。

    它是一个应用程序,在该应用程序中,特定用户可以向不同的买家出售商品,也可以从不同的卖家那里购买商品。

    当一个用户向其他用户出售物品时。 用户成为该特定用户的卖家&该特定用户成为该用户的买家。

    谁能告诉我该怎么建立这种关系吗

    我的用户表如下:-

    CREATE TABLE IF NOT EXISTS user (
        id text,
        login text,
        password text,
        firstName text,
        lastName text,
        gender text,
        mobileNo text,
        aadhar text,
        email text,
        stateCode text,
        district text,
        city text,
        zipCode int,
        address text,
        PRIMARY KEY(id)
    );
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Arthur Landim    7 年前

    Cassandra是一个NoSQL数据库,它的一个特殊特征是关于存储非结构化数据。因此,您不应该考虑表之间的关系,而应该考虑如何获取这些信息(换句话说,您的“select*from”字段是什么)。

    你应该看看 this cassandra data modeling introduction

    之后,你会注意到两件事:

    1. 主键在cassandra存储中发挥着巨大作用

    您要寻找的是每个搜索cql都有一个表:

    create table sells_by_user_id (
    user_id text,
    buyer_id text,
    date timestamp,
    item text,
    item_description,
    ..., <this will depend on which info you would like to obtain
    primary key ((user_id), date)); //with this table you will obtain all the things that a user sold and to whom
    
    create table buys_by_user_id (
    user_id text,
    seller_id text,
    date timestamp,
    item text,
    item_description,
    ..., <this will depend on which info you would like to obtain
    primary key ((user_id), date)); //this table will store all things that an user bought 
    

    如您所见,这是传统关系型数据库的不同思维方式。

    按项目名称创建表事务( 卖方名称文本, 日期时间戳, 项目文本, 项目描述, ...,

    batch statements