标准数据类

2024-06-09

标准数据类(精选4篇)

标准数据类 篇1

在一个应用系统中, 需要持久保存的数据应该采用数据库来存储和管理。

在为系统建立数据库之前, 首先要对数据库进行总体设计, 设计过程产生的结果就是数据模型。

数据模型主要包含数据表以及数据表之间的关系。用面向对象方法建立数据模型, 依据是类模型。从类模型建立数据模型, 主要工作是:依次将类映射到数据表、将类属性映射到数据表的列、将类之间的关联映射到关系数据库, 最后将得到的数据表、表之间的关系画在一张图上, 数据模型便大功告成。

1 设计方法

数据模型从层次上可以分为3类:概念数据模型、逻辑数据模型和物理数据模型。

概念数据模型是面向用户、面向现实世界的数据模型, 与数据库管理系统 (DBMS) 无关;逻辑数据模型反映了DBMS的存储结构, 是用户从数据库看到的数据模型;物理数据模型是特定的DBMS, 它定义实际中的数据如何存储在持久存储设备 (例如磁盘) 上。

项目实例要设计的数据模型是逻辑数据模型。本讲座后面提到的数据模型, 除特别说明外, 均指逻辑数据模型。

用传统方法设计数据模型, 依据是ER图。用面向对象方法设计数据模型, 除依据UML类图外, 其他与用传统方法设计数据模型差别不大。

1.1 UML中的实体与E-R图中的实体

目前, 传统的数据库设计是采用实体-关系E-R (EntutyRelationship) 图。E-R图中的实体表示系统中持久的元素。UML中的实体除表示系统中持久的元素外, 还具有行为特性———操作。因此, 可以认为, UML中的实体是E-R图中的实体所提供的内容的超集。

1.2 UML类图与E-R图

由上述1可知, UML类模型的描述功能更强, 它在本质上是扩展的实体-关系 (E-R) 模型。

1.3 建模依据

由上述1.2可知, 将UML类图转换为数据模型是很方便的, 可以用类图为数据库中持久存在的数据结构建立模型。

1.4 选择数据库系统

持久性数据库层可以是关系型的数据库, 也可以是对象关系型的数据库或者对象数据库。从关系型数据库技术到对象数据库技术是一个演化过程, 对象关系数据库技术是这个演化过程的中间阶段。尽管未来将属于对象数据库, 但关系型数据库在目前的数据库软件市场中仍占主流。因此, 仍为项目实例选择关系型数据库作为持久性数据库层的数据库管理系统。

对于关系数据库来说, 可以用类图描述数据库模式 (Database Schema) , 用类描述数据表, 用类的操作描述触发器和存储过程。将UML类图用于数据库建模可以看作是类图具体应用的一个例子。

2 关系数据库术语

前面选择关系型数据库为项目实例建立数据模型。在建模过程中要涉及关系数据库的几个术语, 本节对这几个术语进行介绍。

2.1 主键和外键

主键和外键涉及关系表。关系表是由它的固定列集定义的, 列具有系统内建的或用户定义的数据类型。表可以有任意多行, 但没有重复的行。特定行的值可以是NULL, NULL意味着“值目前不知道”或“值不明确”, NULL值不等同于零或空格。

由于关系数据模型要求“没有重复的行”, 所以每个表都有一个主键 (Primary Key) 。键是列值可以用来唯一地标识表中一行的列的最小集合 (也可能只有一列) 。一个表可以有多个这样的键, 可以任意选择其中一个作为用户最重要的主键, 其他的键则称为备用键 (Alternate Keys) 。

2.2 参照完整性

在关系数据库中, 表之间的关系不是固定的行到行的连接, 而是当用户请求系统发现关系时, 才去发现行到行的连接。这种发现是通过比较一个表的主键值与另一个表的外键值来实现的。外键 (Foreign Key) 被定义为表中列的集合, 其值或者为NULL, 或者匹配同一个表或另一个表中的主键值。主、外键的一致性被称作参照完整性。参照完整性中的主键和外键必须是同一种数据类型, 但可以有不同的名字。

