数据仓库模型建设规范10_第1页
数据仓库模型建设规范10_第2页
数据仓库模型建设规范10_第3页
数据仓库模型建设规范10_第4页
数据仓库模型建设规范10_第5页
免费预览已结束,剩余15页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据仓库模型建设规范1 .概述数据仓库不同于日常的信息系统开发,除了遵循其他系统开发的需求、分析、设计、测试等通常的软件生命周期之外,它还涉及到企业信息数据的集成,大容量数据的阶段处理和分层存储,数据仓库的模式选择等等,因此数据仓库的模型设计异常重要,这也是关系到数据仓库项目成败的关键。物理模型就像大厦的基础架构,就是通用的业界标准,无论是一座摩天大厦也好,还是茅草房也好,在架构师的眼里,他只是一所建筑,地基一层层建筑一封顶,这样的工序一样也不能少,关系到住户的安全,房屋的建筑质量也必须得以保证,唯一的区别是建筑的材料,地基是采用钢筋水泥还是石头,墙壁采用木质还是钢筋水泥或是砖头;当然材料和建

2、筑细节还是会有区别的,视用户给出的成本而定;还有不可忽视的一点是,数据仓库的数据从几百GE©J几十TB不等,即使支撑这些数据的RDBM优论有多么强大,仍不可避免地要考虑数据库的物理设计。数据仓库建模的设计目标是模型的稳定性、自适应性和可扩展性。为了做到这一点,必须坚持建模的相对独立性、业界先进性原则。2 .数聚模型架构在数聚项目实施过程,我们一般将数据仓库系统的数据划分为如下图所示几个层次。L1样话层O客户产拈费用财翳元数强管理浏艮莒芨ETL管理数据类型抽取方式转换方式加载方式表类型变化tew加载过程5. .有时间戳6. .数据量巨大7. .交易事务表8. .周期数据处理增量变化抽取

3、落地TMP区清洗转换标识增删改落地DCI区增量变化加载维表新增新增代理键。插入记录修改如果须保留历史,新增代理键。插入记录如果无须保留历史,根据代理键修改记录。删除若为逻辑删除,可等同修改,或在抽取时过滤。若为物理删除,则增量抽取无法判断被删除。事实表新增根据流水号删除目标表数据,查找代理键,然后再加载增量变化数据.修改删除一般来说,事实表数据不物理删除,如果物理删除,增量抽取方式无法判断出来。1.1. .无时间戳2.2. .数据量小的表3.3. .代码表4.4. .主数据表5.5. .初始数据加载全量抽取落地TMP区清洗转换落地DCI区全量加载维表只适合系统初始化数据加载,不区分增删改事实表

4、查找对应代理键,全部加载,适合数据量小的场合,ETL简单快捷。清洗转换获取增量标识增删改添加时间戳落地DCI区增量变化加载维表新增新增代理键。插入记录修改如果须保留历史,新增代理键。插入记录如果无须保留历史,根据代理键修改记录删除维表不处理被删除的维度记录。事实表新增根据事务流水号,删除目标表。查找代理键,直接插入目标表。修改删除根据事务流水号,删除目标表.可以处理物理删除现象。2.3. 准备层L02.3.1. 主要数据结构临时表:从数据源抽取,直接落地到临时表。临时表总是保存这次抽取的数据,不保留历史数据。也就是说,如果是全量抽取的话,就是源系统整个表的数据,如果是增量抽取的话,就是自从上次

5、修改后的数据。接口表:从临时表,经过清洗、转换到达接口表。接口表保存历史数据,也就是说,如果是全量抽取的话,就是源系统整个表的数据,如果是增量抽取的话。接口表里面也是源系统整个表的数据。转换表:为了进行清洗和转换建立的中间辅助表。2.3.2. 命名规范临时表:L0_TMP源系统_具体业务或L0_TMP_k务主题_具体业务(对单一源)举低J:L0_TMP_POS_SALESORDER接口表:L0DCI业务主题具体业务表举低J:L0_DCI_SALES_SALESORDER转换表:L0_MAP具体业务表举低J:L0_MAP_SALES2.3.3. 开发工作开发数据抽取接口,落地TMPK开发数据清洗

