引文和书籍作者具有不同的粒度。因此,它们应该在不同的事实表中。
我会怎么做:
引文事实表:grain 是 1 本书中 1 个人的 1 引文。外部键用于时间维度、被引作者维度、作者维度、书籍维度以及您可能需要的任何其他内容。该数据集市直接为您提供 X 人的引用次数,按时间、书籍作者等细分。
作者事实表:可能有人认为grain是1本书,但实际上并非如此。谷物是 1 本书的 1 位作者。这是最原子级别的数据。要获得书数,您可以定义 1 人合着的 1 本书计为 1 本书、计为 0.5、1/合著者人数或任何其他有用的指标。如果您还想计算书籍,则应使用 1/N 度量以及您认为有用的任何其他度量。
合着关系:试图确定共同发表最多的作者:这比较棘手。这里的事实粒度也是作者身份,但每对共同作者都有一个条目。因此,如果一本书是由 Albert、Bill 和 Charles 写的,您将获得 1 个与作者 Albert 和合著者 Bill 一起的条目,一个是 Albert 作为作者,Charles 作为合著者,等等(所有 6 种组合)。这使您可以获取作者及其合著者的完整列表,并计算他们出现的次数,但所有内容都会显示为重复计算:Albert+Bill 和 Bill+Albert 出现两次。过滤重复项的最佳方法是定义“按字母顺序排列的作者,其中存储 Albert+Bill、Albert+Charles 和 Bill+Charles 但不存储其他作者,或者在客户端,
要组合来自多个数据集市的多个指标,您应该在可视化工具中添加一个后处理层,以交叉引用所有这些结果。
最后,一个评论:这个问题似乎不是最好用数据集市来处理。图书元数据没有固定的数据模式,无模式结构可能最适合进行所有这些搜索(查看 Elastic Search 和 Mongo DB,它们可能更适合这个特定问题。