Flutter 如何对NoSQL数据库建模

Flutter 如何对NoSQL数据库建模,flutter,google-cloud-firestore,nosql,Flutter,Google Cloud Firestore,Nosql,我需要以下使用firestore nosql进行数据库开发的帮助 使用RDBMS,我们可以开发上面的数据库表,如下所示 Customer(**CustomerId**, Name, Address) Vehicle(**RegistrationNo**, Brand, CustomerId, ownerId) Owner(**OwnerID**, Name) 但我想在NoSQL中使用它。为此,我可以创建3个集合:客户、车辆、车主。但是,当通过Flatter中的firebase firesto

我需要以下使用firestore nosql进行数据库开发的帮助

使用RDBMS,我们可以开发上面的数据库表,如下所示

Customer(**CustomerId**, Name, Address)
Vehicle(**RegistrationNo**, Brand, CustomerId, ownerId)
Owner(**OwnerID**, Name)
但我想在NoSQL中使用它。为此,我可以创建3个集合:客户、车辆、车主。但是,当通过Flatter中的firebase firestore在其中创建文档时,如何处理这些主键。我可以生成一个唯一的随机ID吗?用主键命名文档ID是一个好主意吗

An example document for vehicle collection

docname{
  RegistratonNo: 'uniqueKey' 
  brand: 'ford'
  customerId: customerId
}

在NoSQL中,我们有集合和文档 模式的NoSQL等价物是 有三个收藏

  • 客户收款
  • 车辆收集
  • 客户\租用\车辆收集
在客户收集中,每个客户都有自己的文档, 您可以选择将文档Id设置为客户Id,或使用其他方法 它正在生成您自己的customerId

在车辆收集中,每个文档都包含注册号, 品牌,并且由于每辆车都有一个车主,所以可以添加车主字段 添加到车辆文档中

用于客户租用车辆收集 您可以添加客户和车辆的所有字段,也可以添加hireDate 所以你知道当一个客户租了一辆车,也会在分类时派上用场

这种方法使用
去恶性化
(简单地说就是复制数据以减少或简化查询,而不是 使用复杂连接)会有一些数据一致性问题,但在 NoSQL您可以使用多路径更新来保持文档之间的数据一致性

非规范化

具有多路径更新的数据一致性

如果我将文档ID设置为客户ID以唯一标识客户,可以吗?如果是,那么我可以从文档中删除customer ID字段,因为它具有类似的功能。这会造成未来的问题吗?@TechlingdaTutorials是的,使用文档ID作为客户ID绝对没有问题,特别是因为firestore文档ID是唯一的,所以未来不会有问题。但是,如果您使用firebase身份验证,您将获得不同的uid来标识用户,如果是这种情况,您可以将其用作客户Id。