KDT#55 文本事实的处理
在维度建模中,我们经常会遇到一些文本型的事实,它们通常是一些标识信息、属性或者描述信息。这些字段看似属于事实表中的事实,但是它们又不是键、度量事实或者退化维度。
通常,不太建议将这些文本事实字段建立到事实表中,而应该在维度表中给它们找到适当的位置。
当遇到文本型的事实时,我们首先要考虑的应该是这个事实是否属于某个维度表。例如,客户类型标识出每个客户的一个值,应该属于客户维度表。
如果事实不属于已存在的任何一个维度表,我们可以为它们建立单独的维度表或者整合成杂项维度表(Junk Dimension)。建立单独的小维度表是比较容易的方式,但是为增加事实表中的外键个数。这样的维度比较多时,我们可以建立杂项维度表。下面列举了不同情况的一些说明。
1.如果事实表中的维度外键已经很多,如20个左右,那么最好建立杂项维度表。
2.理想情况下,杂项维度的记录数不要超过10万条。如果建立了杂项维度记录过多,可以考虑拆分成独立的维度或者其他杂项维度。
3.从业务规则角度讲,杂项维度中的不同属性应该是不相关的,以免引起误解。如果相关的话,最好不要建立成杂项维度。
另外,如果这个文本是详细的、自由格式的描述信息,并且较少访问的话,把它们建立成事实维度是一个很好的选择。