我有一个按订单/行粒度定义的事实表。每个订单都属于某个垂直行业,每个垂直行业都有用于描述其数据的自定义属性。我希望能够允许用户查询所有订单,而不管垂直,但是在查询特定于垂直的数据时,能够按垂直特定属性进行过滤。
以下是我计划如何构建它,但如果这看起来像一个好的设计,或者如果这不好,请推荐另一种方法。
事实表将包含 VerticalKey FK。这些是我计划制作的 Dims:
DimVertical(超类型/核心)
- VerticalKey(自动增量)
- OrderId(备用键)
DimVertical-Car(子类型/自定义)
- VerticalKey(来自 DimVertical.VerticalKey 的密钥 ID)
- 自定义属性ABC
- 自定义属性DEF
- 自定义属性 GHI
DimVertical-Motorcyle(子类型/自定义)
- VerticalKey(来自 DimVertical.VerticalKey 的键)
- 自定义属性123
- 自定义属性456
为了查询所有订单,只需对超类型 DimVertical 进行连接。但是,当我想通过垂直特定属性查询特定垂直时,我只会包含可选的子类型 Dimension。
这看起来是个好方法吗?其次,如果这是一个很好的方法,假设“OrderType”是一个超类型属性,所以它可以进入 DimVertical 维度,这很糟糕吗?我质疑这一点,因为我知道你不应该有一个标题维度,这就是这种情况,但我不知道如何支持“自定义”订单标题搜索能力。
提前致谢!