2.3 范式

在关系数据库中, 表与表之间的关系要满足一定的条件, 不同的范式 (Normal Forms) 指的是满足不同级别条件的关系。范式被分为6种:

(1) 第一范式

(2) 第二范式

(3) 第三范式

(4) BC范式 (Boyce-Codd范式)

(5) 第四范式

(6) 第五范式

第一范式是满足最基本条件的关系, 而这个最基本条件是指表的每个列都是不可再分的数据项。对于第一范式, 如果它又继续满足一定的条件, 就称它属于第二范式。以此类推, 可以得到其他规范程度更高的形式。高一级的范式是低一级的范式的子集, 低一级的范式则包含了高一级的范式。

3 类之间多重性向关系数据库转换的规则

数据模型是通过将关联映射到关系数据库来建立的。

在将关联映射到关系数据库之前, 首先介绍一下由关联的多重性向关系数据库转换的一些规则。

类之间的多重性可以分为:一对一、一对多和多对多3种情况。对3种多重性的处理已经有一些一般的转换规则, 如表1所示。

4 设计数据模型

如前所述, 数据模型是通过将关联映射到关系数据库来建立的。现在按照前几节介绍的方法或原则, 再依据第二讲设计的结果, 为系统设计数据模型。

4.1 将类映射为关系数据表

将类映射为关系数据表, 必须遵循表的第一范式, 列必须是不可再分的数据项。

从类到表的映射可以是一对一, 即一个类映射为一个表。但是, 一对一映射可能会导致一些问题, 如表太多、连接太多、表丢失以及对泛化关系处理不合理等, 在设计中要灵活调整。

第二讲1节2小节为本项目实例已经定义了3个类。这里将3个类分别映射为一个关系数据表。表的名称以T_打头, 其后紧跟相应的类的名称, 如表2所示。

4.2 将类的属性映射为表的列

第二讲4节已经为3个类分别定义了属性, 现在将类的属性映射为表的列。

4.2.1 项目信息表T_Project

项目信息表T_Project用于保存项目的信息。T_Project除了包含由Project类属性映射的列:项目大类、项目小类、项目经费、已报销金额、报销部门和报销人, 还要插入一个主键项目号。此外, 公司财务室还要求每个项目应有一个备注, 用于保存项目的文字描述信息。这样, 表T_Project包含的列如表3所示。

4.2.2 票据信息表T_Invoice

票据信息表T_Invoice用于保存票据的信息。

在表T_Invoice中, 由Invoice类属性映射的列有:供应商、报销内容、报销金额、报销时间、报销人、付款方式、是否附合同、是否附通知、凭证号和票据张数。其中“报销内容”公司财务室要求有大类、小类之分, 因此将列“报销内容”拆分为“报销内容大类”和“报销内容小类”两列。为了区分票据的不同状态, 还要增加一列“状态”。其次, 插入一个主键票据号。最后, 考虑到表T_Project与T_Invoice的关系, 再插入一个外键“项目号”以与表T_Project中的主键“项目号”匹配。这样, 表T_Invoice包含的列如表4所示。

4.2.3 用户信息表T_User

用户信息表T_User用于保存用户的注册信息。

表T_User包含由User类属性映射的列:账户、姓名、权限、部门和密码。其中账户对每一用户都是唯一的, 可以作为主键。这样, 表T_User包含的列如表5所示。

4.3 将关联映射到关系数据库

从第二讲2、3节知道, 3个类中包含两种类与类之间的关系。这两种关系都是关联关系。下面分别分析这两种关系向关系数据库的转换。

(1) Project与Invoice之间关系的转换

Project类与Invoice类之间存在着一到0或多的双向关联。在表T_Project和T_Invoice中, 可以通过表T_Invoice中外键“f7” (项目号) 匹配表T_Project中的主键“f0” (项目号) 来模拟类Project与Invoice之间的关系。

