node.js - 将城市或省视为数据库设计中的新模型是否合乎逻辑?
问题描述
我正在为我们的业务设计一个新的 Web 应用程序。现在不知道什么比较好?我使用 MongoDB 作为数据库。
我们有大约 10 个 MongoDB 模型(模式),例如 Leads & Contractors。Leads and Contractor Model 必须具有城市和省的字段。
我们想向他们在“A”市工作的承包商展示“A”市的线索;
正如我解释的那样,潜在客户和承包商模型(模式)必须为城市备案。
我想知道什么设计是最佳实践,为什么?
将城市和省视为线索和承包商(城市字段)中的一个字段。(嵌入设计)。
将承包商和潜在客户模型视为标准化。并为城市创建一个新模型(模式)并在潜在客户和承包商模型(参考设计)中引用它。
什么更好,为什么?
解决方案
在这种情况下,我看不出为新字段创建单独的集合没有任何好处。NoSQL 数据库的一大优势是能够以这种方式嵌入数据并对其进行快速查询。
想象一下,您想查询一个承包商。如果您使用参考资料进行操作,您的数据库必须首先获取承包商文档,然后使用提供的参考资料搜索城市文档。嵌入消除了对此的需求,从而导致更快的读取时间。您可能要考虑引用的唯一时间是城市在您的应用程序中是否具有自己的中心角色,就像“BlogPost”文档的作者字段可能引用“用户”文档一样。但是对于像城市和省这样的简单地址数据,我假设情况并非如此。
请查看此链接https://docs.mongodb.com/manual/core/data-model-design/以获得有关何时嵌入以及何时将数据拆分为带有引用的单独集合的可靠解释。
推荐阅读
- azure-functions - 耐用功能 - 最大活动功能。超时
- jupyter - 如何查看传递给 Jupyter 内核的 Jupyter 消息?
- python - 尝试将记录从数据帧推送到 SQL Server 表
- python - 可视化使用 pandas 数据框创建的二分网络图
- mysql - 在 CREATE TEMPORARY TABLE 上截断不正确的 INTEGER 值
- java - Java 错误:未为 String 类型定义方法 add(String)
- javascript - 如何通过 JS/JQuery 在用户端检测反转颜色模式?
- sql - 如何使用条件连接两个表可能包含正则表达式条件或数组条件
- android - 颤振:RawKeyboard 侦听器未删除
- java - Micronaut Test 模拟 bean 未能注入值