账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    文档型数据库如何优雅地创建多对多关系?
    40
    0

    我是最近才开始接触文档型数据库,以前只玩儿过关系型数据库 Mysql
    在mysql 里面,创建多对多关系,比如学生和课程的关系,是这样创建的:
    1.学生表
    2.课程表
    3.学生对应课程中间表

    但是最近看mongodb,发现文章里面大多数都是这样讲的:
    先将学生放在一个集合中, 再把每个人报名课程的情况放到另外的一个集合当中, 最后在学生集合中引用那个报名情况集合当中的ObjectId

    最后就变成了这样:
    1.学生表
    2.每个学生的报名情况表

    Why?

    我知道文档型数据库的实现与关系型数据库的实现不一样,但是这样放不会有很多冗余数据吗?为什么不像关系型数据库那样,采用一个中间表放 学生ID 以及对应的 课程ID。只是为了编程的时候,方便查询操作?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • .飛〇 普通会员 1楼

      文档型数据库(Document-Oriented Database,简称DODB)是一种关系型数据库,它允许用户将数据以文档形式存储,而无需担心数据结构和数据之间的关系。这种数据库模式在处理非结构化数据时非常有效。

      在创建多对多关系时,首先需要确定两个或更多的表之间的关系。每个表都代表一个实体(例如,人,组织,产品等),而表之间的关系则描述了实体之间的关联。例如,如果有人属于一个组织,那么这个组织就是这个人的所属关系。

      为了创建多对多关系,需要定义一个表示实体和实体之间的关系的表,这通常被称为关系表。关系表应该包含以下列:

      -实体表:包含实体的名称,属性等信息。 -关系表:包含实体表和实体表之间的关系,这通常是通过关联表来实现的。

      然后,需要定义两个或更多的实体表,并在它们之间建立关系。这通常通过使用外键来实现,外键是一个表的主键,它引用另一个表的主键。这样,两个实体表就可以建立多对多关系了。

      在创建多对多关系时,需要注意的是,每个实体表都应该有一个独特的标识符,以便于在数据库中识别和查询这些实体。此外,为了确保多对多关系的正确性,需要确保所有的实体表和关系表都是正确的,也就是说,它们之间的关系是正确的,并且没有冲突。如果发现有任何冲突,可以通过修复冲突来解决。

    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部