(2) Project与User之间关系的转换

Project类与User类之间存在着0或多到一或多的双向关联。

从表1看到, 对于类之间多对多关系向关系数据库转换, 是通过创建另外一个交叉表来解决的。这里采取一种变通的办法来处理:不增加交叉表, 而在表T_Project中的列“f5” (报销人) 中保存多个报销人的账户, 每个账户用空格‘’隔开。这样处理后, 虽然为编码增加了一点负担, 但是减少了存储空间。

⒋4数据模型

归纳以上设计结果, 可以得到系统的数据模型如图1所示。

5 结语

在传统方法中创建数据模型的依据是实体-关系 (E-R) 模型。在面向对象方法中, 创建数据模型的依据是类模型。类模型在本质上是扩展的实体-关系 (E-R) 模型。

将类模型映射到数据模型时, 要处理两种映射:由类映射到表 (包括由类属性映射到表的列) , 将关联映射到关系数据库。

为项目实例建立的数据模型表很简单, 只包含3个数据表。

回顾前面的工作, 会有两点缺憾:

(1) 在处理类Project与User之间多对多关系的转换时, 没有创建另外一个交叉表, 而是采取了一种变通的办法来处理, 即:在表T_Project中的列“f5” (报销人) 中保存多个报销人的账户, 每个账户用空格“”隔开。这样的处理虽然减少了存储空间, 但是违背了第一范式:表的每个列都是不可再分的数据项。

(2) 公司的部门被作为用户表T_User的一个列将导致公司的部门如果有变动, 系统维护会涉及修改程序代码。合理的做法是:在建立类模型时, 将部门识别为一个类, 进而在本讲将这个类映射为一个数据表, 这样, 公司的部门如果有变动, 系统维护只涉及修改数据。

参考文献

[1]范晓平.ASP.NET2.0项目开发第一步UML+VB+C#+Crystal Reports.清华大学出版社, 2008.

[2]冀振燕.UML系统分析设计与应用案例.人民邮电出版社, 2003.

标准数据类 篇2

作者最后说了这么一段话“大数据不是一个充斥算法和冰冷机器的世界,人类的作用依然无法替代,大数据为我们提供的不是最终答案们只是一个参考答案,暂时的,只是问了等待更害的解决办法,在不久的未来。”

另外一个随之而来的问题就是数据授权使用,泄露问题,数据会有二次利用发现潜在价值,但这又产生更严重的问题,二次利用如何授权管理,是否涉及违法。解决办法是通过会计行业,可以有一个充当审计工作的外部算法师,作为第三方公证机构在出现问题时,可以进行审核算法和数据的使用情况,在公司内部也可以设立内部算法师,很类似公司自己的律师一样,一方面参加产品研发,另一方面在公司使用数据出现问题时也可以及时阻止,提醒。

