AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[dimensional-modeling](dba)

Martin Hope
Mads
Asked: 2022-05-15 03:11:35 +0800 CST

事实表中的布尔标志

  • 0

想象一下,我们收到了一项针对 3 种不同物品的日常消费习惯的健康调查结果,如下所示:

ID 日期 年龄 国家 香烟每天 每天咖啡 每日啤酒
1 2021-12-31 35 我们 0 3 0
2 2021-12-31 22 我们 5 5 1
3 2021-12-31 53 我们 3 4 0
... ... ... ... ... ...
11276 2021-12-31 44 法国 3 4 0

我想在星型模式模型中对此进行建模。在事实表中,我创建了日期和项目维度的外键关系,以及具有国家和年龄的人口统计维度。然后我总结了受访者的数量。人口群体。如果受访者的数量超过 100,我将该组标记为代表人口。最后,我计算每组的总消费量和平均消费量。

日期 ID 项目 ID 人口统计 ID 受访者人数 是代表 总消费 平均消费
20211231 1 1 70 不 280 4
20211231 1 2 150 是的 750 5
20211231 1 3 220 是的 660 3
... ... ... ... ... ...
20211231 3 1000 1 不 0 0

例如,有来自人口统计 1 的 70 名受访者(例如,国家 = 美国,年龄 = 18)。他们平均消费了第 1 项中的 4 个(例如香烟)。

通常我们应该努力在事实表中只保存事实和外键。但是我个人认为布尔标志的单独维度不会提供任何价值。是否可以将此标志视为生成维度,或者将其包含在事实表中是否被视为糟糕的设计?

data-warehouse dimensional-modeling
  • 1 个回答
  • 98 Views
Martin Hope
d11wtq
Asked: 2021-04-17 15:03:51 +0800 CST

直接汇总 Outrigger 维度(例如,按注册日期按人口统计的客户总数)

  • 1

根据金博尔的说法:

https://www.kimballgroup.com/data-warehouse-business-intelligence-resources/kimball-techniques/Dimension-modeling-techniques/outrigger-dimension/

一个维度可以包含对另一个维度表的引用。例如,银行账户维度可以引用代表账户开立日期的单独维度。

例如,这向我表明,如果您想跟踪一段时间内开设的账户数量,您可以直接查询账户维度。这很常见吗?

在我的例子中,我将 Customer 建模为一个维度,它还引用 Date(用于 Signed Up Date)和 Demographic 维度。

例如,企业询问的一种常见查询是,随着时间的推移,按人口统计我们有多少注册。这根本不涉及事实表。所有这些都可以通过总结维度本身来解决。这是否表明架构设计中存在某种气味,或者这只是某些维度的特征,其中维度本身对业务具有一定的意义?

dimensional-modeling star-schema
  • 1 个回答
  • 70 Views
Martin Hope
sksamuel
Asked: 2021-02-23 18:11:26 +0800 CST

事实度量的类型 2 维度

  • 1

我需要存储产品及其价格和数量(以及许多其他内容)并跟踪历史记录。

现在,鉴于价格和数量都存储为整数,我的理解是这些都是事实衡量标准。所以我们可能有一个像这样的表:

f_products:
  id
  sku 
  price
  quantity

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

但在这种设计中,如果数量发生变化,我必须插入另一行,再次重复不变的价格值。虽然这对于 2 列来说还不错,但实际上我有 10 列。

所以,我的设计是:

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

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

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

database-design dimensional-modeling
  • 1 个回答
  • 29 Views
Martin Hope
tale852150
Asked: 2020-12-12 12:42:44 +0800 CST

文件上传 Web 应用程序的事务模型与维度模型——首选方法?

  • 1

对于一个唯一目的是允许用户随时上传原始文件数据(到数据库表)的 Web 应用程序,事务模型或维度模型对这样的应用程序更有意义吗?

目前,一些报告是根据数据完成的,但很少。如果将来发生变化(例如报告变得更加普遍),那会改变您建议的模型吗?

数据库总空间100GB。

database-design dimensional-modeling
  • 1 个回答
  • 72 Views
Martin Hope
Maciejo95
Asked: 2020-07-13 14:14:23 +0800 CST

为多个 FACTs 模式建模的正确方法

  • 1

背景

我正在设计数据库(使用 STAR 模式)。

有三个表要建模:products,tests,states。

该数据库将用于存储对产品进行的测试结果(非常简化)。可以有许多测试指向单个产品,但每个测试都是唯一的(它们不在产品之间共享)。此外,我需要在进行测试时记录产品的当前状态。让我们假设产品的状态描述了它的当前位置和所有者,它们经常变化。这很可能涉及 SCD lvl 2 - 跟踪状态变化的历史并能够定位产品连同它的所有测试以及它在这些测试中的状态。

