Xpath 对关系数据施加层次结构
我正试图发明一种语法,将层次结构强加给关系数据。(我目前正在使用一个关系数据库来存储它,但这与问题并不特别相关。)我使用的例子是(世界犬组织),它列出了狗的品种。它们的数据组织如下:Xpath 对关系数据施加层次结构,xpath,data-structures,hierarchical,Xpath,Data Structures,Hierarchical,我正试图发明一种语法,将层次结构强加给关系数据。(我目前正在使用一个关系数据库来存储它,但这与问题并不特别相关。)我使用的例子是(世界犬组织),它列出了狗的品种。它们的数据组织如下: 基本单位是一个品种。一个品种有: 十组之一 组内的一个部分(组有0到5个部分) 本节中的可选小节 一套可选的品种 一组(一到两个)起源地 变种有一组可选的子变种 我希望能够表达任何“合理”的结构,在其中放置的品种。以下是一些使用基于正则表达式的语法的示例,解释如下: 完整结构 /组/(节/(子节/)?)?地
- 基本单位是一个品种。一个品种有:
- 十组之一
- 组内的一个部分(组有0到5个部分)
- 本节中的可选小节
- 一套可选的品种
- 一组(一到两个)起源地
- 变种有一组可选的子变种
- 结构的顶层是组
- 如果组中有任何分区,则分区处于下一级别
- 如果组包含子部分,则这些子部分是层次结构的下一级
- 根据结构,位置在组、节或子节内
- 品种是按地点组织的
- 如果这个品种有品种,那么接下来就是这些品种
- 如果一个品种有子品种,这些是下一个
- 最高层是团队
- 地点分组
- 各部分在位置中列出
- 品种列在其分区内(无论是否有分区)
- 如果一个品种有一个品种,它将列在下一个
- 排名第一
- 地方内的群体
- 群内繁殖
- 基于正则表达式的东西,如上所述。这很吸引人,但我不知道如何表达“如果有,就把这个品种放在一个区域,否则就把它放在它所属的群体中”,而不是“把这个品种放在它的群体中,不管这个区域,如果有的话”
- XPath 2.0是一种可能性,但它需要我列举所有的可能性,就像第一个示例中的那样:
(/group/group/section/group/section/SUBSION)/place/(品种/品种/品种/亚品种)
这似乎不雅。考虑一下,如果地方是可选的,例如… - 基于Linux/UNIX命令行语法的东西:
组[/节[/小节]]/品种[/子品种]]
- 这就是你所描述的。它载着父母和孩子。旧数据库使用这个概念
- 关系数据库使用不同的概念:由行(一组数据)和列(集合的每个组件)组成的表、关系(表之间的相同字段)和查询语言来进行选择、插入、更新和删除:SQL。SQL的力量在于他几乎无所不能,它是一种标准,每一种产品几乎都是兼容的
- 您想存储数据吗
- 您已经考虑过层次结构
- 它似乎是“只读”数据:一些字典、同义词表,而不是ERP:)
- 数据量约为100或数千(狗品种),而不是数百万
- 性能如何?当然不是很重要
- 那个商店呢?用来保存数据的东西,也许还可以传输它们
- 这样,简单的解决方案就是将XML结构存储在一个文件中
希望这对您的工作有所帮助我的经验是,当我的关系数据不适合一个清晰的层次结构时,是时候重新考虑我的方法了。通常我最终会意识到我其实并不需要层次结构。有没有什么方法可以不使用层次结构来解决问题?