📜  在数据仓库中设计星型模式

📅  最后修改于: 2022-05-13 01:58:43.764000             🧑  作者: Mango

在数据仓库中设计星型模式

星型模式是数据集市模式中的基础模式,也是最简单的。此模式广泛用于开发或构建数据仓库和维度数据集市。它包括一个或多个索引任意数量的维度表的事实表。星型模式是雪花模式的必要原因。它对于处理基本查询也很有效。

据说它是一颗星,因为它的物理模型类似于星形,在其中心有一个事实表,在其外围有代表星点的维度表。在本文中,我们将解决数据仓库中的一个重要设计问题。

问题陈述

考虑一个订单管理操作数据库,该数据库跟踪订单号、日期、请求的发货日期、客户及其发货和账单地址、产品及其数量和总金额、接受和处理订单的销售代表、交易(促销)和折扣建议/提供给客户。您必须设计一个数据仓库,该数据仓库将从上述操作数据库中更新,并且应该通过帮助回答有关每个客户的净订单金额、产品、促销或交易以及他们的销售代表或代理。对请求的发货日期的分析对于分析也很重要。允许以各种货币执行订单金额分析也很重要:美元、迪拉姆、欧元。

 画出显示主要属性的星型模式,包括主键、外键和事实。

第 1 步:识别要建模的业务流程以识别事实表。

我们在这里谈论销售。事实表将被命名为“销售”。
事实或措施是:

  • Net_amount_per_customer
  • Net_amount_per_product
  • Net_amount_per_promotion

第 2 步:选择事实表的维度。

尺寸是

  • 销售代表
  • 时间
  • 顾客
  • 产品
  • 命令

第三步:选择维度表的属性。

SalesRepresentative 维度的属性:

  • Sales_rep_id(主键和代理键)
  • 姓名
  • 交易
  • 折扣
  • 时间维度的属性:
    • Time_id(主键和代理键)
  • 客户维度的属性:
    • Customer_id(主键和代理键)
    • 姓名
    • 帐单地址
    • 收件地址
  • 产品维度属性:
    • Product_id(主键和代理键)
    • 质量
    • 价格
    • 产品编号
    • 请求发货日期
    • 类型
  • 订单维度的属性:
    • order_id(主键和代理键)
    • 订单号
    • 日期
    • 数量

第 4 步:绘制星型模式。

现在拿 我们设计中的代理键的一个示例。使用这个代理键的目的是什么?

在我们的星型模式中,我们为每个维度表使用了一个代理键。使用的代理键是:

  • Sales_rep_id
  • Time_id
  • 客户ID
  • Product_id
  • 订单编号

代理键用于唯一标识每个维度表中的行。我们不能使用维度表中的业务键来唯一标识记录。因为业务密钥可能会随着时间而改变或可能被重复使用。

做出必要的假设来计算 5 年内 DW 的近似大小(MB)。

问题陈述-2:

考虑仅在印度设有业务的零售店特许经营权。特许经营的分析要求包括了解每个消费者一起购买了哪些商品。他们希望了解以卢比为单位的销售额以及各个商店的数量以及所在城市、州和地区的销售数据。他们还想知道不同月份、季度和年份的销售额有何不同;销售数据如何随一天中的时间而变化——例如,上午时间的销售额与晚上时间的销售额有何不同等;男性消费者的购买习惯与女性消费者有何不同;已婚消费者的购买习惯与未婚消费者有何不同;消费者的购买习惯如何随他们的母语(如卡纳德语、泰卢固语、马拉地语等)而变化。

为这样的数据仓库设计一个星型模式,清楚地识别事实表和维度表、它们的主键和外键。此外,请提及事实表中的哪些列代表维度,哪些列代表度量或事实。

第 1 步:识别要建模的业务流程以识别事实表。

我们在这里谈论销售。事实表将被命名为“销售”。事实或措施是

1. Total_sales_amount,2. Total_sales_quantity。

第 2 步:选择事实表的维度。

尺寸为:

  • 位置(商店),
  • 日期,
  • 顾客,
  • 产品,
  • 时间

第三步:选择维度表的属性。

位置维度的属性:

  • Location_id(主键和代理键)
  • 城市
  • 状态
  • 地区(农村或城市)

日期维度的属性:

  • data_id(主键和代理键)
  • 星期
  • 四分之一

客户维度的属性:

  • Customer_id(主键和代理键)
  • 姓名
  • 性别
  • 婚姻状况
  • 语言

产品维度属性:

  • Product_id(主键和代理键)
  • 姓名
  • 类型
  • 价格

时间维度的属性:

  • Time_id(主键和代理键)
  • am_pm_indicator

事实表的主键是复合键,由所有 5 个维度的主键组成。
销售的 PK 是 {Location_id, Date_id, Customer_id, Product_id, Time_id}

第 4 步:维度表中的属性层次结构。

Location: city -> district -> state
Date: day -> week -> month -> quarter -> year.

第 5 步:绘制星型模式。

编写一个在您的模式上运行的 SQL 语句,并返回 2005 年 5 月已婚客户和未婚客户在晚上的购买次数。

询问:

SELECT marital_status, SUM(Total_sales_quantity)
FROM Sales S, Date D, Customer C, Time T
WHERE S.Date_id = D.Date_id AND
S.Customer_id = C.Customer_id AND
S.Time_id = T.TIme_id AND
T.am_pm_indicator = 'PM" AND
D.month = 'May' AND
D.year = 2005
GROUP BY marital_status;

它将产生 2 行,每行用于已婚和未婚客户。