【问题标题】:Difference between Entity attribute value model and data warehousingEntity属性值模型与数据仓库的区别
【发布时间】:2011-03-03 19:57:41
【问题描述】:

我正在阅读“实体属性值模型”,这让我想起了您在数据仓库中使用的星型模式。

一张表包含所有事实(即使您将苹果、香蕉混合在一起,例如种植日期、重量、价格、颜色、类型、名称)和一堆包含详细信息的表(例如,infected_with _banana_virus_type、apple_specific_acid_level)

我在这两种方法中都这样做,所以我看不出这些与文字有什么区别?

请赐教。干杯

【问题讨论】:

    标签: database relational-database data-warehouse


    【解决方案1】:

    所有方法中,您有实体、属性和值。从逻辑上讲,一切都归结为这一点。因为everything都有实体、属性和值,所以你总是可以声称所有的东西都是一样的。从这个角度来看,所有数据结构都是相同的。

    请画出星型图。有一个事实(比如网站 GET 请求)和一些维度,如时间、IP 地址、请求的资源路径和会话用户。

    请实际绘制实际的图表。不看字,看五张桌子的图片。

    画完那张图后,画一个 EAV 表。

    其实是用实体、属性、值列画图。不要读单词。看一张桌子的图片。

    好吗?

    现在写下两张图片之间的所有差异。表数。列数。每列的数据类型。所有的差异。

    我们还没有完成。

    编写一个 SQL 查询,以使用星型模式计算给定用户在一周中的某一天的 GET 请求。实际编写SQL。这是一个三表连接。使用 GROUP BY 和 WHERE

    尝试编写一个 SQL 查询,按星期几对 EAV 表的 GET 请求进行计数。

    好吗?

    现在写下两个查询之间的所有差异。例如,SQL 的复杂性。 SQL 的性能。编写 SQL 所需的时间。

    现在你知道它们之间的区别了。

    【讨论】:

    • +1 我不知道两者的区别,但这是一个很好的答案。
    • +100 谢谢。好的,我按照您所说的做了,如果我尝试将主 EAV 表保持在最小限度,我会看到很多差异。但是,一旦您将一些通用属性拉入 EAV 主表,它就会变得非常像星星。
    • “EAV 主表中的一般属性”?这意味着什么? EAV 表中只能有三个属性:实体名称、属性名称和值。你在说什么?
    • 好的,我正在慢慢理解。 EAV实际上意味着所有属性都通过元数据映射,并且属性没有明确的列名(这是我对EAV的理解)。在阅读时,我听说如果属性在应用程序逻辑中被命名,它们应该有一个 exspisit 列。因为我不想要一个稀疏表,所以我将这些稀疏属性拉到单独的表中。所以主表有一堆经常使用 80% 的属性。这是某种混合 EAV 还是经典恒星?
    • @hans.g:没有“混合EAV”。 EAV 是一种极简抽象。一旦你离开它,你就在做普通的关系数据库设计。那么“明星”与“非明星”完全是品味和判断的问题。但 EAV 是一种特定的、狭窄的、非关系型数据库模型。
    猜你喜欢
    • 2014-07-04
    • 2012-11-20
    • 2017-11-14
    • 2012-12-28
    • 2011-12-08
    • 2012-08-22
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    相关资源
    最近更新 更多