如何用UML绘制NoSQL数据库(面向文档)?

2024-01-16

我是 NoSQL 使用的初学者,目标是构建一个超级数据库。是否可以使用 UML 绘制 CouchDB 数据库(面向文档),特别是如何进行联接?或者还有其他更适合 NoSQL 数据库建模的替代方案吗?


您可以使用UML 类图对应用程序域的实体和聚合进行建模,无论实现技术如何。 您还可以建模一个更具体的实现,该实现使用NoSQL https://hostingdata.co.uk/nosql-database/数据库,特别是文件存储 https://en.wikipedia.org/wiki/Document-oriented_database例如 CouchDB。存储在数据库中的对象有点脱水(即没有行为的对象数据)到文档中。

您将面临以下挑战:

  1. 之间的映射document https://guide.couchdb.org/draft/documents.html世界和对象世界:a文档可能包含多个相关对象(不需要加入),以及到其他对象的链接(也可以看看嵌入/嵌套文档与文档引用 https://softwareengineering.stackexchange.com/a/413088/209774).

  2. 潜在地非结构化(或松散结构)文档:文档数据库对于文档的内容非常灵活,并且完全允许将完全不相关的类的对象混合到同一个文档集合中。此外,文档的字段/属性/成员可能是动态的并且不断发展。然而在实践中,集合通常包含类似的对象,这些对象主要在字段方面有所不同(例如,承认隐式类的存在)。文档甚至可以根据模式进行验证 https://softwareengineering.stackexchange.com/questions/401191/is-it-recommended-to-use-schemas-on-non-relational-databases/401193#401193以确保一致性(如果需要)。

  3. UML 类基于强类型,而文档中的类型与其内容的其余部分一样灵活(例如字段from可能是一个约会2000-04-02在一个文档或字符串中"a long time ago"在另一张)。

