我理解NoSQL和SQL之间的区别,但我仍然有一个小问题。这是一种多对多的关系。我知道,如果我需要这样的关系,我应该使用关系数据库。然而,在我的情况下,我更喜欢使用面向文档的数据库,因为我需要存储大量的文档,远远大于具有关系的实体的数量。
因此,我需要实现用户组。当然,用户可以存在于组之外,因此它们是单独集合的文档。此外,一个用户可以在多个组中,这意味着这是一种真正的多对多关系。人们说"mongo方式"是让一个用户有一个组的链接列表,让一个组有一个用户链接列表,但这个选项不适合我,因为有时我需要显示一个组列表,而不显示组用户列表,这可能会占用大部分文档。
作为一种选择,我想使用传统的"关系表",用于关系数据库中的多对多关系。
所以我的问题是,在mysql或mongodb中使用这样的表有什么实际区别?据我所知,mongodb中没有外键,但这真的阻止了我做这样的事情吗?我只认为问题在于无法摆脱所需的_id
及其索引。顺便说一下,在这种情况下,我应该为UserId
和GroupId
字段创建索引吗?
或者我应该放弃把所有东西都放在一个数据库中,在一个项目中同时使用SQL和NoSQL的想法?
下面的链接可能会帮助您进行模式设计。
https://www.mongodb.com/blog/post/6-rules-of-thumb-for-mongodb-schema-design-part-1