在 Firestore 中存储文档的最佳实践是什么?

问题描述 投票:0回答:1

汽车有品牌。因此,许多汽车都有相同的品牌。 如何将此对象映射到 Firestore 中存储?最好的做法是什么?

我们需要认为品牌可以改变,所以我们只需要改变品牌一次就可以影响所有的汽车。

Car {
 String carName;
 Brand brand;
}

Brand {
 String brandName;
}

那么,将 Car 存储在 Firestore 文档(无 SQL)上的最佳选择是什么? 我认为最好的选择是 2,那么从 firestore 读取数据时是否有任何最佳实践方法可以提高性能?

  1. 存储所有汽车数据:
- Document Car 1:
Car {
 carName: "Corolla"
 brand: {
  brandName: "Toyota"
 }
}

- Document Car 2:
Car {
 carName: "Land Cruiser"
 brand: {
  brandName: "Toyota"
 }
}

因此,“丰田”品牌将在所有带有该品牌的汽车中重复。

  1. 参考品牌文件:
- Document Car 1:
Car {
 carName: "Corolla"
 brand: "abcd-efgh-brand-code"
}

- Document Car 2:
Car {
 carName: "Land Cruiser"
 brand: "abcd-efgh-brand-code"
}

- Document Brand:
Brand {
 documentId: "abcd-efgh-brand-code"
 brand: "Toyota"
}
flutter firebase google-cloud-firestore nosql
1个回答
0
投票

这就是数据标准化

涉及避免重复数据。

看,对于你的问题,两种技术大约分配相同的磁盘空间因为品牌只包含一个字段(不保证将来仍然有一个字段),但使用参考技术肯定会防止数据重复并允许轻松品牌-更新所有文档。

所以将来,更改一个文档(品牌)将被所有文档(汽车)监听,并且在品牌文档中添加更多字段将节省更多空间。继续使用参考文档!

© www.soinside.com 2019 - 2024. All rights reserved.