相似性数据库与数据质量模型的技术解析
立即解锁
发布时间: 2025-08-23 00:24:08 阅读量: 2 订阅数: 7 

# 相似性数据库与数据质量模型的技术解析
## 相似性数据库基础
### 真值度在查询中的应用
在数据库查询中,真值度可作为自然权重,帮助我们更灵活地设置查询要求。例如,对于信用评分的查询,`0.7 ⇒(score = 600)` 可解读为“分数至少在 0.7 的程度上与 600 相似”。这一表达式相较于 `score = 600` 是一个更弱的约束条件,体现在查询结果的排名上,使用 `0.7 ⇒(score = 600)` 时的排名会更高。这表明真值度能让我们在查询中更强调特定要求。除了相似性比较,我们还可以考虑其他近似比较器,如“近似大于”等。
### 基于相似性的连接操作
基于相似性的连接是将两个表的信息合并为一个表的基本操作,它基于两列值的相似性,或者更一般地,基于选择公式的比较器。这里我们讨论一种推广经典 theta - 连接的特定连接操作。
对于具有不相交关系模式的排名数据表 D1 和 D2,我们定义笛卡尔积 `D1 × D2` 如下:
`(D1 × D2)(st) = D1(s) ⊗D2(t)`,其中 `D1(s) > 0` 且 `D2(t) > 0`。
若 D1 和 D2 分别是查询 Q1 和 Q2 的结果,那么 `st` 在 `D1 × D2` 中的排名表示 “s 匹配 Q1 且 t 匹配 Q2” 的程度。显然,如果 L 是二元布尔代数,`D1 × D2` 就变成了普通的关系笛卡尔积。
利用上述定义,我们可以通过选择公式 ϕ 定义 D1 和 D2 的连接 `D1 ▷◁ϕ D2`:
`D1 ▷◁ϕ D2 = σϕ(D1 × D2)`,等价于 `(D1 ▷◁ϕ D2)(st) = D1(s) ⊗D2(t) ⊗||ϕ||st`。
当 ϕ 为 `y1 = y2` 的形式,其中 `y1` 和 `y2` 是 D1 和 D2 中定义在具有相似性的同一域上的属性时:
`(D1 ▷◁y1=y2 D2)(st) = D1(s) ⊗D2(t) ⊗(s[y1] ≈y1 t[y2])`,这可以看作是经典等值连接的推广。
与经典等值连接不同,`D1 ▷◁y1=y2 D2` 包含 `y1` 和 `y2` 两个属性,因为我们进行的是基于相似性的连接,不仅会对 `y1` 和 `y2` 值相等的元组进行连接,还会对值相似的元组进行连接。
### 示例分析
假设 D1 是示例 3 中的买家排名数据表,D2 是查询前的卖家排名表(所有非零排名都等于 1)。如果我们想找出哪些买家可能根据房产类型和价格需求购买房产,可以使用以下基于相似性的连接:
`top5(D1 ▷◁type1=type2 & price1=price2 D2)` 并投影到感兴趣的属性上,结果如下:
| 排名 | name1 | price1 | price2 | type1 | type2 | bdrms2 |
| --- | --- | --- | --- | --- | --- | --- |
| 1.0 | Adams | 250,000 | 250,000 | Single Family | Single Family | 3 |
| 0.8 | Black | 325,000 | 370,000 | Single Family | Single Family | 4 |
| 0.8 | Flores | 200,000 | 250,000 | Penthouse | Penthouse | 2 |
| 0.7 | Black | 325,000 | 320,000 | Single Family | Ranch | 4 |
| 0.7 | Enke | 240,000 | 250,000 | Ranch | Single Family | 3 |
从结果可以看出,前 5 个匹配中包含一个完美匹配和 4 个几乎完美或非常好的匹配。在这种情况下,使用普通的等值连接可能会产生空数据表,而基于相似性的连接能找到更有价值的匹配。
再看查询 `top5(D1 ▷◁type1=type2 & price1=price2 & score=750 D2)` 投影到感兴趣属性的结果:
| 排名 | name1 | price1 | price2 | type1 | type2 | score |
| --- |
0
0
复制全文
相关推荐










