一个公司的不同业务的一个或多个事实表? [关闭]

Posted

技术标签:

【中文标题】一个公司的不同业务的一个或多个事实表? [关闭]【英文标题】:One or multiple fact tables for different businesses in one company? [closed] 【发布时间】:2020-10-26 14:00:40 【问题描述】:

我是数据库设计的新手。 我正在尝试为汽车共享公司设计一个数据模型。 他们有不止一种商业模式,比如汽车共享、踏板车共享、送货。

这是我的两难选择,我应该选择哪个:

    数据库仓库总线架构) 我应该为不同的业务创建多个事实表吗? 不同的事实表代表一种业务模型并共享一些一致的维度?

    (一星模式) 还是应该将不同的业务名称(汽车共享、踏板车、送货)存储在一维表中,称为产品?

谢谢!!!!

【问题讨论】:

这取决于很多事情,并且没有 1 个答案。你问的是与规范化有关。规范化数据库的三个主要原因。一是尽量减少重复数据,二是尽量减少或避免数据修改问题,三是简化查询。 感谢您的回复,这不是我要求的。我只是编辑我的问题以使其更清楚。 【参考方案1】:

我的处理方法如下:

    列出所有事实及其相关维度 确定所有事实的维度的共同程度

如果您的事实都具有大致相同的维度,那么您可以将它们全部放在一个事实表中。对此没有硬性规定,但我会说,如果一个事实有超过 2 个维度且未被其他事实使用(或被其他事实使用但未被该事实使用),那么它需要在它自己的事实表。

如果您决定可以将多个事实放在一个事实表中,那么它就变成了一个判断调用。做出决定时要考虑的事项包括(显然不是一个明确的清单):

您是否想在同一个查询中同时查询不同的事实?如果是这样,那么将它们放在 1 个事实表中会使这更容易,例如按日期按事实类型计数 您的数据量是否如此庞大(或将来可能如此)以至于只有一个事实表会导致问题?如果是这样,那么一开始就有单独的事实表,而不是将来必须拆分它们,这是有意义的 安全性:您是否需要将不同事实的访问权限限制为不同的人群。如果是这样,那么拥有单独的事实表可能会更容易

我个人的偏好是,假设同时查询不同的事实不是主要要求(上面的第一个要点),我会使用单独的事实表。虽然涉及更多的 ELT,但它不应该很重要——一旦你为第一个事实表构建了逻辑,那么所有其他的都应该是“复制和粘贴”加上少量的编辑。拥有不同的事实表更灵活,并且可能会在未来给您带来更少的问题

【讨论】:

以上是关于一个公司的不同业务的一个或多个事实表? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

一个或多个事实表

事实表,维度,度量,指标之间的关系

我应该将类似的业务流程合并到一个事实表中吗?

如何对链接到具有不同粒度级别的多个事实的维度表进行建模?

处理地址维度并在多个事实中扮演角色

将一个维度加入具有不同粒度的多个事实表