6、转换程序,落地DCI区,多源系统进行合并开发数据装载程序,装载到L1层2.4. 原子层L12.4.1. 主要数据结构维度表:整个数据仓库一致的维度代码表:维度属性,非维度代码等。原子事实表:根据业务主题,形成原子事实表汇总事实表:根据分析主题,业务主题形成合并或汇总的事实表。2.4.2. 命名规范维度表:DW_DIM维度。举例:组织维DW_DIM_ORG日期维DW_DIM_DATE.代码表:DW_CODEMo举例:性别DW_CODE_GENDER原子事实表:L1DWFACT_析主题具体分析汇总事实表:L1DMFACT_析主题具体分析2.4.3. 开发工作维护聚集。衍生计算,二次指标计算。2.5

7、. 应用层L22.5.1. 主要数据结构宽表:根据需求,从L1层抽取成宽表,表现形式为固定报表,仪表盘等等。立方体:根据分析主题,从L1生成OLAPl方体。视图:根据需要,从L1,L0层产生L2层的视图。前端应用,不仅仅可以利用L2层的数据结构,还可以利用L1层的数据结构。对于源系统,还可以利用L0层的DCI区数据,可以做详单和明细查询。2.5.2. 命名规范宽表:L2_FACT_【应用主题】_【分析主题】_应用。举快J:L2_FACT_FIN_ZCFZB财务->资产负债表)立方体:根据分析主题,从L1生成OLAP方体。视图:根据需要,从L1,L0层产生L2层的视图。如明细单举低L2_V

8、IEW_KL1层表。数据从L1层经过计算,汇总,根据前端分析需求,形成可以有效支撑前端应用查询的结构。3 .建模方法要成功地建立一个数据仓库,必须有一个合理的数据模型。数据仓库建模在业务需求分析之后开始,是数据仓库构造的正式开始。在创建数据仓库的数据模型时应考虑:满足不同层次、用户的需求;兼顾查询效率与数据粒度的需求;支持用户需求变化;避免业务运营系统性能影响;提供可扩展性。数据模型的可扩展性决定了数据仓库对新的需求的适应能力,建模既要考虑眼前的信息需求,也要考虑未来的需求。目前两类主流的数据仓库模型分别是由Inmon提出的企业级数据仓库模型和由Kimball提出的多维模型。Inmon提出的企

9、业级数据仓库模型采用第三范式(3NF),先建立企业级数据仓库,再在其上开发具体的应用。企业级数据仓库固然是我们所追求的目标,但在缺乏足够的技术力量和数据仓库建设经验的情况下,按照这种模型设计的系统建设过程长,周期长,难度大,风险大,容易失败。这种模型的优点是信息全面、系统灵活。由于采用了第三范式,数据存储冗余度低、数据组织结构性好、反映的业务主题能力强以及具有较好的业务扩展性等,但同时会存在大量的数据表,表之间的联系比较多,也比较复杂,跨表操作多,查询效率较低,对数据仓库系统的硬件性能要求高等问题。另一方面,数据模式复杂,不容易理解,对于一般计算机用户来说,增加了理解数据表的困难。Kimbal

10、l提出的多维模型降低了范式化,以分析主题为基本框架来组织数据。以维模型开发分析主题,这样能够快速实施,迅速获得投资回报,在取得实际效果的基础上,再逐渐增加应用主题,循序渐进,积累经验,逐步建成企业级数据仓库。这也可以说是采用总线型结构先建立数据集市,使所有的数据集市具有统一的维定义和一致的业务事实,这种方法融合了自下而上和自上而下两种设计方法的思想。这种模型的优点是查询速度快,做报表也快;缺点是由于存在大量的预处理,其建模过程相对来说就比较慢。当业务问题发生变化,原来的维不能满足要求时,需要增加新的维。由于事实表的主码由所有维表的主码组成,所以这种维的变动将是非常复杂、非常耗时的。而且信息不够

11、全面、系统欠灵活、数据冗余多。本规范我们主要针对维度建模的方法来阐述规范。3.3. 维度建模多维数据建模以直观的方式组织数据,并支持高性能的数据访问。每一个多维数据模型由多个多维数据模式表示,每一个多维数据模式都是由一个事实表和一组维表组成的。多维模型最常见的是星形模式。在星形模式中,事实表居中,多个维表呈辐射状分布于其四周,并与事实表连接。位于星形中心的实体是指标实体,是用户最关心的基本实体和查询活动的中心,为数据仓库的查询活动提供定量数据。每个指标实体代表一系列相关事实,完成一项指定的功能。位于星形图星角上的实体是维度实体,其作用是限制用户的查询结果,将数据过滤使得从指标实体查询返回较少的