大数据确实在某种程度上可以降低风险,保护国家安全,但信用卡,保险业就会通过大数据分析拒绝一部分人(因为他们还不起账),但我们想想,人类进步,就是通过反抗,妥协,权衡,再平衡。有了一切大数据的`预测,就少了很多的可能性,在某种程度会降低我们的社会进步。

说实话之前听到大数据的概念觉得很有前景,很神奇,很向往,这本书给我带来的更多的是对大数据会给我们带来不亚于克隆人的糟糕影响。让我有了对技术给人类社会带来的负面影响有了一个全面的思考认识。读到后半部分的时候,我很沮丧啊,觉得这么好的技术,竟然负面影响超过了正面的,我很失落,也不再看好大数据。不过后来作者的一席话让我重振信心,他举例,曾经印刷术出现之前大部分的书全部在修道院,教皇手里,有了印刷术之后人们有了书,有了更开阔的思路,更多的想法,有了言论等等,这个的影响力要比大数据大很多,人类还是一步一步建立起来相应的制度,法律,直到今天我们已经有了对应的很完善稳定的法律体系。

我们还是应该对科技充满信心,科技依然是那个推动社会进步的原动力,只是我们需要及时完善相对应的管理措施。

最后说说对作者写的书的评价吧,其实我觉得写的一般,不过很符合外国人的写书风格,简单明了,很容易看懂,理解都不需动脑子,举例很少(可能因为本身合适的例子就很少吧)来来回回就那几个例子,有点像我们高考作文,来来回回那几个例子,什么场景都能用,哈哈。总的来说还是不错的,评级6分吧。

流数据聚类研究综述 篇3

随着通信和计算机等信息技术的发展,许多应用领域如金融市场、网络监控、电信数据管理、传感器网络等产生的数据属于流数据(data stream)类型,。流数据是由Henzinger等人于1998年在论文“Computing on Data Streams”中首次提出[1]。流数据快速、连续无限和动态的特性,加上数据收集时间和分析处理速度的限制,使得传统的数据管理和分析技术无效或需要改进,流数据已经成了一个新的研究领域和热点[2,3]。

国外在流数据挖掘方面有两个比较有影响的研究小组:Stanford大学R.Motwani教授领导的研究小组以及UIUC的由C.Aggarwal和J.Han教授领导的研究小组。前者的研究侧重于流数据管理、流数据的连续查询和流数据的聚类方面,提出了不同于传统DBMS的DSMS概念,他们的研究得到了美国国家自然科学基金的资助;后者的研究侧重于流数据分析方面,对于流数据的在线分析,从聚类、分类、频繁项集挖掘以及可视化等角度做了大量研究工作,他们的研究得到了美国军方和国家自然科基金的资助。目前国内对流数据挖掘的研究还比较少。而流数据聚类研究是数据流挖掘的一个重要方向。

1 流数据和传统数据的比较

1.1 逐层优化的区域合并改进算法介绍

一个流数据是实时、连续、有序、时变、无限的元组序列。与传统的数据集相比,流数据具有以下一些鲜明的特点:

(1)有序性。流数据中的元组按时间有序生成,序号隐含于到来的时刻或直接以时间戳记录。

(2)不可再现性。流数据中的数据一旦流过处理节点就不会再次出现,除非进行特殊的保存。

(3)高速性。流数据数据高速地生成,即产生元组的速率较高。

(4)无限性。流数据数据一直连续不断地产生,往往是无限量的。

(5)高维性。流数据往往包含大量的属性,即描述数据流的维数较高。

(6)动态性。产生流数据的概率分布模型是时变的,且变化的速率无法控制。

2 统一流聚类表示模型[4]

设2条轨迹分别为:

轨迹M{M1,M2,…,Mi…,Mn},

轨迹N{N1,N2,…,Ni…,Nn}

定义1设S为轨迹集合,设M,N为集合中任意2条轨迹,定义操作Transform(M,N),其返回值为变换后轨迹对(M,N)的真实差异。

用Transform(S)表示对集合S的转换操作,返回一个n×n集合为S’,元素为对应轨迹对的最小差异,n为轨迹的数量。

定义2单流可形式化描述为:数据…Xi-1XiXi+1…分别在…Ti-1TiTi+1…时刻到达,Xt为d维数据,记为Xt=(x1,x2,…,xd),(d≥1)。

统一流模型:表示为流集合{Sj}(j=l,2,…,n)和维数为d的公共属性维集,Sj为定义2的单流。其中,n≥l,d≥1。

n=l,d=l:一维数据单流模型;

n=l,d>l:多维数据单流模型;

n>l,d=l:一维数据多流模型;

n>l,d>l:多维数据多流模型。

定义3窗口W为保存最近到达的W个数据点集合,每次更新数据块大小B;Pji表示第j(j=l,2,…,n)只数据流在时刻ti到达的数据。

定义4考虑演化数据流,定义时间衰减函数:

其中,t0为数据到达时刻;t为当前时刻。当c=l时,演化流蜕化为非演化流,即流中的各数据不论其何时到达都具有相同的权重。

统一流聚类表示模型:数据窗口W作用于集合{Sj}(j=1,2,…,n)产生数据集,生成数据个数为n(数据的维数为窗口大小W)或W(数据维数为d)的集合,每收到B(B≤W)个数据则更新一次数据集,根据n和d值进行Transform(S,n,d)操作,聚类过程中按如下公式计算权重:f(ti)·pji(j=l,2,…,n)再结合权重计算相似性。参数n,W,d,B,以及衰减参数c的不同取值组合可表示出不同的数据流模型及其聚类处理框架。

流聚类框架如下所示:

3 流数据的聚类算法研究

3.1 经典聚类算法综述

第一个以流数据为分析对象的聚类算法是由Sudipto Guha等提出的STREAM算法。这种算法根据分治原理,使用一个不断迭代的过程实现有限空间对数据流进行K-means聚类,但该算法无法处理演化的数据流。

Aggarwal在总结上述方法本质缺陷的基础上提出了一个数据流聚类框架Clustream[5],其核心思想是将聚类过程分为在线和离线两个阶段。在线部分的任务是存储数据流的汇总结果,生成一种称为微聚类的信息存储结构,并按金字塔式时间结构将中间结果进行保存。离线部分既是根据用户指定的观察时段及聚类数量,快速生成聚类结果的过程。Clu Stream不足之处在于需要用户指定聚类簇数k,要求强行输入固定的聚类簇数必然影响真实的聚类形态分布。同时,算法是以K-means算法为基础,对非凸形状聚类效果不好,无法发现任意形状的聚类,且当噪声数据增多时,聚类质量急骤下降。

近年来许多学者围绕Clustream框架进行了大量研究。Aggarwal等后续提出了专门针对高维连续属性数据流的HPStream算法,该算法引入了子空间聚类,并提出了具有遗忘特性的聚类结构,使用高维投影技术和衰减结构来处理高维数据流,HPStream算法对高维数据流具有很好的健壮性。但算法中需要用户来指定平均聚类维数,用户一般并不具备这种领域知识,成为该算法的瓶颈。Cao等人提出了基于密度的两阶段聚类方法,即Den Stream算法,该算法仍然沿用Clu Stream算法中的双层结构,创造性的引入了潜在微聚类簇和孤立点微聚类簇结构,具备对孤立点的分析能力,即随着数据流不断进化,算法可以识别在某一时间段有可能演变成聚类簇的孤立点或“潜在聚类”,从而更加准确的捕获真实的聚类形态。但由于算法中采用全局一致的绝对密度作为参数,使得聚类结果对参数十分敏感,而且它不支持指定的时间窗口内实时数据流的演化分析。

3.2 最新公布的算法

在最近的数据流聚类研究中,有将多种原有技术进行结合使用,也有很多新颖的方法不断出现,其中受到广泛关注的3类方法是基于网格的数据流聚类技术[6,7,8,9]、子空间聚类技术[7,8,9]、混合属性数据流聚类[10],代表了当前数据流聚类研究的主流方向。

(1)D-Stream算法

D-Stream是一个典型的数据流网格聚类算法[6]。该算法通过设定密度阀值将网格分为密集、稀疏以及过渡期3类,算法在线维护一个存放非空网格的哈希表grid_list,每读入一个数据点,确保其所属网格在哈希表中,同时更新该网格的特征向量,并且通过理论证明出密集网格与稀疏网格相互转变所需的最短时间,以该时间的最小值gap为周期扫描哈希表,删除表中的稀疏网格。聚类请求到来时,将相邻的密集网格合并形成聚类(内部网格必须是密集的,外部网格可以是密集或者过渡期网格)。该算法有很多优点:(1)避免了将距离作为相似性度量标准,支持任意形状、任意大小的簇;(2)计算结果与数据输入顺序无关;(3)只需进行网格映射,避免了大量的距离和权值的计算,使得算法计算量与数据流量无直接关系。该算法的不足之处是当数据流维度较高时,会产生大量的网格,算法运行效率急剧下降。

(2)GSCDS算法

最近的研究中,子空间聚类技术也被借鉴到数据流模型,最近公布的GSCDS算法[8]就是一个代表。子空间聚类算法是一类在数据空间的所有子空间搜寻聚类的方法,根据搜索策略的不同一般分为自底向上的模式和自顶向下的模式。GSCDS算法充分利用自底向上网格方法的压缩能力和自顶向下网格方法处理高维数据的能力,将它们结合起来应用于实时数据流。

该算法的优点在于:(1)计算精度高;(2)能很好地识别和恢复网格中被划分面切割的聚类;(3)能够发现隐藏在任意子空间中的聚类。但是由于高维空间的子空间数量很多,使得算法的运算量较大,且该算法不能支持数据流的演化分析。

CAStream算法[7]也是最近公布的一个子空间聚类算法,算法借鉴Lossy Counting思想近似估计网格单元,采用改进的金字塔时间框架分割数据流,算法支持高维数据流、任意聚类形状及演化分析。

(3)HClu Stream算法

真实数据流一般具有混合属性,全连续或全离散属性的数据流在现实中几乎不存在,而目前大多的算法仅局限于处理连续属性,对离散属性采取简单的舍弃办法。为了使算法有效处理真实数据流,Yang等人提出一种基于混和属性的数据流聚类算法Hclu Stream[10]。

其它最新公布的算法还有提出纳伪和拒真两种聚类特征指数直方图,来分别支持纳伪和拒真误差窗口的Clu Win算法[11]、通过图形处理器来实现高速处理实时数据流聚类的算法[12]以及采用核方法聚类的算法[13]。

4 结束语

本文从流数据特点,研究现状及聚类算法等方面进行了总结。流数据的数据挖掘和知识发现已成为目前国际数据挖掘领域的新兴研究热点。其未来的研究将会主要集中在以下几个方面:(1)基于资源约束的自适应实时数据流聚类。这一概念最早由Gaber[14]等人提出,主要针对无线传感网络等资源约束环境进行数据流聚类;(2)高维度实时数据流的聚类。大多数真实数据流都具有高维特性,高维空间中对象分布稀疏,噪声不易识别,是一个较难解决的问题;(3)分布式环境下的多数据流实时聚类。

摘要:流数据挖掘技术是数据挖掘领域的新研究方向之一,而聚类研究又是其重要的内容。本文介绍了流数据基本特点,在统一流聚类表示模型的基础上,对现有流数据聚类算法进行了总结,并进一步提出了流数据聚类技术的研究方向和前景。

员工类薪酬定级标准 篇4

(含站台)

1、有责任心,能按照岗位职责开展本职工作。

2、能及时、准确的完成本职工作。

1、熟悉工作环节、具备熟练的工作技能,工作能力强。

2、学习能力强、进入工作角色快。

3、团结同事、服从领导指示。

1、精通本职工作的每个环节,能够独立、主动的完成公司交办的各项任务。

2、就改善工作方式,提高工作效率能够提出合理化建议。

3、工作效率高、责任心强,有团队合作精神。

4、工作能力突出、表现优秀。

试用期

管理人员

1、初级学员、作为公司储备的管理人员。

2、具备基本的管理经验和工作技能。

3、一般管理人员,工作经验在1年以上。

1、该岗位工作经验两年以上。

2、具备一定的理论素养和工作技能

3、有培养价值,能作为后备管理干部。

1、相关管理经验3年以上。

2、本身具备熟练的工作技能和管理素质。

3、综合素质高,能作为公司的骨干力量。

试用期

员工

上一篇:群项目下一篇:机械设计毕业论文