当前位置:  开发笔记 > 数据库 > 正文

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

如何解决《可以使用MongoDB创建关系数据库吗?》经验,为你挑选了2个好方法。

我将使用MongoDB创建一个学生管理系统.我将为学生提供一张桌子,为出勤记录提供另一张桌子.我可以在考勤表中找到一张钥匙到达学生桌,如下图所示吗?怎么样?

关系数据库的图表



1> Mike Christe..:

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

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


如果您使用嵌入式考勤启动数据库,但是您需要显示每个班级的出勤率,看起来遍历所有用户并提取特定日期和班级的考勤数据会非常低效?
如果你是MongoDB的新手,他们的网站上有一个非常酷的小教程:http://www.mongodb.org/(只需点击"试一试",然后在shell中输入`tutorial`.)

2> seanhodges..:

答案取决于您打算如何使用数据.您真的有2个选项,嵌入考勤表或链接它.有关这些方法的更多信息,请参见:http://www.mongodb.org/display/DOCS/Schema+Design

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

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

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有