12、行,从而缩小访问范围。每个维表有自己的属性,维表和事实表通过关键字相关联。使用星形模式主要有两方面的原因:提高查询的效率。采用星形模式设计的数据仓库的优点是由于数据的组织已经过预处理,主要数据都在庞大的事实表中,所以只要扫描事实表就可以进行查询,而不必把多个庞大的表联接起来,查询访问效率较高。同时由于维表一般都很小,甚至可以放在高速缓存中,与事实表作连接时其速度较快;便于用户理解。对于非计算机专业的用户而言,星形模式比较直观,通过分析星形模式,很容易组合出各种查询。3.4. 建模步骤第一步:选取建模的业务过程设计过程的第一步是确定要建模的业务过程或者度量事件。业务过程是在业务需求收集过程明确下

13、来。在很多的生产活动中,存在着很多价值链,这些价值链就是有一系列的业务过程来组成的。比如在供应链管理中。存在着下面的业务过程:原材料购买原材料交货原材料库存材料账单生产制造将产品运到仓库制成品库存客户订单为客户送货货品计价付款退货第二步:定义模型的粒度业务过程被确定下来后,就建模师就必须声明事实表的粒度。清楚地定义事实表的行到底代表什么在提出业务过程维度模型的过程至关重要。如果没有在事实表的粒度上达成一致,那么设计过程就不可能成功地向前推进。第三步:选定维度一旦事实表的粒度已经稳固地确定下来,对维的选择就相当简单了。也正是在此时,就可以开始考虑外键的问题了。一般来说,粒度本身就能够确定一个基本

14、或者最小的维度集合,设计过程就是在此基础上添加其他维。这些维在已经声明的事实表粒度都有一个唯一对应的值。第四步:确定事实四步设计过程的最后一步是仔细选择适用于业务过程的事实和指标。事实可以从度量事件中采用物理手段捕捉,或者也可以从这些度量中导出。对于事实表粒度来说,每个事实都是必须设计存在的,不要将那些明确声明的粒度不相匹配的其他时间段的事实或者其他细节层次的事实混杂进来。4.维度表设计维度表包含内容:1)代理键:整型,不可重复,唯一标识每一条记录,不包含任何商业信息。(必选)2)代理键有效开始时间和结束时间。(必选)3)当前有效标志。(必选)4)主键:传统意义的业务键,包含相应的商业信息,如

15、员工编号。(必选)5)名称:数据分析时显示的内容,如员工名称等;(必选)6)排序键:自定义序列。(可选)7)自定义汇总:利用自定义表达式进行特定的数据运算。可选)8)父键:父子维度中用来标识主键的上级。(可选)9)一元运算符:在父子维度中用来定义上下级的汇总关系。(可选)(详细)10)属性:属性包含有关维度的信息。例如,Customer维度可以包含Name、PhoneNumberGender、City、State等属性。属性通过属性层次结构显示出来。维度中的属性层次结构同时包含可选的(All)级别和该属性的非重复成员。例如,Customer维度可以包含具有两个级别的Name属性层次结构:(Al

16、l)级别以及为每个姓名包含一个成员的级别。父子层次结构的处理方式有所不同。属性不一定要具有属性层次结构。如果未创建属性层次结构,多维数据集的空间将与属性无关。例如,通常不会为PhoneNumber属性创建属性层次结构,因为通常不会按电话号码导航维度。如果没有为属性创建属性层次结构,则该属性可用作成员属性,但不能用作用户层次结构中的级别。属性可以通过前端展示软件进行展现。(可选)11)属性层次结构:属性层次结构完全定义多维数据集的空间。多维数据集是由多维数据集的属性层次结构的交集产生的多维空间。(可选)时间维度时间维度是必不可少的一个维度,可以参考如下的模板:NameCodeDataTypeLe

