首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >可以使用MongoDB创建关系数据库吗?

可以使用MongoDB创建关系数据库吗?
EN

Stack Overflow用户
提问于 2011-11-15 07:14:41
回答 3查看 38.4K关注 0票数 31

我打算用MongoDB做一个学生管理系统。我会有一张桌子给学生,另一张桌子放考勤记录。我可以在出席表中有一把钥匙到达学生桌,如下图所示吗?多么?

EN

回答 3

Stack Overflow用户

发布于 2011-11-15 07:27:02

MongoDB背后的思想是消除(或至少最小化)关系数据。您是否考虑过将考勤数据直接嵌入到每个学生记录中?这实际上是MongoDB的首选设计模式,可以带来更好的性能和可伸缩性。

如果您确实需要高度关系型和规范化的数据,那么您可能需要重新考虑使用MongoDB。

票数 43
EN

Stack Overflow用户

发布于 2011-11-15 07:35:13

答案取决于您打算如何使用数据。你真的有两个选择,嵌入出席表,或链接它。有关这些方法的更多信息将在此处详细介绍:http://www.mongodb.org/display/DOCS/Schema+Design

对于常见的用例,您可能会嵌入这个特定的集合,因此每个学生记录都会有一个嵌入的“出勤”表。这是可行的,因为考勤记录不太可能在学生之间共享,而且检索考勤数据也可能需要学生信息。检索出勤数据非常简单:

代码语言:javascript
复制
db.student.find( { login : "sean" } )
{
  login : "sean",
  first : "Sean", 
  last : "Hodges",
  attendance : [
    { class : "Maths", when : Date("2011-09-19T04:00:10.112Z") },
    { class : "Science", when : Date("2011-09-20T14:36:06.958Z") }
  ]
}
票数 22
EN

Stack Overflow用户

发布于 2017-12-21 14:04:32

是。没有硬性规定。您必须考虑嵌入或引用数据的优缺点。这个视频肯定会有帮助(https://www.youtube.com/watch?v=-o_VGpJP-Q0&t=21s)。在您的示例中,电话号码属性应该在同一个表中(在文档数据库中),因为一个人的电话号码很少更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8129557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档