尝试设计涉及“租赁类型”的星型模式

Posted

技术标签:

【中文标题】尝试设计涉及“租赁类型”的星型模式【英文标题】:Trying to Design Star Schema involving "types of rentals" 【发布时间】:2012-04-18 15:22:39 【问题描述】:

我正在设计一个电影租赁数据仓库

我希望事实表包含电影租赁/退货,但我感到困惑。

电影可以在任何商店退还,所以我需要证明这一点。

我有这些维度:时间、客户信息、电影信息和商店

如果它们是单独的记录,我看不到我会在哪里显示它是出租还是退货?

我有什么选择来设计星型模式来显示这些信息我不知道该把它放在哪里,而且我的脑袋都快爆炸了。

【问题讨论】:

听起来您正在设计一个可操作的数据库而不是数据仓库。也许您需要另一个表来维护每部电影的当前状态。 我已经有一个可操作的数据库,但我正在尝试将其转换为星型模式的数据仓库。我以前从未创建过数据仓库,我见过的所有数据仓库示例似乎都没有“订单类型”之类的东西,或者在我的情况下电影退货或出租,假设“客户行为”是我的事实表谢谢你的回应“机会”。 您所说的“出租”和“退货”是什么意思并不太清楚。您是在谈论客户租借电影然后归还的时间吗?如果是这样,通常会有日期和时间的维度。因此,事实表将被称为“FactMovieRental”,您将拥有租赁期开始和结束的维度键,并且一种可能的粒度是“RentalDurationInHours”。但我在这里可能完全错了,因为我可能误解了这个问题。 【参考方案1】:

从事务级别开始并从那里构建...

FactMovieTransaction
    CustomerKey
    TransactionTypeKey
    StoreKey
    MovieKey
    DateKey
    TimeKey
    <fact 1>
    <fact 2>


DimCustomer
    CustomerKey
    CustomerID (ex. 0000123478)
    CustomerName (ex. Peter Anderson)

DimTransactionType
    TransactionTypeKey 
    TransactionType (ex. Return, Rental)

DimStore
    StoreKey
    StoreID (ex. 234, 212)
    StoreName (ex. BlockBuster#243, BlockBuster#212)

DimMovie
    MovieKey
    MovieName (ex. StarWars)
    MovieDescription
    Genere

DimDate
    DateKey
    Date (ex. 1/1/900 - 1/1/2999)

DimTime
    TimeKey
    Time (ex. 00:00 - 23:59)

【讨论】:

以上是关于尝试设计涉及“租赁类型”的星型模式的主要内容,如果未能解决你的问题,请参考以下文章

需要维度建模帮助 - 平面表到星型模式

将现有的数据库模式转换为星型模式

如何将数据导入星型数据仓库。

星型模式设计帮助

如何设计星型模式

总和和不同计数措施(星型模式设计公案)