. . 我正在为一个项目重构一个旧的 MySQL 数据库。我们有一个产品表(大约 20k 行,它可能会增长到 40k 或更多)和不同类型的分类(目前有 4 种)。为简单起见,我将创建一个仅包含两种明显且常见的示例类型(“类别”和“标签”)的示例。这只是一个例子,我当然不是一个有创造力的人。
. . 我需要获取所有产品的列表,并将其类别和标签捆绑在一起。此示例的(相关且大大简化的)数据库结构如下:
- 产品表:id、name
- 分类表:id、name
- 标签表:id,名称
- Products_Tags 表:product_id、tag_id
- Products_Categories 表:product_id, category_id
. . GROUP_CONCAT
我可以使用子查询和(本文中有一个很好的例子)以相对良好的性能来展平关系,但我想知道对于像 MongoDB 这样的面向文档的数据库是否不是这种情况,我可以简单地将所有内容保存在一个单个文档,如下所示:
- 产品表:{id,名称,类别:[],标签:[]}
. . 采用面向文档的路线,我还有一个额外的好处,就是能够为不同种类的产品使用不同种类的类别,但是我的代码需要检查数据的一致性,而不是将其留给数据库。
. . 有更好的选择吗?提示,想法,类似的经历?