sql - SQL 数据建模 - 查询具有跨多个类别的标签的记录
问题描述
我有一张存储公司提供的不同软件服务的表格。服务按其服务的行业、所属的 LoB 以及服务中涉及的技术进行标记。该服务可以在每个行业、LOB 和技术上具有多个标签。
例如:以下可能是主数据:
交易数据可能如下所示:
我需要创建一个可用于按行业/LoB 和技术标签查询数据的视图。目前,我已经将所有 tagtoService 关系表(服务-技术、服务-LoB、服务-行业表)从外部连接到服务事务表。但这适用于大量记录,因为通常可以将一项服务标记到多达 10-15 个行业和技术。
只是想知道对这些数据建模的最佳方法是什么,以便我可以从一个视图中通过所有三个标签查询服务。
我不是数据建模专家,这更像是我第一次涉足数据建模方面-所以请原谅我的问题的“菜鸟”:)。我使用 SAP HANA 作为数据库并通过 OData 服务公开数据,我想将此视图用作数据源。
解决方案
如果您要对数据进行建模:通常在您的事务表中,您保留外键,而不是可以通过主表中的外键获得的文本列。我敢打赌这也是您的意思,但该示例显示了事务表中的文本值。
除此之外,我认为你所拥有的是合理和合理的。这些“标签”表代表“服务”表的不同粒度级别,如果将它们组合在一个表中可能会适得其反(例如:带有逗号分隔标签的单列、XML/JSON 列、多列 [LOBTag1、LOBTag2 , ...] ) b/c 这将使这些列不可索引和/或难以查询。您可能对 XML 和 JSON 列进行了优化,但除非列太多且稀疏,否则不应考虑这些。
推荐阅读
- python - Python - 查找列表列表中没有重复内部项目的最大子集
- elixir - asdf 的 .tool-versions 文件应该进入 .gitignore 吗?
- java - log4j2 xml 无法识别程序参数
- reactjs - 如何使用中止控制器或可取消的承诺取消多个 setState 调用
- c++ - Visual Studio 找不到 SDK(10.0.17763.0) 的已安装版本的解决方案
- apache-kafka - 如何找到消费者Kafka的字节率
- css - 在 CSS 网页中从浏览器中出来的框
- mysql - 将 AWS Aurora 使用的 MySQL 版本与 MySQL Docker 映像匹配
- javascript - TypeScript VueJS:使用具有计算属性的观察器
- html - 仅在顶部使用蒙版在 div 上自定义顶部边框