17、ngth日期代理键DATE_PKINTEGER日期描述DATE_DESCVARCHAR2(8)8日期长描述DATE_LDESCVARCHAR2(20)20日期中文描述DATE_CNDESCVARCHAR2(20)20天DAYNUMBER天中文DAYCNVARCHAR2(10)10月MONTHNUMBER月刊MONTH_DESCVARCHAR2(10)10年YEARNUMBER年中文YEAR_DESCVARCHAR2(10)10年月YEARM_ONTHVARCHAR2(6)6周月WEEKMONTHNUMBER周月中文描述WEEK_MONTH_CNDEVCRCHAR2(20)20年中第几周WEEK

18、_YEARNUMBER年中第几周描述WEEK_YEAR_CNVARCHAR2(20)20周几WEEKNONUMBER周几中文描述WEEK_CNVARCHAR2(10)10旬XUNNUMBER旬中文XUNCNVARCHAR2(10)10季度QUARTERNUMBER季度中文QUAR_CNVARCHAR2(10)10是否周末IF_WEEKENDVARCHAR2(10)10是否月末IF_MONTHENDVARCHAR2(10)10节假日名称HOLIDAYVARCHAR2(10)10上月同一LASTMONTH_DAYVARCHAR2(8)8去年同一天LASTYEAR_DAYVARCHAR2(8)8层级

19、维度层级维度也是我们模型设计最常遇见的维度,比如组织结构,区域,产品树,行业结构等等。在设计时,可以采用如下模板:针对数据存储时,采用自关联的结构:NameCodeDataTypeLength组织代码ORG_CODE-VARCHAR2(20)20上级组织代码PORG_COD)E/ARCHAR2(20)20组织名称ORG_NAME-VARCHAR2(100)100上级组织名称PORG_NAM1E/ARCHAR2(100)100组织类型ORG_TYPEVARCHAR2(20)20组织层级ORG_LEVELVARCHAR2(20)20组织描述ORG_DESCVARCHAR2(200)200组织简称O

20、RG_SNAM1E/ARCHAR2(20)20组织地址ORG_ADDF【VARCHAR2(100)100针对数据展现时,将自关联的结构展开,以列存储层次:根据需要可以把组织层级具体化NameCodeDataTypeLength组织代理键ORG_KEYINTEGER组织代码ORG_CODEVARCHAR2(30)30组织名称ORG_NAMEVARCHAR2(50)50组织描述ORG_DESCVARCHAR2(100)100组织简称ORG_SNAMEVARCHAR2(50)50组织层级ORG_LEVELVARCHAR2(30)30组织类型ORG_TYPEVARCHAR2(20)20上级组织代码OR

21、G_PCODEVARCHAR2(30)30上级组织名称ORG_PNAMEVARCHAR2(50)50组织1级代码ORG_1_CODEVARCHAR2(50)50组织1级名称ORG_1_NAMEVARCHAR2(50)50组织2级代码ORG_2_CODEVARCHAR2(50)50组织2级名称ORG_2_NAMEVARCHAR2(50)50组织3级代码ORG_3_CODEVARCHAR2(50)50组织3级名称ORG_3_NAMEVARCHAR2(50)50组织4级代码ORG_4_CODEVARCHAR2(50)50组织4级名称ORG_4_NAMEVARCHAR2(50)50组织5级代码ORG_

22、5_CODEVARCHAR2(50)50组织5级名称ORG_5_NAMEVARCHAR2(50)50组织6级代码ORG_6_CODEVARCHAR2(50)50组织6级名称ORG_6_NAMEVARCHAR2(50)50组织7级代码ORG_7_CODEVARCHAR2(50)50组织7级名称ORG_7_NAMEVARCHAR2(50)50组织8级代码ORG_8_CODEVARCHAR2(50)50组织8级名称ORG_8_NAMEVARCHAR2(50)50代理键开始时间KEY_STARTDATE:VARCHAR2(30)30代理键结束时间KEY_ENDDATEVARCHAR2(30)30后效标

23、志CURRENT_FLAGINTEGER修改时间KEY_MODIFYDATEARCHAR2(30)30缓慢变化维缓慢变化维定义数据会发生缓慢变化的维度就叫“缓慢变化维”。举个例子就清楚了:在一个零售业数据仓库中,事实表保存着各销售人员的销售记录,某天一个销售人员从北京分公司调到上海分公司了,那么如何来保存这个变化呢?也就是说销售人员维度要怎么恰当的处理这一变化。先来回答一个问题,为什么要处理,或保存这一变化?如果我们要统计北京地区或上海地区的总销售情况的时候,这个销售人员的销售记录应该算在北京还是算在上海?当然是调离前的算在北京,调离后的算在上海,但是如标记这个销售人员所属区域?这里就需要处理

