📅  最后修改于: 2023-12-03 15:39:57.839000             🧑  作者: Mango
数据仓库模式是一种设计数据仓库的方法,它是一个逻辑模型,定义了如何在数据仓库中组织数据和关系。它是一种面向主题的模型,主要关注业务中的主题,而不是运营过程。数据仓库模型通常包含星型模型和雪花模型。
星型模型是数据仓库模型中最简单和最流行的模型。它包含一个中心表,称为事实表,以及一些周围的维度表。事实表是包含数字度量的表,而维度表是包含描述事实表中数据的信息的表。
以下是一个简单的星型模型示例代码:
CREATE TABLE Fact_Sales (
SalesID INT IDENTITY PRIMARY KEY,
DateKey INT NOT NULL REFERENCES Dim_Date(DateKey),
ProductKey INT NOT NULL REFERENCES Dim_Product(ProductKey),
StoreKey INT NOT NULL REFERENCES Dim_Store(StoreKey),
SalesAmount DECIMAL(10,2) NOT NULL
);
CREATE TABLE Dim_Date (
DateKey INT PRIMARY KEY,
Date DATE NOT NULL,
Year SMALLINT NOT NULL,
Quarter TINYINT NOT NULL,
Month TINYINT NOT NULL,
Day TINYINT NOT NULL
);
CREATE TABLE Dim_Product (
ProductKey INT PRIMARY KEY,
Product VARCHAR(50) NOT NULL,
Category VARCHAR(50) NOT NULL,
SubCategory VARCHAR(50) NOT NULL
);
CREATE TABLE Dim_Store (
StoreKey INT PRIMARY KEY,
Store VARCHAR(50) NOT NULL,
City VARCHAR(50) NOT NULL,
State VARCHAR(50) NOT NULL
);
雪花模型扩展了星型模型,通过将维度表分解成更小的表来减少重复数据。雪花模型的维度表通常具有层次结构,其中父维度具有子维度。
以下是一个简单的雪花模型示例代码:
CREATE TABLE Fact_Sales (
SalesID INT IDENTITY PRIMARY KEY,
DateKey INT NOT NULL REFERENCES Dim_Date(DateKey),
ProductKey INT NOT NULL REFERENCES Dim_Product(ProductKey),
StoreKey INT NOT NULL REFERENCES Dim_Store(StoreKey),
SalesAmount DECIMAL(10,2) NOT NULL
);
CREATE TABLE Dim_Date (
DateKey INT PRIMARY KEY,
Date DATE NOT NULL,
Year SMALLINT NOT NULL,
Quarter TINYINT NOT NULL,
Month TINYINT NOT NULL,
Day TINYINT NOT NULL
);
CREATE TABLE Dim_Product_Category (
CategoryKey INT PRIMARY KEY,
Category VARCHAR(50) NOT NULL
);
CREATE TABLE Dim_Product_Subcategory (
SubcategoryKey INT PRIMARY KEY,
Subcategory VARCHAR(50) NOT NULL,
CategoryKey INT NOT NULL REFERENCES Dim_Product_Category(CategoryKey)
);
CREATE TABLE Dim_Product (
ProductKey INT PRIMARY KEY,
Product VARCHAR(50) NOT NULL,
SubcategoryKey INT NOT NULL REFERENCES Dim_Product_Subcategory(SubcategoryKey)
);
CREATE TABLE Dim_Store (
StoreKey INT PRIMARY KEY,
Store VARCHAR(50) NOT NULL,
City VARCHAR(50) NOT NULL,
State VARCHAR(50) NOT NULL
);
数据仓库模式是设计数据仓库的一种方法。星型模型是其中最简单和最流行的模型,而雪花模型扩展了星型模型,通过维度表分解来减少数据冗余。您可以根据不同的需求选择合适的模型。