Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关系的集合。NoSQL与SQL_Sql_Nosql_Foreign Keys_Many To Many_Database Relations - Fatal编程技术网

关系的集合。NoSQL与SQL

关系的集合。NoSQL与SQL,sql,nosql,foreign-keys,many-to-many,database-relations,Sql,Nosql,Foreign Keys,Many To Many,Database Relations,我理解NoSQL和SQL之间的区别,但我还有一个小问题。这是一种多对多的关系。我知道如果我需要这种关系,我应该使用关系数据库。然而,在我的例子中,我更喜欢使用面向文档的数据库,因为我需要存储大量的文档,远远大于具有关系的实体的数量 所以,我需要实现用户组。当然,用户可以存在于组之外,因此它们是单独集合的文档。此外,一个用户可以在多个组中,这意味着这是一个真正的多对多关系。 人们说“mongo方式”是让一个用户拥有指向组的链接列表,而另一个组拥有指向用户的链接列表,但这个选项不适合我,因为有时我需

我理解NoSQL和SQL之间的区别,但我还有一个小问题。这是一种多对多的关系。我知道如果我需要这种关系,我应该使用关系数据库。然而,在我的例子中,我更喜欢使用面向文档的数据库,因为我需要存储大量的文档,远远大于具有关系的实体的数量

所以,我需要实现用户组。当然,用户可以存在于组之外,因此它们是单独集合的文档。此外,一个用户可以在多个组中,这意味着这是一个真正的多对多关系。 人们说“mongo方式”是让一个用户拥有指向组的链接列表,而另一个组拥有指向用户的链接列表,但这个选项不适合我,因为有时我需要显示组列表而不显示组用户列表,这可能占用文档的大部分

作为替代方案,我想使用传统的“关系表”,用于关系数据库中的多对多关系

所以我的问题是,在mysql或mongodb中使用这些表的实际区别是什么?据我所知,mongodb中没有外键,但这真的阻止了我做类似的事情吗?我认为问题只在于您无法删除所需的
\u id
及其索引。顺便问一下,在这种情况下,我应该为
UserId
GroupId
字段创建索引吗


或者我应该放弃将所有内容都放在一个数据库中,在一个项目中同时使用SQL和NoSQL的想法?

下面的链接可能会帮助您进行模式设计


“这个选项不适合我,因为有时我需要显示一个没有用户的组列表…”这是指有时你需要显示一个组列表而不显示组用户列表,还是说你需要显示一个没有任何用户的组列表?@MikeSherrill'CatRecall',这:
有时需要显示组列表,而不显示组用户列表
。例如,我只想列出组的名称,但除此之外,我还获得了指向其所有用户的不必要链接,这比我需要的信息多了十倍。