24、一下这个维度的数据,即我们缓慢变化维需要做的事情。处理缓慢变化维一般按不同情况有以下几种解决方案:新数据覆盖旧数据此方法必须有前提条件,即你不关心这个数剧的变化。例如,某个销售人员的英文名改了,如果你不关心员工的英文名有什么变化则可直接覆盖(修改)数据仓库中的数据。保存多条记录,并添加字段加以区分这种情况下直接新添一条记录,同时保留原有记录,并用单独的专用的字段保存区别。如:(以下表格中Supplier_State表示上面例子中所属区域,为描述清晰,不用代理键表示)Supplier_keySupplier_CodeSupplier_NameSupplier_StateDisa001ABCPhl

25、ogisticalSupplyCompanyCA002ABCPhlogisticalSupplyCompanyILr或:Supplier_keySupplier_CodeSupplier_NameSupplier_StateVersion001ABCPhlogisticalSupplyCompanyCA0002ABCPhlogisticalSupplyCompanyIL1以上两种是添加数据版本信息或是否可用来标识新旧数据。下面一种则是添加记录的生效日期和失效日期来标识新旧数据:Supplier_kSupplier_CoSupplier_NaSupplier_StaStart_DatEnd_Da

26、teeydemetee001ABCPhlogisticalSupplyCompanyCA01-Jan-200021-Dec-2004002ABCPhlogisticalSupplyCompanyIL22-Dec-2004空的End_Date表示当前版本数据,或者你也可一用一个默认的大时间(如:12/31/9999)来代替空值,这样数据还能被索引识别到.不同字段保存不同值Supplier_keySupplier_NameOriginal_Supplier_StateEffective_DateCurrent_Supplier_State001PhlogisticalSupplyCompanyCA

27、22-Dec-2004IL这种方法用不同的字段保存变化痕迹,但是这种方法不能象第二种方法一样保存所有变化记录,它只能保存两次变化记录,适用于变化不超过两次的维度。另外建表保存历史记录即另外建一个历史表来表存变化的历史记录,而维度只保存当前数据Supplier:Supplier_keySupplier_NameSupplier_State001PhlogisticalSupplyCompanyILSupplier_History:Supplier_keySupplier_NameSupplier_StateCreate_Date001PhlogisticalSupplyCompanyCA22-D

28、ec-2004这种方法仅仅记录一下变化历史痕迹,其实做起统计运算来还是不方便的混合模式这种模式是以上几种模式的混合体,相对而言此种方法更全面,更能应对错综复杂且易变化的用户需求,也是较为常用的。Row_KeySupplier_keySupplier_CodeSupplier_NameSupplier_StateStart_DateEnd_DateCurrentIndicator1001ABC001PhlogisticalSupplyCompanyCA22-Dec-200415-Jan-2007N2001ABC001PhlogisticalSupplyCompanyIL15-Jan-20071-

29、Jan-2099Y此中方法有以下几条优点:.能用简单的过滤条件选出维度当前的值。.能较容易的关联出历史任意一时刻事实数据的值。.如果事实表中有一些时间字段(如:OrderDate,ShippingDate,ConfirmationDate),那么我们很容易选择哪一条维度数据进行关联分析。其中Row_Key口CurrentIndicator字段是可有可无的,加上去更方便,毕竟维度表的数据都不大,多点冗余字段不占太大空间但能提高查询效率。这种设计模式下事实表应以Supplier_key为外键,虽然这个字段不能唯一标识一条维度数据,从而形成了事实表与维表多对多的关系,因此在做事实和维度做关联时应加上

30、时间戳字段(或Indicator字段)。非常规混合模式上面说到第五种实现方式有点弊端,那就是事实表和维表不是多对一关系,而是多对多关系,这种关系不能在建模时解决只能在报表层面,在报表运行时解决,且在BI语意层建模时需要添加时间过滤条件,比较繁琐。下面这种解决方案可以解决此多对多关系,但是得修改一下事实表:SupplierDimension:Version_NumberSupplier_keySupplier_CodeSupplier_NameSupplier_StateStart_DateEnd_Date1001ABC001PhlogistiCA22-Dec-15-Jan-calSupplyC

