数据仓库中的客户维度 - 将人员与公司混合

时间:2013-03-29 13:05:56

标签: database-design data-warehouse

我们确实有很多客户 - 其中大多数是人,但其中一些是公司。这两组都有相同的事实,但它们的维度属性不同(样本):

Person
 FirstName
 LastName
 BirthDate
 Sex
 Region
 City
Company
 Name
 RegistrationNumber
 Region
 City

将人和公司纳入一个维度是否是个好主意?

Customers
 FirstName
 LastName
 BirthDate
 Sex
 Name
 RegistrationNumber
 Type (Person,Company)

值得一提的是,也有自雇客户 - 在这种情况下,他们拥有人和公司的所有属性。

如果我使用两个维度,它将使所有分析内容更难,因为大多数时候我对这两个组感兴趣。另一方面,如果我只使用一个维度,则会有很多默认值。我已经检查了“数据仓库工具包”,但没有找到相关信息。

我的问题 - 我应该创建两个表,一个表还是使用完全不同的方法来设计数据仓库中的客户维度?

2 个答案:

答案 0 :(得分:4)

  

将人和公司纳入一个维度是否是个好主意?

在数据仓库中,是的。信息不会更新,您不关心空列或默认列,查询的简便性(速度)更重要。

在操作数据库中规范化数据的一个原因是消除更新异常的可能性。当数据存储在多个位置时,可以在一个地方更新,而不是在另一个地方更新。

答案 1 :(得分:0)

我的理由是你解释的场景,我们可以维护两个维度,并且可以在Fact中包含两个键。

事实可能包含PERSON_KEY和CUSTOMER_KEY。所以,如果它是一个人,PERSON_KEY可以是-1,或者如果它是另一种方式,COMPANY_KEY可以是-1。如果需要将人员或公司详细信息用于系统内的某些其他目的,则可以考虑这一点。我认为维度意味着可能达到精细程度。