数据库表列注解制造技术

技术编号:13015700 阅读:38 留言:0更新日期:2016-03-16 15:04
根据一个示例,数据库约束生成可以包括:接收与数据库中表有关的数据,分析该数据以确定针对该表的列的行计数,以及分析该数据以确定针对该表的列的不同值数目。可以通过将行计数与不同值数目进行比较来确定该比较值。该数据库约束生成还可以包括确定该比较值是否在阈值内。如果该比较值在阈值内,注释可以被添加到该表的列,使得在涉及该表的基数估计过程期间,该列被看作是唯一的。

【技术实现步骤摘要】
【国外来华专利技术】【专利说明】
技术介绍
数据库(诸如关系数据库)通常包括用于响应于查询而被分析的表。例如,对于关系数据库,通常使用关系模型形式上描述和组织数据项的表的集合。表可以包括列约束,诸如唯一键(unique key)、主键(primary key)或外键(foreign key)。例如,唯一键可以包括表中数据实体的一个或多个数据属性。主键可以唯一指定表内的元组(tuple),因为,主键唯一地定义表的每一行的特性。外键是与另一个表的主键列相匹配的关系表中的字段。【附图说明】本公开的特征在以下的(多个)图中通过示例的方式来图示,并且不局限于该(多个)图中,其中相同的数字指示相同的要素,其中: 图1图示了根据本公开的示例的数据库约束生成设备的架构; 图2图不了根据本公开的不例的商店表; 图3图示了根据本公开的示例的销售额表; 图4图示了根据本公开的示例的供应项表; 图5图示了根据本公开的示例的在图2的商店表和图3的销售额表之间的联结(join)后的中间结果; 图6图示了根据本公开的示例的在图2的商店表和图4的供应表之间的联结后的中间结果; 图7图示了根据本公开的示例的用于数据库约束生成的方法;以及图8图示了根据本公开的示例的计算机系统。【具体实施方式】为了简单和说明性的目的,通过主要参照示例来描述本公开。在以下描述中,阐述了众多具体细节以便提供对本公开的透彻理解。然而,将显而易见的是,可以在不限于这些具体细节的情况下实践本公开。在其他实例中,尚未详细描述的一些方法和结构以免不必要地使本公开晦涩。遍及本公开,术语“一”和“一个”意在表示特定要素中的至少一个。如本文所使用的,术语“包括”意指包括但不限于,术语“包括了”意指包括了但不限于。术语“基于”意指至少部分地基于。对于通常包括用于响应于查询而被分析的表的数据库(诸如关系数据库),关于表列约束的信息(例如唯一键、主键和外键)通常对于优化查询性能而言是需要的。当这样的表被填充时,添加表列约束可能是繁重的。因此,表生成者(例如,用户)可能避免在数据库设计期间使用这种表列约束,或者无法将现有约束作为部分输入数据导出到数据库。如果有意或者无意地省略这样的表列约束,则确定对于查询性能方面降低的确切原因以及通过添加表列约束来对该情况进一步补救可能是具有挑战性且耗时的。根据一个示例,在本文中公开了一种数据库约束生成设备以及一种用于数据库约束生成的方法。本文所公开的装置和方法可以推断出表注释,其在下文称为“软唯一(soft-unique)约束”。本文所公开的设备和方法还可以使用该推断结果来指导数据库中的查询规划,从而显著提高查询性能。根据一个示例,该数据库约束生成设备可包括存储器,其存储用以进行下述操作的机器可读指令:接收与数据库中的表有关的数据,分析所述数据以确定针对所述表的列的行计数,以及分析所述数据以确定针对所述表的列的不同值数目。所述存储器还可以存储用以进行下述操作的机器可读指令:通过将所述行计数和所述不同值数目进行比较来确定比较值,以及确定所述比较值是否在阈值内。如果比较值在阈值内,则可以将注释添加到所述表的列,以在对所述列的数据插入或更新时限制所述列的唯一属性的实施。所述数据库约束生成设备可以包括用以实现所述机器可读指令的处理器。根据另一示例,用于数据库约束生成的方法可以包括:接收与数据库中表有关的数据,分析所述数据以确定针对所述表的列的行计数,以及分析所述数据以确定针对所述表的列的不同值数目。可以通过将所述行计数与所述不同值数目进行比较来确定比较值。所述方法还包括确定所述比较值是否在阈值内。如果所述比较值在阈值内,则可以将注释添加到所述表的列,使得在涉及所述表的基数估计过程期间将所述列看作是唯一的。图1图示了根据一个示例的数据库约束生成设备100的架构。参照图1,设备100被描绘为包括数据库分析模块101,其用以从例如与表103(即表1-N)有关的数据库102接收数据。行计数确定模块104可以分析表103,以确定针对每个表103的行计数。不同值数目确定模块105可以分析表103,以确定针对每个表103的每一列的不同值数目。替换地,行计数确定模块104和不同值数目确定模块105可以对数据库102的表103和/或所选的列执行相应的分析。行计数和不同值数目比较模块106可以通过将针对来自表103的一个表的特定列的行计数和不同值数目进行比较来确定针对该特定列的数据是否是唯一的。注释添加模块107可以从行计数和不同值数目比较模块106接收比较数据,并且确定接收到的比较数据是否在阈值108内。这样,注释添加模块107可以确定从行计数确定模块104接收到的行计数是否在从不同值数目确定模块105接收到的不同值数目的预定阈值百分比内(即阈值108内)。此外,可以基于与行计数和不同值数目之间的百分比差(例如,5%的差)有关的用户输入来配置阈值108。如果接收到的比较数据在阈值108内,则注释添加模块107可以添加表注释109,其在下文被称为对适当列(S卩,下述列:在该列处行计数与所估计的不同值数目近似匹配(即在阈值108之内))的软唯一约束。模块101和104-107以及设备100的执行设备100中各种其他功能的其他组件,可以包括存储在非临时性计算机可读介质上的机器可读指令。此外,或替代地,模块101和104-107,以及设备100的其他组件可以包括硬件或机器可读指令与硬件的组合。参照图1-3,图2和3分别图不了根据本公开的不例的商店表120和销售额表140。在数据库(诸如数据库102)中,联结可被用于过滤数据。例如,参照商店表120和销售额表140,按季度得出针对马塞诸塞州(MA)中所有商店的平均销售额可能涉及到在针对马塞诸塞州商店的过滤的情况下的商店表120和销售额表140之间的联结。对于这样的查询,夕卜键-主键(FK-PK)约束可能是查询优化器用来估计基数(S卩,联结结果的基数)的属性。针对商店表120和销售额表140的基数基于针对这些表的行数分别为5和7。对于存储表120,主键为ID列,其包括唯一的ID 1-5。此外,对于销售额表140,外键是商店ID (store_ID)列,其引用商店表120的ID列。FK-PK联结可以被指定为多对一(m-1)联结,不管所涉及的PK-表的大小如何,其基数不高于所涉及的FK-定义的表的基数。例如,对于存储表120和销售额表140,马萨诸塞州的销售记录数量不能高于销售记录的总数。在没有对联结列的约束的情况下,该联结可以变为多对多(m-m)联结,其基数可以高达两个所涉及的表的笛卡尔乘积(S卩,行的乘积)。m-1联结的基数估计一般被看作比m-m联结的基数估计更准确。对于将成为m_l联结的联结,该表需要在联结列上是唯一的(例如,商店表120)。然而,表的列不需要被定义为主键,或者其他表的列不需要被定义为外键。再次参照图1-3和5,图5图示了根据本公开的示例的在完成由列“名称(Name)”和“州(State)”所分组的“合计(价格)”之前,在商店表120和销售额表140之间的联结后的中间结果。为当前第1页1 2 3 本文档来自技高网...

【技术保护点】
一种用于数据库约束生成的方法,所述方法包括:接收与数据库中的表有关的数据;分析所述数据以确定针对所述表的列的行计数;分析所述数据以确定针对所述表的列的不同值数目;通过将所述行计数与所述不同值数目进行比较来确定比较值;确定所述比较值是否在阈值内;以及如果所述比较值在阈值内,由处理器将注释添加到所述表的列,使得在涉及所述表的基数估计过程期间,所述列被看作是唯一的。

【技术特征摘要】
【国外来华专利技术】

【专利技术属性】
技术研发人员:HBN特兰L斯里尼瓦斯KM曼恩
申请(专利权)人:惠普发展公司有限责任合伙企业
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1