我必须将数据库转换为DM,但我有一些疑问,这是数据库架构:
http://i.stack.imgur.com/PHha1.png
这是一个简单的数据库,用于存储作者,书籍和其他各种东西(foreig
引文和图书作者的粒度不同。因此,它们应该在不同的事实表中。
我该怎么做:
引文事实表:谷物是1本书中的1人引用。外部键用于时间维度,引用作者维度,作者维度,书籍维度以及您可能需要的任何其他内容。此数据集市为您提供直接计算人X的引用次数,按时间分类,书籍作者等。
作者事实表:人们可能认为谷物是一本书,但实际上并非如此。粮食是1本书的作者。这是最原子级的数据。要获得图书计数,您可以定义由1人共同撰写的1本书计为1本书,计为0.5,1 /共同作者的数量或任何其他有用的度量。如果您还想计算书籍,则应使用1 / N指标以及您认为有用的任何其他指标。
共同作者关系:试图确定发表最多的作者:这比较棘手。这里的事实粒度也是作者,但每对共同作者可用1个条目。因此,如果阿尔伯特,比尔和查尔斯写的一本书,你将获得1作者Albert和共同作者Bill,一个作为Albert的作者和作为共同作者的Charles等(所有6种组合)。这使您可以获得作者及其共同作者的完整列表,并计算他们出现的次数,但所有内容都会显示为双重计算:Albert + Bill和Bill + Albert两次出现。过滤掉重复项的最佳方法是定义“按字母顺序排列的作者,Albert + Bill,Albert + Charles和Bill + Charles存储但不存储其他人,或者在客户端,删除重复项作为查询帖子 - 处理。
要组合从多个数据集市到达的多个指标,您应该向可视化工具添加后处理图层,以交叉引用所有这些结果。
最后,有一条评论:这个问题似乎不是最好用数据集市处理的。书籍元数据没有固定的数据模式,无模式结构可能最适合进行所有搜索(查看Elastic Search和Mongo DB,它们可能更适合这个特定问题。