【问题标题】:How to model the NoSQL database如何为 NoSQL 数据库建模
【发布时间】:2021-05-17 16:31:48
【问题描述】:

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

使用 RDBMS,我们可以如下开发上述数据库表

Customer(**CustomerId**, Name, Address)
Vehicle(**RegistrationNo**, Brand, CustomerId, ownerId)
Owner(**OwnerID**, Name)

但我想在 NoSQL 中使用它。为此,我可以创建 3 个集合作为客户、车辆、所有者。但是,在颤振中通过 firebase firestore 在其中创建文档时如何处理这些主键。我可以生成一个唯一的随机 ID 吗?用主键命名文档 ID 是否是个好主意?

An example document for vehicle collection

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

【问题讨论】:

    标签: flutter google-cloud-firestore nosql


    【解决方案1】:

    在 NoSQL 中,我们有集合和文档 您的架构的 NoSQL 等效项是 拥有三个集合

    • 客户收藏
    • 车辆收集
    • Customer_Hire_Vehicle 集合

    在客户集合中,每个客户都有自己的文档, 您可以选择将文档 ID 设为客户 ID,或使用替代 这是生成您自己的 customerId

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

    对于 Customer_Hire_vehicle 集合 您可以添加客户的所有字段和车辆字段,还可以添加租用日期 这样您就知道当客户租用车辆时,也会派上用场进行分类。

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

    非规范化 https://www.youtube.com/watch?v=vKqXSZLLnHA

    多路径更新的数据一致性 https://www.youtube.com/watch?v=i1n9Kw3AORw

    【讨论】:

    • 如果我将文档ID设置为客户ID来唯一标识客户是否可以?如果是,那么我可以从文档中删除客户 ID 字段,因为它具有类似的功能。会不会造成未来的问题?
    • @TechlingdaTutorials 是的,使用文档 ID 作为客户 ID 肯定没问题,特别是由于 firestore 文档 ID 是唯一的,以后不会有问题。但是,如果您使用 firebase 身份验证,您将获得一个不同的 uid 来识别用户,如果是这种情况,您可以将其用作客户 ID。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 2013-05-14
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多