关系测试
数据仓库中各种表之间存在这一种关系。这种关系即是人们早已熟知的“参照完整性”。“参照完整性”测试是数据仓库测试的一个重要模块。“参照完整性”也称为“引用完整性”(在本文中统一称为参照完整性),参照完整性指添加,修改或删除记录时,表间的关联性不可破坏。在SQL Server中,参照完整性基于主键与外键或唯一键(Unique)与外键的关系。参照完整性确保在各个关联的表中的值是一致的【1】。 对于数据仓库,存在着事实表(Fact Table)和维度表(Dimension Table),如果删除维度表中的某条记录,那么对应的事实表也必须删除相关记录, 如果事实表插入新的记录,那么维度表也必须插入相关的记录。
如下图所示,有一个事实表和五个维度表(维度表A,维度表B,维度表C,维度表D,维度表E),这六个表通过主外键关系相关联。事实表和维度表A通过A_ID建立参照完整性的关系;同样,事实表和维度表B通过B_ID建立参照完整性的关系;事实表和维度表C通过C_ID建立参照完整性的关系;事实表和维度表D通过D_ID建立参照完整性的关系;事实表和维度表E通过E_ID建立参照完整性的关系。因此,作为测试人员必须至少写5个测试用例来测试这个参照完整性。
可以用如下5个测试用例来验证上图中数据仓库的星型模型中事实表和维度表的参照完整性: •
Select count (1) from 事实表nolock where A_ID not in (select A_ID from 维度表A nolock)
Select count (1) from 事实表nolock where B_ID not in (select B_ID from 维度表B nolock)
Select count (1) from 事实表nolock where C_ID not in (select C_ID from 维度表C nolock)
Select count (1) from 事实表nolock where D_ID not in (select A_ID from 维度表D nolock)
Select count (1) from 事实表nolock where E_ID not in (select A_ID from 维度表E nolock)
如果以上5个测试用例返回不等于0的值,则说明不满足参考完整性,前端立方体(Cube)必定会刷新失败。