【问题标题】:Store a tree structure as a table将树结构存储为表
【发布时间】:2018-02-25 06:45:09
【问题描述】:

让我用伪代码描述一个记录结构:

Record
 UserName
 E-mail
 Items[8]
   ItemPropertyA
   ItemPropertyB
   ItemPropertyC
   ItemPropertyD
   ItemPropertyE

记录中有 1-8 个项目,每个项目中恰好有 5 个属性。所以我需要将这些记录存储为(excel)表,如果可能的话,我希望它是人类可读的。严格的方法是将项目和属性放在 8 * 5 = 40 列中,但这很难审查。我将在每个单元格中放置一个 JSON 属性数组(每个单元格一个单元格),根据需要在每行中使用尽可能多的单元格。我只是对其他树到表的可能性感到好奇。

【问题讨论】:

  • 为什么需要 40 列?每条记录最多有 10 个属性,所以 10 列
  • 固定描述。
  • json 不是人类可读的格式,40 列更容易查看/排序/过滤/等
  • 我说的只是一个数组["foo", "bar"]。优点: - 物品数量更容易查看; - 最重要的属性可以放在第一位,所以我会马上看到它们;缺点:您丢失了列名。但是向下滚动时无论如何您都看不到它们。
  • 那么就把foo, bar作为值,为什么需要大括号和引号?

标签: data-structures


【解决方案1】:

除了 40 个单独的列之外,还有另一种选择(如果记录中的项目少于 8 个,其中一些可能未使用)。您可以使用数据库样式的规范化记录:

表 1

RecordId UserName Email
       1 Bobby    bobby@example.com
       2 Susan    sueb@example.com

表 2

RecordId ItemId PropertyA PropertyB PropertyC PropertyD PropertyE
       1      1 Chocolate Electric  Round     Silver    Hebrew
       1      2 Raspberry Steam     Trapezoid Brass     Esperanto
       1      3 Durian    Gravity   Bezier    Titanium  Bahasa Melayu
       2      1 Vanilla   Solar     Rhombus   Copper    Pashto

当然,您可以进一步规范化,只使用一个属性列,但是当您知道每个项目都具有完全相同的五个属性时,上述内容似乎就足够了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多