如何将两个事实表连接到一维表
Posted
技术标签:
【中文标题】如何将两个事实表连接到一维表【英文标题】:How to connect two fact tables to one dimensional table 【发布时间】:2021-01-15 00:25:57 【问题描述】:我有两个事实表(HistoricTable、ForecastTable)。两个表都使用将 productID 和 WeekID 组合在一起的复合键。 ForecastTable 有未来的 weekID 和历史的有以前的。我希望这两个 ProductID 都引用一个名为 ProductTable 的维度表。如何连接它们?
我的假设是创建一个附加表,通过 UNION 连接查询 HistoricTable 和 ForecastTable,并将其连接到 ProductTable。这个逻辑对吗?
Table Image Layout
【问题讨论】:
为什么不通过 ProductID 将两个表的外键都指向 ProductTable? (请不要给像xyzTable这样的表名,这很烦人) “连接它们”是什么意思?你为什么要这么做?你是什么意思,一个“查询表”? (观点?)请只问一个(特定研究的非重复)问题。您是如何第一次坚持遵循已发布的设计方法或编写什么代码?对于代码问题,请提供minimal reproducible example。 PS请use text, not images/links, for text--including tables & ERDs。只提供您需要的东西并将其与您的问题联系起来。仅将图像用于无法表达为文本或增强文本的内容。在图片中包含图例/键和说明。 【参考方案1】:我希望这两个 ProductID 都引用一个名为 ProductTable 的维度表。
您可以在historic
和product
之间建立一个外键,在forecast
和product
之间建立另一个外键。
例如:
create table product (
id int primary key not null,
name varchar(10)
);
create table historic (
product_id int not null references product (id),
week_id int not null,
units_sold int,
primary key (product_id, week_id)
);
create table forecast (
product_id int not null references product (id),
week_id int not null,
forecast_units int,
primary key (product_id, week_id)
);
【讨论】:
以上是关于如何将两个事实表连接到一维表的主要内容,如果未能解决你的问题,请参考以下文章
mysql - 如何使用父表中的值将连接表连接到另一个连接表?
使用 RIGHT JOINT 将两个表连接到一个 datagridview
Hibernate:如何在注释中将三个 3 表连接到一个连接表中?