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:如何在论文中表示模式图?的主要内容,如果未能解决你的问题,请参考以下文章

我应该如何在 MongoDB 中实现这个模式?

如何在 Servlet 中使用 DAO 设计模式方法将用户输入存储到 MongoDB?

Mongodb数据模型

如何在不选择模式配置参数的情况下使用 mongoose 在 MongoDB 模式实例化中的关联数组/对象中执行 foreach?

如何使用GraphQL在MERN应用程序的MongoDB模式中插入数组字段?

如何设置 Mongoose 模式以在 MongoDB 中存储对象数组?