所以在开始之前,你需要考虑绘图策略。我的建议是在 UML 中重点关注对象模型的设计,并将文档视为相关文档的方便分组(DDD 聚合 https://martinfowler.com/bliki/DDD_Aggregate.html可能在这方面有所帮助)。以下经验法则可能有助于建模:

  • 连接(例如独立文档之间的链接)将由关联表示。
  • 对象与其他对象的系统分组,可能表明存在某种更强的关系,例如 UML 组合。
  • 因文档而异的字段将用可选属性(多重性0..1 or 0..*)或封闭对象的概括/专业化,取决于解释变化的逻辑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用UML绘制NoSQL数据库(面向文档)? 的相关文章

  • 自动删除主键序列中的间隙

    我正在创建一个网页 该网页根据用户操作将数据存储到 MySQL 数据库中 数据库有很多行 行的主键是列 rowID 它只是按顺序对行进行编号 例如 1 2 3 4 用户可以选择删除行 问题是当用户删除最后一行以外的行时 rowID 中有一个
  • sqlite3从打印数据中删除括号

    我创建了一个脚本 用于查找数据库第一行中的最后一个值 import sqlite3 global SerialNum conn sqlite3 connect MyFirstDB db conn text factory str c con
  • 插入具有多个值的外键

    我想知道 是否有可能创建一个表 其中我有一个接受外键但同一行可能有多个值的表 例如 Employee id name skillid Skill Skillid skillname 这里 Employee 的一个例子可以是 Employee
  • postgresql 不同的不工作

    我使用以下代码从数据库获取值 但是当我编写这段代码时 测试看看问题出在哪里 我注意到查询没有从数据库中获取不同的值 这是查询 select distinct ca id as id acc name as accName pIsu name
  • SQLite 仅当值不为空时更新列

    Query UPDATE item table SET field1 field1 spanish field2 field2 spanish 问题 我怎样才能更新field1 with field1 spanish ONLY if fie
  • 如何修复 pgbackups 错误:备份 url 无效?

    我正在尝试按照迁移到 Cedar 的说明进行操作 除了我进行了重大重写 因此这不是前一个应用程序的分支 而是一个单独的分支 并停留在数据库迁移步骤 我安装了 pgbackup 和 heroku postgresql 插件 但得到了这个结果
  • 如何迁移我的 Heroku 数据库?

    我试过了 heroku rake db migrate and heroku pg push 第一个给我一个 PGerror rake 中止错误 有没有办法用heroku完全重建 重置我的数据库 我似乎在他们的文档中找不到它 编辑 在此之前
  • 如何在Word 2010中从SQL数据库检索数据?

    我想用 MS SQL 数据库中的数据填充 Word 文档 这可能吗 如果可能的话 如何实现 我过去曾通过多种方式做到这一点 这取决于用户是从 Microsoft Word 外部还是从 Microsoft Word 内部启动操作 From I
  • Android中BaseColumns有什么用

    实现一个类有什么用BaseColumns在安卓中 The BaseColumns http developer android com reference android provider BaseColumns html接口提供了非常常见
  • 如何正确设计数据库的这一部分(循环引用?)

    情况 一个公司有很多项目一个项目有很多标签一个项目只属于1家公司一个标签可以属于多个项目公司必须有权访问自己的标签 示例1 在第一张图片中 公司的所有标签都可以通过projects project tag 获得 但如果所有项目都被删除 那么
  • 如何更改phpmyadmin MySQL的IP地址?

    我在 xampp 中更改了 apache 的 IP 地址 但无法连接到 MySQL 我认为问题是我的 apache 不在我的数据库的同一网络上 我的 apache 位于 192 168 1 10 而我的 MySQL 位于 127 0 0 1
  • 在 Android 中获取联系方式需要花费大量时间?

    您好 目前正在做一个与联系人相关的项目 我正在从联系人中获取详细信息 电子邮件 电话号码和联系人姓名 效果很好 但问题是获取联系方式需要很长时间 超过 1000 个联系人 包括从社交网站同步的联系人 这样我就放了一个Asynchronous
  • using 块会关闭数据库连接吗?

    using DbConnection conn new DbConnection do stuff with database 会不会using块调用conn Close 是的 它会 实施DbConnection Dispose calls
  • 如何在 Sequelize 现有模型中添加列?

    我使用此命令添加了模型和迁移文件 node modules bin sequelize model generate name User attributes firstName string lastName string email s
  • PDO获取最后插入的ID

    我有一个查询 我想获取插入的最后一个 ID 字段ID是主键并且自动递增 我知道我必须使用这个声明 LAST INSERT ID 该语句适用于如下查询 query INSERT INTO cell place ID VALUES LAST I
  • 为什么要为字符变化类型指定长度

    参考 Postgres 文档字符类型 http www postgresql org docs current static datatype character html 我不清楚指定字符变化 varchar 类型的长度 假设 字符串的长
  • 无法将 CLOB 数据存储到 DB2 中的 CLOB 定义的列中

    我猜这是一个重复的问题 但尚未找到合适的解决方案 基本上 我试图通过以下方式将大一点的 XML 即 32000 个字符 插入到 CLOB 列中 DB2程序 插入失败并出现以下错误 看起来 DB2 正在将输入视为 String 而不是 CLO
  • 无法启动 MongoDB:Windows 中的系统错误 1067

    在 Windows Server 2008 R2 上设置 MongoDB 服务后 出现此错误 C mongodb bin gt net start MongoDB The Mongo DB service is starting The M
  • Rails has_many 到 has_many 具有多个模型

    模拟以下情况的最佳方法是什么 Word belongs to wordable polymorphic gt true Phrase has many words as gt workable belongs to story Line h
  • Guid.NewGuid().GetHashCode() 用于数据库

    这对于用作数据存储 SQL Server 的 ID 可靠吗 我会使用 guid 但我更喜欢数字值 A guid更有可能代表一个记录uniquely than a numeric value 随着 GUID 确保全球唯一性 GUID 可以跨数

随机推荐