问题

我不完全确定如何为这个问题建模。将每个测试存储在 FACT 表中似乎很明显。然后,该表将包含数千个事务。另一方面,也会有成百上千的产品,所以我应该把它们放在第二个 FACT 表中。然后,还会有成千上万的状态变化,所以为了记录它们的整个历史,我还需要将它们保存在... FACT 表中?有人告诉我,FACT 表通常用于存储多行数据,但另一方面,该模型中的 DIM 在哪里?

我也不知道如何为这些表之间的关系建模。产品-状态是 1:* 关系。产品-测试也是 1:*。最后,states - tests也是 1:* 。然后,我会将产品链接到状态,然后将状态链接到测试(products 1<-* states 1<-* tests),这将允许我找到特定产品的所有状态和所有测试(在所有状态或选择状态)。你怎么看?这里的问题是,当我不断添加states时,我有两个选择:要么在products表中继续复制产品(添加“recorded_timestamp”列),要么在states表中使用 SCD lvl 2,用一个 FK,但这会有效地使产品表变暗!

这里的任何帮助将不胜感激。

database-design dimensional-modeling
  • 3 个回答
  • 195 Views
Martin Hope
jordaniac89
Asked: 2020-04-30 06:49:13 +0800 CST

决定在数据仓库维度中应该使用哪些值?

  • 0

我开始研究数据仓库,我遇到了一些例子,例如,我们有支票支付交易。我知道这应该是“事实”,我们将围绕它有描述事实的维度(帐户、产品等)。但是,它还包含诸如“备忘录行”和字符串“事务 id”值之类的内容,作为字符串,它们并不真正属于事实表。

我的问题是,是否应该有一个单独的支付“元”维度包含这些描述符,或者可以说像备忘录这样的东西不能被报告,因为它每次都不一样,所以我们应该把它排除在外仓库。我知道这是一个抽象的问题,但我在阅读中没有找到太多关于此的内容。任何建议将不胜感激。

data-warehouse dimensional-modeling
  • 1 个回答
  • 34 Views
Martin Hope
tale852150
Asked: 2020-02-14 07:53:50 +0800 CST

在 Kimball 的 Dimensional 数据仓库设计模型的实践中,查找表(不是维度)是否包含 sid 列?

  • 1

尝试为 BI 网页上的下拉菜单创建一个简单的查找表。该表包含 2 列,一个键和一个描述。
设计此表时,关于维度建模的最佳实践是什么?key => number, description => character (column => data type) 是否足够,或者 key 是否需要是 SID?

想想像“国家”这样的网页或网络表单中的下拉菜单。

dimensional-modeling
  • 1 个回答
  • 340 Views
Martin Hope
Sean Brookins
Asked: 2019-08-24 06:48:00 +0800 CST

在事务级别使用字母数字 varchar(30) 实现退化维度?

  • 2

我目前正在设计我的第一个数据模型,我对退化维度的这种特殊实现感到困惑。根据 Kimball 的设计技巧 46,可以使用代理键来实现笨拙的退化维度(字母数字)。我在一个事实表上有一个两列退化键要求,char(6) 和 varchar(30),每个事务行的粒度为一行。因此,与简单整数相比,DD 会占用大量空间;但是,这里没有要添加的其他上下文。最好保持原样并为其提供额外的空间,还是值得将其放入一个单独的维度,同时知道它会与事实表成比例增长(大约 25%,因为每个维度平均有 4 行交易)。

sql-server dimensional-modeling
  • 1 个回答
  • 68 Views
Martin Hope
Arpit Agrawal
Asked: 2019-07-08 10:27:46 +0800 CST

“维度键”是什么意思?

  • 1

我是一名初学者,试图了解数据库的基本概念。我知道几种类型的键(主键、外键、候选键、超级键、代理键......等)。在学习退化维度时,我遇到了“维度键”。

在数据仓库中,退化维度是事实表中没有自己的维度表的维度键----Ralph Kimball

有人可以帮我理解维度键吗?

database-design dimensional-modeling
  • 1 个回答
  • 758 Views
Martin Hope
Arpit Agrawal
Asked: 2019-07-06 19:28:17 +0800 CST

“订单”和“订单行”有什么区别?

  • 2

我试图理解退化维度。但是我经常在事务表中遇到术语“订单行”作为谷物。有人可以解释一下 order 和 order-line 之间的区别吗?

database-design dimensional-modeling
  • 1 个回答
  • 9295 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve