一个公司的不同业务的一个或多个事实表? [关闭]
Posted
技术标签:
【中文标题】一个公司的不同业务的一个或多个事实表? [关闭]【英文标题】:One or multiple fact tables for different businesses in one company? [closed] 【发布时间】:2020-10-26 14:00:40 【问题描述】:我是数据库设计的新手。 我正在尝试为汽车共享公司设计一个数据模型。 他们有不止一种商业模式,比如汽车共享、踏板车共享、送货。
这是我的两难选择,我应该选择哪个:
(数据库仓库总线架构) 我应该为不同的业务创建多个事实表吗? 不同的事实表代表一种业务模型并共享一些一致的维度?
(一星模式) 还是应该将不同的业务名称(汽车共享、踏板车、送货)存储在一维表中,称为产品?
谢谢!!!!
【问题讨论】:
这取决于很多事情,并且没有 1 个答案。你问的是与规范化有关。规范化数据库的三个主要原因。一是尽量减少重复数据,二是尽量减少或避免数据修改问题,三是简化查询。 感谢您的回复,这不是我要求的。我只是编辑我的问题以使其更清楚。 【参考方案1】:我的处理方法如下:
-
列出所有事实及其相关维度
确定所有事实的维度的共同程度
如果您的事实都具有大致相同的维度,那么您可以将它们全部放在一个事实表中。对此没有硬性规定,但我会说,如果一个事实有超过 2 个维度且未被其他事实使用(或被其他事实使用但未被该事实使用),那么它需要在它自己的事实表。
如果您决定可以将多个事实放在一个事实表中,那么它就变成了一个判断调用。做出决定时要考虑的事项包括(显然不是一个明确的清单):
您是否想在同一个查询中同时查询不同的事实?如果是这样,那么将它们放在 1 个事实表中会使这更容易,例如按日期按事实类型计数 您的数据量是否如此庞大(或将来可能如此)以至于只有一个事实表会导致问题?如果是这样,那么一开始就有单独的事实表,而不是将来必须拆分它们,这是有意义的 安全性:您是否需要将不同事实的访问权限限制为不同的人群。如果是这样,那么拥有单独的事实表可能会更容易我个人的偏好是,假设同时查询不同的事实不是主要要求(上面的第一个要点),我会使用单独的事实表。虽然涉及更多的 ELT,但它不应该很重要——一旦你为第一个事实表构建了逻辑,那么所有其他的都应该是“复制和粘贴”加上少量的编辑。拥有不同的事实表更灵活,并且可能会在未来给您带来更少的问题
【讨论】:
以上是关于一个公司的不同业务的一个或多个事实表? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章