为 Sakila 数据仓库创建 Actor 维度
Posted
技术标签:
【中文标题】为 Sakila 数据仓库创建 Actor 维度【英文标题】:Creating Actor Dimension for Sakila Data Warehouse 【发布时间】:2016-01-11 14:00:24 【问题描述】:我正在使用 Sakila 示例数据库创建数据仓库,以了解数据仓库的工作原理。
这是 Sakila db 的结构:https://dev.mysql.com/doc/sakila/en/sakila-structure.html。是关于视频租借的,应该是不言自明的。
我有一个带有一个度量的事实表,即payment
表中每个租金的付款金额。我现在创建了 3 个维度,时间、位置和电影维度。
现在我想创建一个 Actor 维度,以回答“哪些演员在我们的租赁中最受欢迎?”这个问题。然而想了一会儿,我就卡住了。这是我的问题。
创建电影维度很容易,每次付款大约是一部电影。所以在我的事实表中,对于每个payment_id
,我都有一个对应的film_id
,这将是我的事实表和电影维度之间的外键。但是电影和演员之间存在 N-N 关系(通过表 film_actor
),所以我不知道将哪个外键放入我的事实表以链接到相应的演员,因为每个 payment_id
都需要链接到 0..n actor_id
s.
我希望你能理解我的问题。任何帮助将不胜感激。
【问题讨论】:
【参考方案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 的书“Star Schema - The Complete Reference”的第 9 章。如果您正在建造立体仓库,非常值得购买。您会在我们的书架上找到它的链接:
http://ajilius.com/bookshelf/
【讨论】:
桥接表中的权重栏不是必须的吧?就我的电影和演员而言,我实际上不需要权重列。 正确,不是强制性的,只与示例相关。以上是关于为 Sakila 数据仓库创建 Actor 维度的主要内容,如果未能解决你的问题,请参考以下文章