How to ConQueR Why-Not Questions
Quoc Trung Tran and Chee-Yong Chan
Background
数据库查询时,常常出现一些非用户预期的结果。如果系统提供:1)why操作(为什么某一些结果会出现?)2)why not操作(为什么某些结果没有出现)这两种操作,为用户解释查询结果,就能消除用户的疑惑,也能更好地帮助用户改进查询语句。
Related Work
1. Why操作
一般的数据源工具就能解释。
2.Why not操作
主要有2种模型:
1) 找出有罪的操作(culprit):某个导致用户期待的结果被排除的操作。
2) 如果数据源不可靠,则改进数据,使得用户期待的结果出现。
本文针对why not操作。
Contributions
提出了一种自动改进查询语句的机制(refined query),使得新查询语句的查询结果即包括原始的查询结果,也包括丢失的结果(missing),同时将无关的结果降低到最小。
Overview
本文研究的query,其投影操作(project)包括两种:
1) 属性值
2) 聚集操作(count,sum,avg)
投影操作不涉及运算表达式
主要的query分为2种:
1) 基本的select-project-join(SPJ) query
2) SPJ query with aggregation(SPJA)
基本的SPJ select中增加聚集操作,或者增加group-by操作
符号表
D | Database | 数据库 |
Q | Input query | 查询 |
Q(D) | Output of Q on D | 查询结果 |
S={t1,…,tn} | Why not tuples on Q(D) S∩Q(D)= S | Missing的结果集 |
(S, C) | why not question on Q(D) C is a (possible emty) set of Selection conditions defined on the variables appearing in S | C是选择变量的集合 Eg:S={(Alice,$x),(Bob, $y)} And C={$x>$y}
|
Q’ | Refined query 1)Q(D) Q’(D) 2)S Q’(D) , 且满足C的要求 |
|
rel(Q) | From后的shema集合 |
|
Proj (Q) | Select操作中selection属性的集合 |
|
Sel (Q) | Where操作中谓词的集合 |
|
Join(Q) | Where操作中join谓词的集合 |
|
比较refined queries的矩阵
生成多个改进的query,要进行比较,找出最好的。
1) Dissimilarity metric 相异性矩阵
将Q变为Q’的edit distance (from 和where语句)
Edit distance越小,Q’和Q越相似,能够较好地保持原信息,
也能提示user如何去修改query
Edit operation分为4中,代价不同
(1) 修改谓词常量,代价w1=1
(2) 增加select操作,w2=3
(3) 增加/删减join,w3=5
(4) 增加、删减 表,w4=7
最终代价表示为:
,其中ni代表操作i的个数,wi代表操作i的代价
2) Imprecision metric不精准性矩阵
无关元组个数:|Q’(D) – Q(D) –R|
其中,R=S Q’(D)
Refined Q1 比Q2好的标准:
1) DM1》=DM2, 且IM1<=IM2
2) 等号最多只能取一次
ConQueR包括2部分:
1)ConQueRS
生成refined query,找到最similar的query
2)ConQueRP
在1基础上,增加谓词,提高准确度
|
|
|
SPJ的处理过程
1)ConQueRS
2)ConQueRP
SPJA的处理过程
Why not question分为2种
1) why ti.Aagg 《= some value Ki,
2) 涉及》=2个why not tuples,t1,t2(existing/missing tuple),
问 t1.Aagg和t2.Aagg的关系