Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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
可以使用MongoDB创建关系数据库吗?_Mongodb_Relational Database_Rdbms - Fatal编程技术网

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

可以使用MongoDB创建关系数据库吗?,mongodb,relational-database,rdbms,Mongodb,Relational Database,Rdbms,我将使用MongoDB制作一个学生管理系统。我将有一张学生桌和一张考勤记录桌。如下图所示,我是否可以在考勤表中设置一把钥匙,以便到达学生桌?怎么做 MongoDB背后的思想是消除(或至少最小化)关系数据。您是否考虑过将出勤数据直接嵌入到每个学生记录中?这实际上是MongoDB的首选设计模式,可以带来更好的性能和可扩展性 如果您确实需要高度关系化和规范化的数据,您可能需要重新考虑使用MongoDB。答案取决于您打算如何使用数据。您确实有两个选项,嵌入考勤表或链接它。有关这些方法的详细信息,请参见:

我将使用MongoDB制作一个学生管理系统。我将有一张学生桌和一张考勤记录桌。如下图所示,我是否可以在考勤表中设置一把钥匙,以便到达学生桌?怎么做


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


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

答案取决于您打算如何使用数据。您确实有两个选项,嵌入考勤表或链接它。有关这些方法的详细信息,请参见:

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

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") }
  ]
}

对。没有硬性规定。您必须了解嵌入或引用数据的利弊。这段视频肯定会有帮助()。在您的示例中,phone number属性应该在同一个表中(在文档数据库中),因为一个人的电话号码很少更改。

如果您是MongoDB的新手,他们的网站上有一个非常酷的小教程:(只需单击“试用”,然后在shell中键入
tutorial
),这个建议不再有效。他们可能改变了他们的网站。如果你开始使用嵌入式出勤数据库,但是你需要显示每个班级的出勤率,那么遍历所有用户并提取特定日期和班级的出勤率数据似乎是非常低效的?我不是Mongo专家,但按照我的理解,Mongo将为这些类型的查询创建索引,这样它就不必遍历所有单个用户。SQL也会这样做,只是数据更分散。我不明白为什么这个答案排名很高。如果你在回答问题之前需要证明问题的正确性,这是一项微不足道的任务;在许多情况下,一个开发人员从公司继承了代码,他们无权更改整个代码的体系结构,他们需要使代码做一些新的事情,以满足不使用您特定体系结构的另一个团队的需求。现在这已经不存在了,我们没有尝试回答这个问题。Link现在是视频的全新链接:标题:“MongoDB教程#15-关系数据”,因此如果链接再次过时,有人可以进行搜索。