首页 > 解决方案 > SQL 数据建模 - 查询具有跨多个类别的标签的记录

问题描述

我有一张存储公司提供的不同软件服务的表格。服务按其服务的行业、所属的 LoB 以及服务中涉及的技术进行标记。该服务可以在每个行业、LOB 和技术上具有多个标签。

例如:以下可能是主数据:

在此处输入图像描述

交易数据可能如下所示:

在此处输入图像描述

我需要创建一个可用于按行业/LoB 和技术标签查询数据的视图。目前,我已经将所有 tagtoService 关系表(服务-技术、服务-LoB、服务-行业表)从外部连接到服务事务表。但这适用于大量记录,因为通常可以将一项服务标记到多达 10-15 个行业和技术。

只是想知道对这些数据建模的最佳方法是什么,以便我可以从一个视图中通过所有三个标签查询服务。

我不是数据建模专家,这更像是我第一次涉足数据建模方面-所以请原谅我的问题的“菜鸟”:)。我使用 SAP HANA 作为数据库并通过 OData 服务公开数据,我想将此视图用作数据源。

标签: sqlodatahanadatamodelcolumnstore

解决方案


如果您要对数据进行建模:通常在您的事务表中,您保留外键,而不是可以通过主表中的外键获得的文本列。我敢打赌这也是您的意思,但该示例显示了事务表中的文本值。

除此之外,我认为你所拥有的是合理和合理的。这些“标签”表代表“服务”表的不同粒度级别,如果将它们组合在一个表中可能会适得其反(例如:带有逗号分隔标签的单列、XML/JSON 列、多列 [LOBTag1、LOBTag2 , ...] ) b/c 这将使这些列不可索引和/或难以查询。您可能对 XML 和 JSON 列进行了优化,但除非列太多且稀疏,否则不应考虑这些。


推荐阅读