我使用Sakila示例数据库创建数据仓库,以了解数据仓库的工作方式。
这是Sakila数据库的结构:https://dev.mysql.com/doc/sakila/en/sakila-structure.html。关于视频租赁,它应该是不言自明的。
我有一个带有一个度量的事实表,这是每个出租的payment
表中的付款金额。我现在创建了三个维度,时间,位置和电影尺寸。
现在我想创建一个Actor维度,回答问题"哪些演员在我们的租赁中最受欢迎?"但是在思考了一下之后我就陷入了困境。这是我的问题。
为了创建电影尺寸,这很容易,每次付款都是一部电影。所以在我的事实表中,对于每个payment_id
,我有一个对应的film_id
,这将是我的事实表和电影维度之间的外键。但是电影和演员之间存在NN关系(通过表film_actor
),所以我不知道将哪个外键放入我的事实表中以链接到相应的演员,因为每个payment_id
需要与0..n actor_id
s。
我希望你理解我的问题。任何帮助将不胜感激。
答案 0 :(得分:1)
你需要一个Bridge表。
这是一个Kimball参考,但它使用了一个困难的例子:
http://www.kimballgroup.com/2012/02/design-tip-142-building-bridges/
这里有一个更好的解释,虽然示例并不完全符合您的需要:
http://www.askjohnobiee.com/2013/08/how-to-bridge-tables-and-many-to-many.html
我知道的桥牌表的最佳讨论是Christopher Adamson的书第9章," Star Schema - The Complete Reference"。如果您正在建立一个维度仓库,那么值得购买。您可以从我们的书架中找到它: