首页 > 解决方案 > 一个公司的不同业务的一个或多个事实表?

问题描述

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

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

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

  2. 一星模式)或者我应该将不同的业务名称(汽车共享、踏板车、交付)存储在一个维度表中,称为产品?

谢谢!!!!

标签: database-designdata-warehousedimensional-modelingstar-schemafact-table

解决方案


我的处理方式如下:

  1. 列出所有事实及其相关维度
  2. 确定所有事实中维度的共性水平

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

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

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

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


推荐阅读