Questions tagged «hierarchical-data»

7
在关系数据库中存储分层数据有哪些选择?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 10个月前关闭。 好的概述 一般来说,您需要在快速读取时间(例如,嵌套集)或快速写入时间(邻接列表)之间做出决定。通常,您最终会得到以下最适合您的选项的组合。以下内容提供了一些深入的阅读: 嵌套间隔与邻接列表的另一比较:邻接列表,物化路径,嵌套集和嵌套间隔的最佳比较。 分层数据模型:幻灯片,其中对折衷和示例用法进行了很好的解释 在MySQL中表示层次结构:特别是对嵌套集的很好概述 RDBMS中的分层数据:我见过的最全面,组织最完整的链接集,但解释方式不多 选件 我知道的和一般功能: 邻接表: 列:ID,ParentID 易于实现。 廉价节点移动,插入和删除。 昂贵的查找级别,祖先和后代,路径 通过支持它们的数据库中的公用表表达式避免N + 1 嵌套集(又名修改后的预排序树遍历) 列:左,右 廉价祖先,后裔 O(n/2)由于易失性编码,非常昂贵的移动,插入,删除 桥接表(又名闭包表/ w触发器) 使用单独的联接表,并带有:祖先,后代,深度(可选) 便宜的祖先和后裔 写入O(log n)用于插入,更新,删除的成本(子树的大小) 标准化编码:适合联接中的RDBMS统计和查询计划程序 每个节点需要多行 沿袭列(又名物化路径,路径枚举) 栏:沿袭(例如/ parent / child / grandchild / etc ...) 通过前缀查询的廉价后代(例如LEFT(lineage, #) = '/enumerated/path') 写入O(log n)用于插入,更新,删除的成本(子树的大小) 非关系:依赖于数组数据类型或序列化的字符串格式 嵌套间隔 类似于嵌套集,但具有实数/浮点数/十进制数,因此编码不会不稳定(廉价的移动/插入/删除) …


15
如何创建MySQL分层递归查询
我有一个MySQL表,如下所示: id | name | parent_id 19 | category1 | 0 20 | category2 | 19 21 | category3 | 20 22 | category4 | 21 ...... 现在,我想有一个简单的MySQL查询,只需向其提供ID [例如说'ID = 19'],然后就应该获取其所有子ID [即结果应具有ID '20,21,22']。 ...此外,孩子的等级也不知道它会有所不同... 另外,我已经有了使用for循环的解决方案.....如果可能的话,让我知道如何使用单个MySQL查询实现相同的解决方案。

5
进行递归自联接的最简单方法?
在SQL Server中进行递归自联接的最简单方法是什么?我有一张这样的桌子: PersonID | Initials | ParentID 1 CJ NULL 2 EB 1 3 MB 1 4 SW 2 5 YT NULL 6 IS 5 而且我希望能够只获取与特定人员开始的层次结构相关的记录。因此,如果我通过PersonID = 1请求CJ的层次结构,则会得到: PersonID | Initials | ParentID 1 CJ NULL 2 EB 1 3 MB 1 4 SW 2 对于EB,我会得到: PersonID | Initials | …


8
有没有一种方法可以将CSV列转换为层次关系?
我有700万份生物多样性记录的csv,其中分类学级别为列。例如: RecordID,kingdom,phylum,class,order,family,genus,species 1,Animalia,Chordata,Mammalia,Primates,Hominidae,Homo,Homo sapiens 2,Animalia,Chordata,Mammalia,Carnivora,Canidae,Canis,Canis 3,Plantae,nan,Magnoliopsida,Brassicales,Brassicaceae,Arabidopsis,Arabidopsis thaliana 4,Plantae,nan,Magnoliopsida,Fabales,Fabaceae,Phaseoulus,Phaseolus vulgaris 我想在D3中创建一个可视化文件,但是数据格式必须是网络,其中每个列的不同值都是上一个特定值的列的子级。我需要从csv转到类似这样的内容: { name: 'Animalia', children: [{ name: 'Chordata', children: [{ name: 'Mammalia', children: [{ name: 'Primates', children: 'Hominidae' }, { name: 'Carnivora', children: 'Canidae' }] }] }] } 我还没有想到不使用上千个for循环就如何做到这一点的想法。是否有人对如何在python或javascript上创建此网络提出建议?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.