【问题标题】:Convert TSQL to NoSQL with primary key nodes使用主键节点将 TSQL 转换为 NoSQL
【发布时间】:2021-11-14 10:09:03
【问题描述】:

以下 TSQL 查询结果如何以 JSON 形式返回,其中主键为 BoardId、StoreId 和 Code?​​p>

BoardId StoreId Code Quantity
070 001 20011 2
070 006 20011 1
070 001 20074 67
070 002 20074 15
070 004 20074 51

转换如下所示,使用 BoardId、StoreId、Code 作为路径:

"70" : {
    "001" : {
      "20011" : {        
          "BoardId" : 70,
          "Code" : "20011",
          "Quantity" : 2,
          "StoreId" : "001",
          "TimeStamp" : "2021-09-20T12:37:18.9300502-04:00"       
      },
      "20074" : {      
          "BoardId" : 70,
          "Code" : "20074",
          "Quantity" : 67,
          "StoreId" : "001",
          "TimeStamp" : "2021-09-20T12:37:18.9797415-04:00"        
      },
      "20163" : {       
          "BoardId" : 70,
          "Code" : "20163",
          "Quantity" : 3,
          "StoreId" : "001",
          "TimeStamp" : "2021-09-20T12:37:18.9807881-04:00"        
      },
      "20611" : {      
          "BoardId" : 70,
          "Code" : "20611",
          "Quantity" : 1,
          "StoreId" : "001",
          "TimeStamp" : "2021-09-20T12:37:18.9807923-04:00"       
      }...

这可以通过使用“for JSON”的 TSQL 查询来完成吗?如果不对上面的示例进行自定义,我似乎找不到任何东西。接受其他建议。我需要让一些 SQL 表与 Firebase 保持同步。这也将允许我进行批量插入/更新。

【问题讨论】:

    标签: c# json firebase tsql nosql


    【解决方案1】:

    严格来说不是您要问的,但我建议阅读 structuring data 上的 Firebase 文档,特别是 reducing data nesting 上的部分。

    在 Firebase 实时数据库中与您的 SQL 数据结构最接近的等价物是:

    "70_001_20011" : {
      "BoardId" : 70,
      "Code" : "20011",
      "Quantity" : 2,
      "StoreId" : "001",
      "TimeStamp" : "2021-09-20T12:37:18.9300502-04:00"       
    },
    "70_001_20074" : {
      "BoardId" : 70,
      "Code" : "20074",
      "Quantity" : 67,
      "StoreId" : "001",
      "TimeStamp" : "2021-09-20T12:37:18.9797415-04:00"        
    },
    "70_001_20163" : {
      "BoardId" : 70,
      "Code" : "20163",
      "Quantity" : 3,
      "StoreId" : "001",
      "TimeStamp" : "2021-09-20T12:37:18.9807881-04:00"        
    },
    "70_001_20611" : {
      "BoardId" : 70,
      "Code" : "20611",
      "Quantity" : 1,
      "StoreId" : "001",
      "TimeStamp" : "2021-09-20T12:37:18.9807923-04:00"       
    }...
    

    因此,我们在这里将三个值组合为您在 SQL 中的主键,并将它们组合到 Firebase 中每个节点的键中。这样我们就有了一个平面的节点列表,就像你在 SQL 中有一个平面的行列表一样。

    数据库的行为仍然会有所不同(我建议阅读 NoSQL data modeling 并观看 Firebase for SQL developers 以了解更多关于为什么以及如何做到这一点),但这种结构是一个不错的起点。

    【讨论】:

    • 很好的答案,谢谢!也感谢您的建议。
    猜你喜欢
    • 1970-01-01
    • 2013-03-31
    • 2018-09-16
    • 2011-09-20
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 2014-07-16
    相关资源
    最近更新 更多