我的数据库中有以下表格(这只是一个部分)。
一般情况下,这不是整个数据库,我还有其他的#1;一对多" Project,ProjectLocaion等的关系。例如,每个项目都有许多实现者(ProjectImplementers表与FK项目)和ProjectImplementer可以有自己的"一对多"与FK到ProjectImplementer表的关系表。所以我有3种表格
这是我的数据库结构。
CREATE TABLE C_Location (
LocationID INT PRIMARY KEY CLUSTERED IDENTITY,
Name NVARCHAR(50)
)
GO
CREATE TABLE C_ProjectStatus (
ProjectStatusID INT IDENTITY PRIMARY KEY,
Name NVARCHAR(50)
)
CREATE TABLE Project (
ProjectID INT IDENTITY PRIMARY KEY,
Title NVARCHAR(50),
StartDate DATETIME,
ProjectStatusID INT FOREIGN KEY REFERENCES dbo.C_ProjectStatus(ProjectStatusID)
)
GO
CREATE TABLE ProjectLocation (
PojectLocationID INT IDENTITY PRIMARY KEY,
ProjectID INT FOREIGN KEY REFERENCES dbo.Project(ProjectID),
LocationID INT FOREIGN KEY REFERENCES dbo.C_Location(LocationID)
)
GO
CREATE TABLE PorjectLocationParticipant (
ProjectLocationParticipantID INT PRIMARY KEY IDENTITY,
ProjectLocationID INT FOREIGN KEY REFERENCES dbo.ProjectLocation(PojectLocationID),
ParticipantFirstName NVARCHAR(50),
ParticipantLastName NVARCHAR(50)
)
我是数据仓库中的新手,所以我需要帮助才能将此结构转换为星型模式。
答案 0 :(得分:0)
创建一个包含所有度量的表 - 称为事实表。在您的情况下,将现有表的所有主键都放入一个表中并与它们建立外键关系。现有表格将是您的尺寸。如果projectlocation和project表形成一个父子关系并且它的标准通过out,通过将表保留为现在添加的fact表创建一个雪花模式。如果您只查找星型模式,请将项目和项目位置表合并到一个表中(这将成为一个维度),同样适用于所有表。这样,每个维度仅保存与数据仓库的一个实体相关的数据。