Project REAL分析服务技术探讨(2)
2007-05-15 09:28:18 来源:WEB开发网有两种类型的属性关联。第一种关联类型,也就是到目前为止我们一直在讨论的,当需要设计集合的时候,系统用来表达在哪里向上滚动的关联。如果读者对SQL Server 2000分析服务比较熟悉,他将会注意到,同时还存在另外一种关联类型。这就是类型的成员属性。
例如,在Project REAL的逻辑模式中,我们有一些属性,例如地方经理的名字以及他(她)的电话号码。这些属性被我们分别规格化到Store维度表中。这些属性由于不同的显示目的或者不同的分析要求,因此都是各不相同的,例如地方、地区和仓库等。一些分析是基于地区的,而不是基于经理的电话号码的。当经理名字和电话号码不必用于分析,我们就可以将它们关联到地区。如果你知道经理的名字或者电话号码,然后就将自动的获得经理所在的地区。因而,在这两个属性之间表达了一种关联。然而这种关联对于分析是没有用处的,但对于终端客户工具是有帮助的。因此将这种成员属性表达为关联,必须在适当的位置标识这种关联,以至于当终端用户右键单击成员的时候,客户端工具能够显示成员属性的列表。
总的来讲,为了确保你设计和实现一个能正常工作的系统,就需要指定属性关联。否则,将会带来隐患。
键的唯一性
在维度中,SQL Serveer 2005需要将一个属性标识为键属性。这个键必须是唯一的。当系统处理维度的时候,它会要求你确保这种唯一性。这对于熟悉SQL Server 2000分析服务的管理员而言,是一个巨大的挑战。
SQL Sever 2000分析服务基于层次的特性允许DBA以多种方法表示键的唯一性。整个维度中的成员键都是成唯一的。例如,在一个维度的所有成员中,只有一个成员的键值为#42。或者,唯一性也能设置到一个级别。例如,Subject级别可能带有一个键值为#42的成员,但Item级别可能也有一个键值为#42的成员。或者唯一性也能够被关闭。在这种情况下,可能会有键值为#42的多个成员。仅有的约束是键值相同的两个成员不会是相同的父亲。系统内部实际发生的是,对于一个仅有一个层次的维度,即使你没有指定唯一的键,它也会创建一个唯一的键。
赞助商链接