MongoDB:如何在论文中表示模式图?
Posted
技术标签:
【中文标题】MongoDB:如何在论文中表示模式图?【英文标题】:MongoDB: How to represent a schema diagram in a thesis? 【发布时间】:2012-07-04 15:33:17 【问题描述】:我目前正在写一篇论文,需要在图表中显示我的 MongoDB 架构。我没有找到有关基于文档的数据库图表的资源。
关系数据库有实体关系图 (ERD)。对于 MongoDB,我有哪些选择?我注意到很多博客只是将原始 JSON 显示为他们的“图表”,但这在我的论文中是不可行的。
这是我的一个 JSON 结构的示例:
//MultiChoiceQuestion
"title": "How are you?",
"valid_answers" : [
"_id" : ObjectID(xxxx),
"title": "Great",
"isCorrect": true,
,
"_id" : ObjectID(yyyy),
"title": "OK",
"isCorrect": false,
,
"_id" : ObjectID(zzzz),
"title": "Bad",
"isCorrect": false,
],
"user_responses" : [
"user": ObjectID(aaaa),
"answer": ObjectID(xxxx)
,
"user": ObjectID(bbbb),
"answer": ObjectID(xxxx)
,
"user": ObjectID(cccc),
"answer": ObjectID(yyyy)
]
//User
"_id": ObjectID(aaaa),
"name": "Person A"
//User
"_id": ObjectID(bbbb),
"name": "Person B"
//User
"_id": ObjectID(cccc),
"name": "Person C"
这可能是一个可能的图表:
【问题讨论】:
由于模式仅适用于单个文档,这可能是每个人都只显示文档本身的原因。集合中没有其他文档必须具有相同的架构。 是的,但就我而言,每个“MultiChoiceDocument”都是完全相同的,所以我想展示一下。 尽管 MongoDB 数据存储中没有显式模式,但几乎总是有一个隐式模式需要表示。 martinfowler.com/articles/schemaless 【参考方案1】:我们发现类图实际上是表示 mongo 模式设计的最佳方式之一。
它可以捕获文档中的大部分项目,例如数组、嵌入对象甚至引用。
我们用于将概念与 uml 相关联的一般准则
嵌入 = 组合聚合
参考 = 关联类
如果您不熟悉 uml 术语,那么这是一个不错的介绍。
UML intro from IBM site
【讨论】:
更好的参考可能是ripublication.com/ijaer17/ijaerv12n5_12.pdf。我发现 MongoDB 数据模型适合 OOP 设计而不是 ER 设计。嵌入式集合可以建模为内部类。同一集合中的不同文档模式可以设计为不同的继承类。 对不起,为什么引用等于关联类?【参考方案2】:有一个为 MongoDb 做图表的工具,叫做DbSchema。它通过扫描数据库中的数据来发现模式。我还建议尝试他们的两个功能:
允许同时探索来自不同集合的数据的虚拟关系。不同集合之间的一种 JOIN。 html 文档,我们也在演示文稿中使用它 - cmets 在鼠标悬停中(diarams 保存为矢量图像)。【讨论】:
以上是关于MongoDB:如何在论文中表示模式图?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Servlet 中使用 DAO 设计模式方法将用户输入存储到 MongoDB?
如何在不选择模式配置参数的情况下使用 mongoose 在 MongoDB 模式实例化中的关联数组/对象中执行 foreach?