MongoDB 中的规范化

Normalization in MongoDB

我有一个结构如下的文档

项目:

objectID
itemDesc
categoryID
categoryName
subCategoryID
subCategoryName,
price
flavor
itemDesc
...

虽然通常 MongoDB 不鼓励规范化,但我担心如果不规范化是否会出现数据完整性问题。 我预计此应用程序中有数十万条记录(可能数百万条)。

这个模式是更好的选择吗?

类别:

categoryID
categoryName

子类别:

subCategoryID
subCategoryName,

项目:

objectID
itemDesc
categoryID
subCategoryID
price
flavor
itemDesc

这完全取决于最终用户将如何与您的应用程序交互。

根据您到目前为止的评论,我了解到您的查询很可能属于以下类别之一:

  • 带来类别 X 中的所有项目
  • 带来子类别 X 中的所有项目
  • 带来属于 X 类别和 Y 子类别的所有项目

如果是这样,我认为最好只使用一个集合来存储数据,因为您的结构没有那么复杂,也没有复杂的多对多关系。

如官方 MongoDB Data Model Design 文档所述:

In general, use normalized data models:

when embedding would result in duplication of data but would not provide sufficient read performance advantages to outweigh the implications of the duplication.

to represent more complex many-to-many relationships.

to model large hierarchical data sets.

关于性能,我认为最好创建适合您的查询模式的索引并从一个集合中获取数据,而不是必须查询多个集合。