31、ompany200420070001ABC001PhlogisticalSupplyCompanyIL15-Jan-20071-Jan-2099FactDelivery:(为描述清晰,同样不使用代理键标识维度)Delivery_KeySupplier_keySupplier_version_numberQuantityProductDelivery_DateOrder_Date10010132Bags22-Dec-200615-Oct-200620010324Chairs15-Jan-20071-Jan-2007此方案中向维表中的当前数据版本号始终为0,即插入维度数据时先将老版本的数据的ver

32、sion_number改成1(递增),然后再插入当前数据,此时才能保持当前数据版本号始终为0。事实表中插入数据时所有的维度数据版本号始终全部为0o因此此方案完全可解决事实表和维表多对多关系问题,另外还有个优点是能保证事实表和维表的参照完整性,而且我们在用ERwin,PowerDesigner等建模工具建模时,Version_Number和Supplier_key可作为复合主键在两实体间建立链接。5.事实表设计事实表中一般要包含2部分:一是由主键和外键所组成的键部分,另一部分是用户希望在数据仓库中所了解的数值指标,这些指标是为每个派生出来的键而定义和计算的,称为事实或指标。由于事实是一种度量,所

33、以事实表中的这种指标往往需要具有数值化和可加性的特征。但是在事实表中,只有那些具有完全可加性的事实才能根据所有的维度进行累加而具有意义。而事实表有一些事实表示的是某种强度,这类事实就不具有完全加法性,而是一种半加法性。例如,账目余款反映的是某个时间点的数据,它可以按照地点和商品等大多数维度进行累加,但是对于时间维度则例外,将一年中每个月的账目余款进行累加是毫无意义的,而决策者则可能需要了解所有地区和所有商品账目余款的累加值。在事实表中还有一些事实是非加法性的,即这些事实具有对事实的描述特性,在这种情况下一般要将这些非加法性事实转移到维度表中事务事实表大多数基本事实表和公共事实表都是面向事务的,

34、其粒度是每一行对应个一事务,或者一行对应事务中的一个条目。事务粒度是空间和时间的交点,一个事务粒度上的度量必须在那个时刻为真。事务数据在其最低层次上一般都有数目巨大的维与之相关联。无论事务事件何时出现,都可以捕捉到有关事务的大量上下文,仅当活动发生时,事务事实表中才会插入一行。一旦事务事实行已经存储,一般不会再次对其进行访问。如下面的业务过程,就非常适合用事务事实表来表示:采购下订单缴费支付购买拨打电话快照事实表第二种最常见的事实表类型是周期快照。使用周期快照可以得到一组描述,周期快照能够按照一个定义良好的时间周期间隔来捕捉业务过程的执行情况,并且将这些描述装载到事实表中。在预定义好的间隔(如

35、每天、每周或者每月)上,很多描述都是关于相同细节层次的,它们连续不断地进入事实表。如下面的业务过程,就非常适合用快照事实表来表示:银行账户的余额财务月报表数据库表设计规范数据库对象前缀命名说明表层次_模块名_具体功能实体名,如产品维表L0_DIM_PRODUCT,附注:在公司模型产品中,我们规定分如下层次L0»L1»L2维表DIM层次_模块名_具体功能实体名,如产品维表L0_DIM_PRODUCT,事实表FACT层次_模块名_具体功能实体名,如销售事实表L1_FACT_SALE1,列名参见附件中常见属性命名规范代理键KEY如日期代理键DATE_KEY存储过程SP_前缀层次主题功能如:SP_L2_CUSTOMER_YTD视图VW_VW层次直接的内容,一般是卅于查询Query和报表Report两种情形触发器TRG_方涉-:TRGJI名_方法名_之前之后等比如:TRG_USER_INFO_INSERT函数FN_F_FNM能名称。主键PK_PKJI名或缩写_列名简洁的写法:写:PK_g名,写法二:PK3U名,因为列名设计时已经包含表的含义外键FK_FK_从表名字段_上表名字段。这个推荐索引IDX_IDX表名_字段名(一个或多个)【可以在其后加U或者C,规则同触犯器】推荐使用:IDX_字段名1Unique【U】与非1NonUniqueN一是聚集Cluste

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论