我将使用MongoDB制作学生管理系统。我将为学生准备一张桌子,另一张准备出席记录。我可以在考勤表中有钥匙到达学生表,如下图所示?怎么样?可以使用MongoDB创建关系数据库吗?
17
A
回答
26
MongoDB的背后的想法是,以消除(或至少最小化)的关系数据。您是否考虑将考勤数据直接嵌入每个学生记录?这实际上是MongoDB的首选设计模式,可以带来更好的性能和可伸缩性。
如果您确实需要高度关系和规范化的数据,您可能需要重新考虑使用MongoDB。
17
答案取决于你打算如何使用数据。你真的有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") }
]
}
+0
谢谢,我已经开始阅读Schema Design。 –
0
是的。没有硬性规定。您必须查看嵌入或引用数据的优缺点。这个视频肯定会有帮助(https://www.youtube.com/watch?v=-o_VGpJP-Q0&t=21s)。在您的示例中,电话号码属性应位于同一张表上(在文档数据库中),因为人员的电话号码很少发生更改。
相关问题
- 1. SQLAlchemy可以自动从数据库模式创建关系吗?
- 2. 我可以在MongoDB中存储关系数据库结构吗
- 3. 使用AngularFire,可以创建关系型数据库吗?或者访问UniqueIDs?
- 4. 创建关系数据库
- 5. 我可以为count创建关系吗?
- 6. 可以在关系数据库中使用循环外键依赖关系吗?
- 7. MongoDB数据库关系
- 8. 为数据源创建新的QueryBuilder表达式时可以使用关系吗?
- 9. MongoDB不适用于关系数据吗?
- 10. 使用mongodb创建数据库node.js
- 11. 可以使用存储过程创建数据库吗?
- 12. 我可以使用ID创建OneToOne关系吗?
- 13. MongoDB未经授权的用户可以创建数据库
- 14. readAnyDatabase用户可以在mongodb上创建数据库
- 15. 我们可以使用Ember数据使用多态关系吗?
- 16. 创建关系数据库表
- 17. 正确创建关系数据库
- 18. 使用UML建模数据库:关系
- 19. 用C创建的GDBM数据库可以用Python打开吗?
- 20. 我可以使用rails 4中的一个数据库查询创建多个关联的数据库行吗?
- 21. 可以将ORM +关系数据库视为对象关系数据库管理系统吗?
- 22. 我可以使用我的关系数据库表格图来创建UML类图吗?
- 23. 麻烦创建MongoDB的MongoDB数据库
- 24. 非Linux的postgresql用户可以创建数据库吗?
- 25. 关系数据丢失时可以使用Entity Framework吗?
- 26. 使用关系数据库
- 27. 如何使用Enterprise Architect和Oracle数据库创建数据库关系图?
- 28. 从关系数据库移动到mongodb
- 29. Laravel认证系统可以使用现有的数据库吗?
- 30. 关系数据库建模
谢谢你的回答。我的教练给了我这个项目来和MongoDb一起做。所以我会从某处/某些人(比如你:)搜索一些信息),我会尽力去做。再次感谢你。 –
如果你是MongoDB的新手,他们的网站上有一个很酷的小教程:http://www.mongodb.org/(只需点击“试试看”,然后在shell中输入“tutorial”。) –
@MikeChristensen目前,这个建议不再有效。他们可能改变了他们的网站 – Kunok