CN105095522A - 基于最近邻搜索的关系表集合外键识别方法 - Google Patents
基于最近邻搜索的关系表集合外键识别方法 Download PDFInfo
- Publication number
- CN105095522A CN105095522A CN201510616597.7A CN201510616597A CN105095522A CN 105095522 A CN105095522 A CN 105095522A CN 201510616597 A CN201510616597 A CN 201510616597A CN 105095522 A CN105095522 A CN 105095522A
- Authority
- CN
- China
- Prior art keywords
- attribute
- tuple
- relation table
- attributes
- dependence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
Abstract
本发明公布了一种基于最近邻搜索的关系表集合外键识别方法,属于数据库技术应用领域。本发明的基本步骤如下:首先改进现有的包含依赖识别方法,找出关系表中单属性和多属性的包含依赖;然后计算满足包含依赖的属性特征,包括特异元组个数、属性名、元组均值、元组方差、元组平均长度和中位数等,并将这些特征映射到高维欧氏空间中,用得到的高维向量表示原属性;最后基于外键是主键的最近邻,通过最近邻查找方法找出关系表集合中所有的外键。本发明提出的关系表集合外键识别方法,能够为大规模关系表集合自动构建外键关系提供一种有效的解决方案,该发明能应用于数据库设计、数据集成、模式匹配等领域。
Description
技术领域
本发明属于数据库技术领域,具体涉及一种新型的关系表集合外键识别技术。
背景技术
数据库模式是理解数据库结构与特征的基础,在数据建模、查询优化、数据索引等方面具有重要作用。在关系数据库中,主键、外键关系是数据库模式的重要组成部分。虽然绝大多数的数据库管理系统支持显式地指定表与表之间的外键关系,但在实际数据库应用中,往往有很多原因导致外键关系不完整,如开发者对数据理解不够透彻、数据自身存在不一致性、设计数据库时考虑到效率等。同时,随着数据库关系模式复杂度的增加,人工识别数据表之间的外键越来越困难。自动识别数据表之间的外键关系,不仅是查询优化和数据集成的基础,而且有助于数据库开发者和维护者改进数据库设计。因此,如何有效识别数据表之间的外键关系具有重要理论意义与实际应用价值。
鉴于外键识别的重要性,国内外许多研究者已做过相关研究,主流的研究方法是将外键识别分为两个阶段:首先发现关系表集合中的包含依赖,缩小外键候选集的范围,然后利用外键的特征识别外键。在关系数据库中,“外键中的元组集合是其参照的主键元组集合的子集”,所以外键一定满足包含依赖。但是,仅仅发现包含依赖是不够的,比如数据库中的自增列,在很多数据库实例中,自增列之间满足包含依赖关系,但实际上它们各自是独立的,是相应表的主键,相互之间并没有外键关系。给定一个数据库实例,满足包含依赖但并不是外键的属性在所有的包含依赖中占有很大比例。因此,为了能准确地发现数据表集合中的外键,需要采用有效的方法过滤掉非外键包含依赖。
RostinA等针对大量的数据库系统实例进行统计,总结出了外键的十个特征(外键元组应该覆盖很多主键元组,作为外键的属性往往不再作为主键被其他外键参照等),RostinA等利用这些特征使用机器学习来识别外键,但他们提出的这些特征都很容易找出反例。
MeihuiZhang等也通过分析提出了外键的另一特征——“外键元组是其参照的主键元组的均匀随机样本”,据此设计算法并实现,取得了很好的实验结果。现在外键发现的研究主要集中在单个属性的外键识别,很少有研究考虑了多属性的外键识别,主要原因可能是多属性外键识别的算法复杂度较高,而且由于数据库管理系统引入了自增列,数据库设计者很少在数据库系统中设计多属性外键。
除了基于包含依赖的外键识别方法,Lopes等提出了使用SQL查询历史来推断外键,该方法主要基于“SQL查询中的JOIN操作往往是在主键和外键上进行连接”,这种方法需要大量的SQL查询历史,而SQL查询日志一般是难以获得的。此外,这种方法本身也可能带来一些误报,比如:T2.ID和T3.ID都参考T1.ID,实际查询时也有可能连接(JOIN)T2和T3表,但是T2.ID和T3.ID之间没有外键关系。
外键识别本质上是依靠外键和主键之间固有的语义联系,现有技术方法从不同角度反映属性之间的语义关联程度,但现有算法对外键特征考虑并不全面,无法处理不同领域的外键识别问题。另一方面,现有的外键识别算法模型复杂,难以应用到大规模关系表集合上。
发明内容
本发明的目的是解决大规模关系表集合中外键识别问题,使用统计特征表示关系表中的属性,将关系表外键识别问题转化成高维空间中最近邻搜索问题,提出了一种高效简洁的外键识别方法——基于最近邻搜索的关系表集合外键识别方法。该方法在提高外键识别效率的同时还能保证外键识别的准确度,易于应用到大规模关系表集合上。
本发明提供的基于最近邻搜索的关系表集合外键识别方法的具体步骤如下:
第1、识别关系表集合中的包含依赖
定义1:如果A,B满足如下两个条件,则属性对(A,B)满足包含依赖,记作
其中A表示依赖属性,B表示被参照属性::
(1)A,B有相同的属性个数;
(2)属性A中的元组包含在属性B中;
关系表中少量的数据不一致性可能是由于误操作、网络传输以及数据集成等原因造成的,应适当放松包含依赖的限制,以得到更合理的结果;
定义2:C,D分别为两个属性,包含系数定义如下:
在实际应用中,如果C和D满足σ(C,D)≥θ,其中θ是自定义的,就认为C和D满足包含依赖,如设定θ=0.95,表示C中的元组有95%以上都在D中。
第1.1、使用并行算法识别关系表集合中的单列包含依赖,其具体步骤包括:
第1.1.1、查询属性中的所有元组,去除属性中的重复元组并对元组按从小到大进行排序(e.g.SELECTDISTINCTattributeFROMtableORDERBYattribute);
第1.1.2、假设属性集合为{A1,A2,…,An},初始时,属性Ai能够参照的属性为{A1,A2,…,Ai-1,Ai+1,…,An},i∈{1,2,3,…,n};各属性有一个指向最小元组的指针;
第1.1.3、通过移动指针并行地按序遍历第1.1.1步得到的属性元组,通过比较元组值是否存在于某个属性中,确定属性之间的参照与被参照关系,当元组a∈Ai,则可以确定从Ai的候选属性集合中删除Aj,按此方法遍历所有元组值,如果Ai的候选属性集合中仍有属性,即为包含Ai的属性;
第1.2、识别关系表集合中的多列包含依赖,其具体步骤包括:
第1.2.1、候选属性对集合剪枝
包含依赖的投影包含性质:
若m个属性满足包含依赖,则其中任意m-1个属性必定也对应满足包含依赖,即 其中ti∈{1,2,…,m};
该性质可以用来对多列包含依赖候选集剪枝,假设现有A、B、C、D、E、F六个属性,A、B、C在关系表1中,D、E、F在关系表2中,通过第1.1步得到则可以推出即这五组属性对不用再比较;所述外键识别方法的属性对生成策略是自底向上的生成候选属性对,利用较少属性的候选对判断结果,对更多属性的属性对进行剪枝;
第1.2.2、查询候选属性组合的所有元组,去除重复元组并按从小到大进行排序,排序方法:先按组合中第一属性的大小排序,若第一属性值相等,按第二属性的大小排序,依此类推;
第1.2.3、使用与第1.1.2步和第1.1.3步类似的方法,并行遍历第1.2.2步得到的属性元组,确定属性组合之间的包含关系;
第2、从包含依赖集合中筛选出外键
鉴于主键、外键属性本质上的语义相关性,通过查找属性集合中主键的最近邻找出对应的外键;
第2.1、以属性的统计特征来表示一个属性,经过第1.1.1步以及第1.2.2步,属性元组均已排序,使用以下特征来表示一个属性:
不同值个数(DistinctTuples,DT):是指属性中不同值个数,
属性名(AttributeName,N):属性的名称,
平均值(Average,A):是指数值型属性的平均值,字符型该属性记为0,
方差(Variance,V):是指数值型属性的方差,字符型该属性记为0,
属性值平均长度(AverageLength,AL):是指字符型属性的平均长度,数值型属性该特征记为0,
中位数(Median,M):是指属性的中位数;
第2.2、对属性的统计特征进行归一化,主要考虑以下两方面:
第2.2.1、对于数值型属性而言,属性值取值范围会影响属性对之间的比较,将每对属性都除以被参照属性的取值范围来消除这种偏差;
第2.2.2、对于字符型属性而言,属性值的长度也会影响属性对之间的比较,将每对属性都除以被参照属性的属性值平均长度来消除这种偏差;
第2.3、字符串之间的距离使用编辑距离来度量,FastMap算法能够将特征中的字符串类型转换成向量,并保持原有的相似度,这样得到一个能够代表原属性的特征向量,记作featureX,其中X表示属性名;
定义3:属性间距离定义为特征向量的欧氏距离:
dist(A,B)=||featureA-featureB||
其中A,B是包含依赖属性集合中的属性,featureX是一个特征向量,是属性X的特征表示;
通过研究发现,所有满足包含依赖的属性对的距离具有如图2所示的特点,即主键、外键之间的距离普遍远小于普通包含依赖属性对之间的距离;因此,在一个数据库实例中,容易找出这个明显的距离差距,可据此设置属性对距离阈值;
第2.4、计算所有满足包含依赖的属性对的距离,并按距离从小到大对属性对排序,将距离有明显变化的地方(即对应的距离)设为距离阈值R;在所有包含依赖属性对中,若其中一个属性是主键,且两个属性的距离小于R,则认为它们是一对主外键关系。
本发明的优点和积极效果:
本发明通过研究现有的外键识别方法,首先改进包含依赖发现方法,实现了多属性包含依赖发现方法,其次,通过分析大量数据库实例中外键设计方法,提出6个统计特征表示关系表中的属性,将关系表属性映射成欧氏空间中的点,最后,基于外键是主键的最近邻,筛选出包含依赖集合中的外键。本发明能高效准确地识别关系表集合中的外键,为大规模关系表集合中的外键识别提供了一种有效的解决方案。
附图说明
图1本发明方法总流程图;
图2主外键属性对距离和普通包含依赖属性对距离的明显差距,图为TPC-H的实验结果;
图3TPC-H模式图;
图4包含依赖候选集剪枝举例;
图5属性特征归一化举例。
具体实施方式
本发明方法的处理流程如图1所示。
下面结合实例(TPC-HBenchmark)介绍本发明的具体实施方式,如图3所示,TPC-H数据库共有8张表,其中2张表的主键是复合主键,该数据库中共有8个外键,其中1个是多属性外键关系。
步骤1:包含依赖属性对识别。
第1.1、设置包含系数阈值:表示依赖属性A的属性值有95%在参照属性B中,则认为依此标准进行包含依赖发现。
第1.2、发现单属性包含依赖,其具体实施方法如下:
第1.2.1、对关系表中的所有属性,查询属性中的所有元组,去除属性中的重复元组,并将属性值按元组大小从小到大进行排序(e.g.SELECTDISTINCTattributeFROMtableORDERBYattribute);
第1.2.2、假设属性集合为{A1,A2,…,An},初始时,属性Ai可能参照的属性为{A1,A2,…,Ai-1,Ai+1,…,An},i∈{1,2,3,…,n};各属性有一个指向其最小元组的指针;
第1.2.3、通过移动指针并行地按序遍历第1.1.1步得到的属性元组,通过比较元组值是否存在于某个属性中,确定属性之间的参照与被参照关系,如元组a∈Ai,则可以确定从Ai的候选属性集合中删除Aj,按此方法遍历所有元组值,如果Ai的候选属性集合中仍有属性,即为包含Ai的属性。
表1给出一个单属性包含依赖识别的例子,属性A={1,2,3,4},B={2,4},C={1,2,4,5},共有n(n-1)=3×2=6个属性对。(每个属性既可能是依赖属性,也可能是被参照属性)。Atts表示包含当前元组的属性集合,refs表示包含该属性的属性(即被参照属性)集合。
1)初始化:各属性对应的指针指向属性中第一个元组,初始化refs,各属性作为依赖属性,被参照属性是除它本身的所有其他属性,如表1中所示,A.refs={B,C},B.refs={A,C},C.refs={A,B};
2)按序遍历:按照已排好的顺序遍历,删除refs中不可能是被参照属性的属性,如表1所示,在第一步中,1∈A,1∈C且所以经过第一步之后,A.refs={C},B.refs={A,C},C.refs={A},然后向下移动A、C的指针(指向2),B的指针不动;
3)按上述方法继续扫描元组,当遍历了所有值后即可找到包含依赖,B.refs={A,C},即
表1.单属性包含依赖识别举例
第1.3、发现单属性包含依赖,其具体实施方法如下:
第1.3.1、利用包含依赖投影包含性质对候选属性集进行剪枝
若m个属性满足包含依赖,则其中任意m-1个属性必定也对应满足包含依赖,即 其中ti∈{1,2,…,m};
该性质可以用来对多列包含依赖候选集剪枝,如图4所示,假设有A、B、C、D、E、F六个属性,A、B、C属于关系表1中,D、E、F属于关系表2中,假设通过第1.2步单属性包含依赖识别后发现根据包含依赖的投影包含性质可以推出因此这五组属性对不用再比较;本发明为充分利用包含依赖的性质,采用自底向上的候选属性对生成策略,利用较少属性的候选对判断结果,对更多属性的属性对进行剪枝;
第1.3.2、查询候选属性组合的所有元组,去除重复元组并按从小到大进行排序,排序方法:先按组合中第一属性的大小排序,若第一属性值相等,按第二属性的大小排序,依此类推;
第1.3.3、使用与第1.2.2步和第1.2.3步类似的方法,并行遍历第1.3.2步得到的属性元组,确定属性组合之间的包含关系;
包含依赖识别具体实现的伪代码如下:
算法1:包含依赖识别INDDetection
输入:关系表集合T,已知关系表中的主键
输出:满足包含依赖的属性对集合IND
该算法关系表集合包含依赖识别方法。该算法将单属性包含依赖和多属性分开处理,初始化是IND集合为空,每发现一个包含依赖属性对,将其加入IND中。cdt是候选属性组合集合,它根据属性组合中属性的个数(定义为level)组织,即level相同的候选属性组合视为同一层的候选属性组合。初始时,每个主键的deps集合为空,如果发现某个属性的refs集合中包含该主键,则将该属性加入这个主键的deps中。该算法的前提是关系表集合中的主键属性已知,然后找出包含在主键中的属性,对于单属性主键而言,只需遍历cdt中level=1的属性就能找到包含在主键中的属性;对于多属性主键而言,按level从小到大遍历cdt集合,并在遍历过程中根据包含依赖的投影包含性质对cdt剪枝,这样能有效降低算法复杂度,最终找出包含在多属性主键中的属性组合。程序最后返回包含依赖属性对集合IND。
以TPC-H数据集为例,通过上述算法共发现48组包含依赖,表2展示了TPC-H中部分包含依赖属性对。
表2.TPC-H部分包含依赖
被参照表名 | 被参照列名 | 依赖表名 | 依赖列名 |
NATION | N_NATIONKEY | SUPPLIER | S_NATIONKEY |
NATION | N_NATIONKEY | CUSTOMER | C_NATIONKEY |
NATION | N_NATIONKEY | REGION | R_REGIONKEY |
NATION | N_NATIONKEY | LINEITEM | L_LINENUMBER |
NATION | N_NATIONKEY | ORDERS | O_SHIPPRIORITY |
ORDERS | O_ORDERKEY | LINEITEM | L_ORDERKEY |
ORDERS | O_ORDERKEY | LINEITEM | L_LINENUMBER |
PART | P_PARTKEY | PARTSUPP | PS_PARTKEY |
PART | P_PARTKEY | LINEITEM | L_PARTKEY |
PART | P_PARTKEY | CUSTOMER | C_CUSTKEY |
... | ... | ... | ... |
步骤2:从包含依赖集合中筛选外键
第2.1、鉴于属性中的元组个数很多(在TPC-H中,属性常为上百万行),本发明使用属性的统计特征来表示一个属性,经过前面的步骤,属性元组均已排序(假设数值型属性按数值排序,字符型属性按字典序排序,二者均为升序)。使用以下特征来表示一个属性:
1)不同值个数(DistinctTuples,DT):属性中不同值个数;
2)属性名(AttributeName,N):属性的名称;
3)平均值(Average,A):数值型属性的平均值,字符型属性平均值为0;
4)方差(Variance,V):数值型属性的方差,字符型属性方差为0;
5)属性值平均长度(AverageLength,AL):字符型属性的平均长度,数值型属性平均长度为0;
6)中位数(Median,M):属性的中位数。
第2.2、对属性的统计特征进行归一化,以消除属性取值范围不同和属性值长度不同等因素对属性对距离比较时产生的影响。如图5所示,ID2和SID相比于ID1和TID更有可能是外键,但对于这种情况,通过除以被参照属性值个数可实现归一化;对于字符类型的属性,也存在类似的问题,如|ALClass-ALTClass|<<|ALAllCourses-ALCourse|,通过除以被参照属性的平均长度来消除不同属性长度的影响。
对表2中涉及的属性提取特征并归一化,可得到如表3所示的结果。
表3.属性特征表示
属性表名 | 属性名 | 不同值个数 | 平均值 | 方差 | 平均长度 | 中位数 |
NATION | N_NATIONKEY | 25 | 0.5 | 0.090278 | 0 | 0.5 |
SUPPLIER | S_NATIONKEY | 25 | 0.5 | 0.090278 | 0 | 0.5 |
CUSTOMER | C_NATIONKEY | 25 | 0.5 | 0.090278 | 0 | 0.5 |
REGION | R_REGIONKEY | 7 | 0.324675325 | 0.175708851 | 0 | 0.090909091 |
LINEITEM | L_LINENUMBER | 7 | 0.5 | 0.111111 | 0 | 0.5 |
ORDERS | O_SHIPPRIORITY | 1 | 0 | 0 | 0 | 0 |
ORDERS | O_ORDERKEY | 1500000 | 0.4999985 | 0.500000083 | 0 | 0.083333361 |
LINEITEM | L_ORDERKEY | 1500000 | 0.4999985 | 0.500000083 | 0 | 0.083333361 |
PART | P_PARTKEY | 200000 | 0.5 | 0.5000025 | 0 | 0.083334167 |
PARTSUPP | PS_PARTKEY | 200000 | 0.5 | 0.5000025 | 0 | 0.083334167 |
LINEITEM | L_PARTKEY | 200000 | 0.5 | 0.5000025 | 0 | 0.083334167 |
CUSTOMER | C_CUSTKEY | 200000 | 0.5 | 0.5000025 | 0 | 0.083334167 |
第2.3、字符串之间的距离使用编辑距离来度量,FastMap算法可将特征中的字符串类型转换成向量,并保持原有的相似度,这样得到一个可代表原属性的特征向量,记作featureX,其中X表示属性名;
FastMap算法的具体实现伪代码如下:
算法2:选择枢轴对象ChooseObjects
输入:所有字符串特征,编辑距离
输出:两个枢轴对象Oa,Ob
1)计算每两个字符串对象之间的编辑距离
2)随机选择一个对象,作为枢轴Ob
算法3:字符串映射成向量FastMap(k,D,O)
输入:映射目标维度k,距离函数D,所有字符串对象集合O
输出:每个字符串映射的k维向量
该算法首先选择两个距离较远的对象,根据这两个枢轴对象构建超平面,将其他对象都投影到该超平面,然后更新每对对象的距离,如此迭代,直至给每个对象生成k维向量。该算法能高效地将字符串应射成向量,同时保持原来字符串之间的距离。
定义3:本发明中属性间距离定义为其特征向量的欧氏距离:
dist(A,B)=||featureA-featureB||
其中A,B是包含依赖属性集合中的属性,featureX是一个特征向量,是属性X的特征表示;
通过研究发现,所有满足包含依赖的属性对的距离具有如图2所示的特点,即主键、外键之间的距离普遍远小于普通包含依赖属性对之间的距离;因此,在一个数据库实例中,容易找出这个明显的距离差距,可据此设置属性对距离阈值;
第2.4、计算所有满足包含依赖的属性对的距离,并按距离从小到大对属性对排序,将距离有明显变化的地方设为距离阈值R,即对应的距离设为阈值;在这些包含依赖属性对中,若其中有一个属性是主键,且两个属性的距离小于R,则认为它们是一对主外键关系。
由于主键和外键之间有潜在的语义关联性,本发明使用的属性统计特征能从命名相似性、属性值相似性和属性值分布相似性等方面反映主键和外键的联系,属性之间的距离越小,则它们是主外键关系的可能性越大。此外,主外键属性对和普通包含依赖属性对的距离有明显的差距,可以依其分界点设置阈值,就能很好地从包含依赖中筛选出外键。
对TPC-H中所有包含依赖属性对计算距离并排序,得到的结果如图2所示,表4展示了排在前10位的属性对。根据TPC-H的计算结果,其取值设在第10个属性对的距离处,即0.103457。该方法识别TPC-H中的外键的准确率是0.8,召回率是1,F值为0.89。
表4.TPC-H外键识别结果(TOP15)
被参照表名 | 本参照列名 | 依赖表名 | 依赖列名 | 距离 |
NATION | N_NATIONKEY | SUPPLIER | S_NATIONKEY | 0.008264 |
NATION | N_NATIONKEY | CUSTOMER | C_NATIONKEY | 0.008264 |
SUPPLIER | S_SUPPKEY | PARTSUPP | PS_SUPPKEY | 0.008264 |
PARTSUPP | PS_PARTKEY | PART | P_PARTKEY | 0.01 |
ORDERS | O_ORDERKEY | LINEITEM | L_ORDERKEY | 0.01 |
PART | P_PARTKEY | PARTSUPP | PS_PARTKEY | 0.01 |
SUPPLIER | S_SUPPKEY | LINEITEM | L_SUPPKEY | 0.012346 |
PART | P_PARTKEY | LINEITEM | L_PARTKEY | 0.012346 |
PARTSUPP | PS_PARTKEY | LINEITEM | L_PARTKEY | 0.04 |
CUSTOMER | C_CUSTKEY | ORDERS | O_CUSTKEY | 0.103457 |
PART | P_PARTKEY | CUSTOMER | C_CUSTKEY | 0.260031 |
REGION | R_REGIONKEY | NATION | N_REGIONKEY | 0.290562 |
PARTSUPP | PS_PARTKEY | CUSTOMER | C_CUSTKEY | 0.3125 |
PART | P_PARTKEY | ORDERS | O_CUSTKEY | 0.447551 |
PARTSUPP | PS_PARTKEY | ORDERS | O_CUSTKEY | 0.5 |
本步骤外键筛选具体实现的伪代码如下:
算法4:外键筛选FKDiscovery
输入:满足包含依赖的属性对集合IND
输出:主外键属性对集合FK
该算法使用特定数据结构描述IND中属性对,其成员包括属性对中的被参照属性和依赖属性,以及属性对的距离三个成员,其定义如下:
数据结构attribute用于存储属性的统计特征,其定义如下:
该算法首先计算各属性额统计特征,如果计算过了,不再重复计算;其次计算所有包含依赖属性对的属性间距离,并将属性对依照属性间距离由小到大排序;然后通过相邻属性对距离的差距,找出发生明显变化的地方,设为阈值,本例中阈值设为0.260031;最后将属性间距离小于阈值的属性对识别为外键,结果如表5所示。该算法对不同领域的数据具有广泛的自适应性,对大规模关系表集合也具有较好的扩展性,能高效准确的识别外键。
表5TPC-H外键识别结果
主键表名 | 主键列名 | 外键表名 | 外键列名 |
NATION | N_NATIONKEY | SUPPLIER | S_NATIONKEY |
NATION | N_NATIONKEY | CUSTOMER | C_NATIONKEY |
SUPPLIER | S_SUPPKEY | PARTSUPP | PS_SUPPKEY |
PARTSUPP | PS_PARTKEY | PART | P_PARTKEY |
ORDERS | O_ORDERKEY | LINEITEM | L_ORDERKEY |
PART | P_PARTKEY | PARTSUPP | PS_PARTKEY |
SUPPLIER | S_SUPPKEY | LINEITEM | L_SUPPKEY |
PART | P_PARTKEY | LINEITEM | L_PARTKEY |
PARTSUPP | PS_PARTKEY | LINEITEM | L_PARTKEY |
CUSTOMER | C_CUSTKEY | ORDERS | O_CUSTKEY |
Claims (1)
1.一种基于最近邻搜索的关系表集合外键识别方法,其特征在于该方法包括:
第1、识别关系表集合中的包含依赖
定义1:如果A,B满足如下两个条件,则属性对(A,B)满足包含依赖,记作其中A表示依赖属性,B表示被参照属性:
(1)A,B有相同的属性个数;
(2)属性A中的元组包含在属性B中;
定义2:C,D分别为两个属性,包含系数定义如下:
在实际应用中,如果C和D满足σ(C,D)≥θ,其中θ是自定义的,就认为C和D满足包含依赖;
第1.1、使用并行算法识别关系表集合中的单列包含依赖,其具体步骤包括:
第1.1.1、查询属性中的所有元组,去除属性中的重复元组并对元组按从小到大进行排序;
第1.1.2、假设属性集合为{A1,A2,…,An},初始时,属性Ai能够参照的属性为{A1,A2,…,Ai-1,Ai+1,…,An},i∈{1,2,3,…,n},各属性有一个指向最小元组的指针;
第1.1.3、通过移动指针并行地按序遍历第1.1.1步得到的属性元组,通过比较元组值是否存在于某个属性中,确定属性之间的参照与被参照关系,当元组a∈Ai,则能够确定从Ai的候选属性集合中删除Aj,按此方法遍历所有元组值,如果Ai的候选属性集合中仍有属性,即为包含Ai的属性;
第1.2、识别关系表集合中的多列包含依赖,其具体步骤包括:
第1.2.1、候选属性对集合剪枝
包含依赖的投影包含性质:
若m个属性满足包含依赖,则其中任意m-1个属性必定也对应满足包含依赖,即其中ti∈{1,2,…,m};
该性质能够用来对多列包含依赖候选集剪枝,假设现有A、B、C、D、E、F六个属性,A、B、C在关系表1中,D、E、F在关系表2中,通过第1.1步得到则能够推出即这五组属性对不用再比较;所述外键识别方法的属性对生成策略是自底向上的生成候选属性对,利用较少属性的候选对判断结果,对更多属性的属性对进行剪枝;
第1.2.2、查询候选属性组合的所有元组,去除重复元组并按从小到大进行排序,排序方法:先按组合中第一属性的大小排序,若第一属性值相等,按第二属性的大小排序,依此类推;
第1.2.3、使用与第1.1.2步和第1.1.3步类似的方法,并行遍历第1.2.2步得到的属性元组,确定属性组合之间的包含关系;
第2、从包含依赖集合中筛选出外键
鉴于主键、外键属性本质上的语义相关性,通过查找属性集合中主键的最近邻找出对应的外键;
第2.1、以属性的统计特征来表示一个属性,经过第1.1.1步以及第1.2.2步,属性元组均已排序,使用以下特征来表示一个属性:
不同值个数(DistinctTuples,DT):是指属性中不同值个数,
属性名(AttributeName,N):属性的名称,
平均值(Average,A):是指数值型属性的平均值,字符型该属性记为0,
方差(Variance,V):是指数值型属性的方差,字符型该属性记为0,
属性值平均长度(AverageLength,AL):是指字符型属性的平均长度,数值型属性该特征记为0,
中位数(Median,M):是指属性的中位数;
第2.2、对属性的统计特征进行归一化,主要考虑以下两方面:
第2.2.1、对于数值型属性而言,属性值取值范围会影响属性对之间的比较,将每对属性都除以被参照属性的取值范围来消除这种偏差;
第2.2.2、对于字符型属性而言,属性值的长度也会影响属性对之间的比较,将每对属性都除以被参照属性的属性值平均长度来消除这种偏差;
第2.3、字符串之间的距离使用编辑距离来度量,FastMap算法能够将特征中的字符串类型转换成向量,并保持原有的相似度,这样得到一个能够代表原属性的特征向量,记作featureX,其中X表示属性名;
定义3:属性间距离定义为特征向量的欧氏距离:
dist(A,B)=||featureA-featureB||
其中A,B是包含依赖属性集合中的属性,featureX是一个特征向量,是属性X的特征表示;
第2.4、计算所有满足包含依赖的属性对的距离,并按距离从小到大对属性对排序,将距离有明显变化的地方设为距离阈值R;在所有包含依赖属性对中,若其中一个属性是主键,且两个属性的距离小于R,则认为它们是一对主外键关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510616597.7A CN105095522B (zh) | 2015-09-22 | 2015-09-22 | 基于最近邻搜索的关系表集合外键识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510616597.7A CN105095522B (zh) | 2015-09-22 | 2015-09-22 | 基于最近邻搜索的关系表集合外键识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105095522A true CN105095522A (zh) | 2015-11-25 |
CN105095522B CN105095522B (zh) | 2018-09-25 |
Family
ID=54575957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510616597.7A Expired - Fee Related CN105095522B (zh) | 2015-09-22 | 2015-09-22 | 基于最近邻搜索的关系表集合外键识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105095522B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108292409A (zh) * | 2016-01-08 | 2018-07-17 | 甲骨文国际公司 | 消费者决策树生成系统 |
CN108416056A (zh) * | 2018-03-21 | 2018-08-17 | 哈工大大数据(哈尔滨)智能科技有限公司 | 基于条件包含依赖的相关性学习方法、装置、设备及介质 |
CN108920501A (zh) * | 2018-05-25 | 2018-11-30 | 南开大学 | 一种关系表非键属性特征抽取与数据生成方法 |
CN109472013A (zh) * | 2018-10-25 | 2019-03-15 | 北京交通大学 | 基于分布拟合的网络表格间的外键关系检测方法 |
CN110727743A (zh) * | 2019-10-12 | 2020-01-24 | 杭州城市大数据运营有限公司 | 数据识别方法、装置、计算机设备及存储介质 |
CN110727676A (zh) * | 2019-07-23 | 2020-01-24 | 杭州城市大数据运营有限公司 | 数据表主键、外键识别方法、装置、设备和存储介质 |
CN110892401A (zh) * | 2017-03-19 | 2020-03-17 | 奥菲克-艾什科洛研究与发展有限公司 | 生成用于k个不匹配搜索的过滤器的系统和方法 |
US11074235B2 (en) | 2017-08-10 | 2021-07-27 | Io-Tahoe Llc | Inclusion dependency determination in a large database for establishing primary key-foreign key relationships |
CN113434540A (zh) * | 2021-05-11 | 2021-09-24 | 华东师范大学 | 支持左外连接的应用驱动数据生成中依赖关系生成方法及系统 |
CN117349346A (zh) * | 2023-12-05 | 2024-01-05 | 深圳市威诺达工业技术有限公司 | 一种识别关系型数据库表中主键和外键的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101901269A (zh) * | 2010-08-04 | 2010-12-01 | 国电南瑞科技股份有限公司 | 实时库外键引用显示方法 |
CN102662951A (zh) * | 2012-03-01 | 2012-09-12 | 浪潮集团山东通用软件有限公司 | 一种erp系统中基于配置的外键删除控制方法 |
CN103530413A (zh) * | 2013-10-28 | 2014-01-22 | 北京国双科技有限公司 | 数据处理方法和装置 |
CN104794130A (zh) * | 2014-01-20 | 2015-07-22 | 华为技术有限公司 | 一种表间关联查询方法和装置 |
EP2916246A1 (en) * | 2014-03-06 | 2015-09-09 | Tata Consultancy Services Limited | Primary and foreign key relationship identification with metadata analysis |
-
2015
- 2015-09-22 CN CN201510616597.7A patent/CN105095522B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101901269A (zh) * | 2010-08-04 | 2010-12-01 | 国电南瑞科技股份有限公司 | 实时库外键引用显示方法 |
CN102662951A (zh) * | 2012-03-01 | 2012-09-12 | 浪潮集团山东通用软件有限公司 | 一种erp系统中基于配置的外键删除控制方法 |
CN103530413A (zh) * | 2013-10-28 | 2014-01-22 | 北京国双科技有限公司 | 数据处理方法和装置 |
CN104794130A (zh) * | 2014-01-20 | 2015-07-22 | 华为技术有限公司 | 一种表间关联查询方法和装置 |
EP2916246A1 (en) * | 2014-03-06 | 2015-09-09 | Tata Consultancy Services Limited | Primary and foreign key relationship identification with metadata analysis |
Non-Patent Citations (1)
Title |
---|
XIAOJIE YUAN ET.AL.: ""Efficient foreign key discovery based on nearest neighbor search"", 《WAIM 2015,LNCS 9098》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108292409A (zh) * | 2016-01-08 | 2018-07-17 | 甲骨文国际公司 | 消费者决策树生成系统 |
CN110892401A (zh) * | 2017-03-19 | 2020-03-17 | 奥菲克-艾什科洛研究与发展有限公司 | 生成用于k个不匹配搜索的过滤器的系统和方法 |
US11074235B2 (en) | 2017-08-10 | 2021-07-27 | Io-Tahoe Llc | Inclusion dependency determination in a large database for establishing primary key-foreign key relationships |
CN108416056A (zh) * | 2018-03-21 | 2018-08-17 | 哈工大大数据(哈尔滨)智能科技有限公司 | 基于条件包含依赖的相关性学习方法、装置、设备及介质 |
CN108416056B (zh) * | 2018-03-21 | 2020-12-04 | 哈工大大数据(哈尔滨)智能科技有限公司 | 基于条件包含依赖的相关性学习方法、装置、设备及介质 |
CN108920501B (zh) * | 2018-05-25 | 2021-09-03 | 南开大学 | 一种关系表非键属性特征抽取与数据生成方法 |
CN108920501A (zh) * | 2018-05-25 | 2018-11-30 | 南开大学 | 一种关系表非键属性特征抽取与数据生成方法 |
CN109472013A (zh) * | 2018-10-25 | 2019-03-15 | 北京交通大学 | 基于分布拟合的网络表格间的外键关系检测方法 |
CN110727676A (zh) * | 2019-07-23 | 2020-01-24 | 杭州城市大数据运营有限公司 | 数据表主键、外键识别方法、装置、设备和存储介质 |
CN110727743A (zh) * | 2019-10-12 | 2020-01-24 | 杭州城市大数据运营有限公司 | 数据识别方法、装置、计算机设备及存储介质 |
CN113434540A (zh) * | 2021-05-11 | 2021-09-24 | 华东师范大学 | 支持左外连接的应用驱动数据生成中依赖关系生成方法及系统 |
CN117349346A (zh) * | 2023-12-05 | 2024-01-05 | 深圳市威诺达工业技术有限公司 | 一种识别关系型数据库表中主键和外键的方法 |
CN117349346B (zh) * | 2023-12-05 | 2024-03-26 | 深圳市威诺达工业技术有限公司 | 一种识别关系型数据库表中主键和外键的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105095522B (zh) | 2018-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105095522A (zh) | 基于最近邻搜索的关系表集合外键识别方法 | |
Hilprecht et al. | Deepdb: Learn from data, not from queries! | |
Liu et al. | U-skyline: A new skyline query for uncertain databases | |
CN102867066B (zh) | 数据汇总装置和数据汇总方法 | |
Mahmood et al. | FAST: frequency-aware indexing for spatio-textual data streams | |
CN104504018A (zh) | 基于浓密树和自顶向下的大数据实时查询优化方法 | |
Vijayalaksmi et al. | A fast approach to clustering datasets using dbscan and pruning algorithms | |
CN114153821A (zh) | 一种基于图论的电量图数据库构建及搜索方法 | |
CN104156431A (zh) | 一种基于实体图社团结构的rdf关键词查询方法 | |
CN103365960A (zh) | 电力多级调度管理结构化数据的离线搜索方法 | |
Fischer et al. | Offline design tuning for hierarchies of forecast models | |
Chen et al. | Join cardinality estimation by combining operator-level deep neural networks | |
Sismanis et al. | Resolution-aware query answering for business intelligence | |
CN100403308C (zh) | 基于sql负载挖掘的物理数据库自动设计方法 | |
CN103714095B (zh) | 一种面向模糊数据库的多维轮廓计算数据处理方法 | |
Jumde et al. | Query processing techniques in probabilistic databases | |
Lin et al. | A Cardinality Estimation Approach Based on Two Level Histograms. | |
CN111459971B (zh) | 一种基于众包的skyline-join查询处理方法 | |
Lv et al. | Identify and trace criminal suspects in the crowd aided by fast trajectories retrieval | |
Simonini et al. | Progressive entity resolution with node embeddings | |
Wang et al. | Reduced quotient cube: Maximize query answering capacity in OLAP | |
CN108052522A (zh) | 一种对olap预计算模型进行动态优化的方法及系统 | |
Wu et al. | Vector-degree: A general similarity measure for co-location patterns | |
CN117390064B (zh) | 一种基于可嵌入子图的数据库查询优化方法 | |
Haruna et al. | Cost-based and effective human-machine based data deduplication model in entity reconciliation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180925 Termination date: 20210922 |
|
CF01 | Termination of patent right due to non-payment of annual fee |