如何使这个简单的关系模型适应维度模型?

Posted

技术标签:

【中文标题】如何使这个简单的关系模型适应维度模型?【英文标题】:How to adapt this simple relational model to a dimensional one? 【发布时间】:2015-01-29 08:32:29 【问题描述】:

我有一个用于存储自行车模型的相当基本的关系模型。它包含 2 个表:

    (modelID, modelName, brandName)
    (modelID,  type, color, wheelSize, suspension, frameMaterial, brakeManufacturer, gearType, gearModel, yearProduced)

我被要求将其调整为维度模型。

这些将是维度表:

    tbl_d_model(modelID, modelName)
    tbl_d_brand(brandID, brandName)
    tbl_d_color(colorID, color)
    tbl_d_type(typeID, type)
    tbl_d_wheel(wheelID, wheelSize)
    tbl_d_suspension(suspID, suspension)
    tbl_d_frameMat(frameID, frameMaterial)
    tbl_d_brakeMan(brakeId, brakeManufacturer)
    tbl_d_gear(gearID, gearType, gearModel)

这就是事实表:

    tbl_f_fact(modelID, brandID, colorID, typeID, wheelID, suspID, frameID, brakeID, gearID, yearProduced)

这是一种最佳方式吗?有没有更好的办法?

【问题讨论】:

事实应该描述业务流程,即销售或产品运输等活动。 【参考方案1】:

在维度建模中,您使用键。

您需要的是一个维度,而不是 10 个维度和一个事实表。

所以

dimension_bycicle(key_bicicle, modelName, brandName, type, color, wheelSize, suspension, frameMaterial, brakeManufacturer, gearType, gearModel, yearProduced, modelId)

请不要让 modelId 是您的自然键(操作系统键,不应用作数据仓库键)。

【讨论】:

以上是关于如何使这个简单的关系模型适应维度模型?的主要内容,如果未能解决你的问题,请参考以下文章

Greenplum 实时数据仓库实践——数据仓库设计基础

Greenplum 实时数据仓库实践——数据仓库设计基础

将关系迁移到多维 - 如何从时间戳创建时间维度 - SSAS

如何使通过多对多关系连接的模型在 Django admin 中同时在两个地方可编辑?

单一业务模型中的 OBIEE 多事实表?

深入探讨深度学习模型性能与神经网络宽度之间关系