首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >事实测度的二维类型

事实测度的二维类型
EN

Database Administration用户
提问于 2021-02-23 02:11:26
回答 1查看 32关注 0票数 1

我需要存储产品的价格和数量(和许多其他东西),并跟踪历史。

现在,考虑到价格和数量都是以整数的形式存储的,我的理解是,这些都是事实的度量。所以我们可能有一张桌子,比如:

代码语言:javascript
复制
f_products:
  id
  sku 
  price
  quantity

由于价格随时间而变化,我们可以插入一个新的事实,我可以在表中引入有效日期,以便在给定的时间查询价格或数量。

但是对于这个设计,意味着如果数量发生变化,我必须插入另一行,再次重复不变的价格值。虽然这对2列来说还不算太糟,但实际上我有10列。

所以,我的设计是:

代码语言:javascript
复制
f_products:
  id
  sku 

price:
   id
   product_id
   price
   start_date
   end_date

another "dimension":
   id
   product_id
   value
   start_date
   end_date

and so on

现在“事实”不再需要在价格变化时改变,我可以在这些表中查询历史值。

所以我的问题是,这似乎不符合标准的事实/维度设计,所以我想知道更有经验的建模人员将如何处理这些需求。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2021-02-23 02:49:14

老实说,这确实取决于您的用例,但对我来说,我可能只需将所有10列存储在同一个表中,并将其称为一天(除非它们彼此非常不相关,否则我可能会将其规范化一些)。拥有完整的字段列表可能会影响不同的答案,而且您的方法也是有效的。保持这种状态可能需要做更多的工作。

本质上,它将是一个事务表,并记录任何字段上的每个更改的记录。然后,最容易查看给定产品的当前状态,或者在给定的时间框架内它的状态是什么。

是的,您将遇到一些数据复制,但是大多数现代数据库系统无论如何都会自动压缩它们的表。因此,除非您认为您将每天创建数十亿事务,并开始悄悄进入大数据领域,否则从性能角度看,我不会感到非常担心。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/285851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档