
大数据时代数据管理方式研究
1数据管理技术的回顾
数据管理技术主要经历了人工管理阶段、文件系统阶段和数据库系统阶段。随着数据应用领域的不断扩展,数据管理所处的环境也越来越复杂,目前广泛流行的数据库技术开始暴露出许多弱点,面临着许多新的挑战。
11 人工管理阶段
20 世纪 50 年代中期,计算机主要用于科学计算。当时没有磁盘等直接存取设备,只有纸带、卡片、磁带等外存,也没有 *** 作系统和管理数据的专门软件。该阶段管理的数据不保存、由应用程序管理数据、数据不共享和数据不具有独立性等特点。
12 文件系统阶段
20 世纪 50 年代后期到 60 年代中期,随着计算机硬件和软件的发展,磁盘、磁鼓等直接存取设备开始普及,这一时期的数据处理系统是把计算机中的数据组织成相互独立的被命名的数据文件,并可按文件的名字来进行访问,对文件中的记录进行存取的数据管理技术。数据可以长期保存在计算机外存上,可以对数据进行反复处理,并支持文件的查询、修改、插入和删除等 *** 作。其数据面向特定的应用程序,因此,数据共享性、独立性差,且冗余度大,管理和维护的代价也很大。
13数据库阶段
20 世纪 60 年代后期以来,计算机性能得到进一步提高,更重要的是出现了大容量磁盘,存储容量大大增加且价格下降。在此基础上,才有可能克服文件系统管理数据时的不足,而满足和解决实际应用中多个用户、多个应用程序共享数据的要求,从而使数据能为尽可能多的应用程序服务,这就出现了数据库这样的数据管理技术。数据库的特点是数据不再只针对某一个特定的应用,而是面向全组织,具有整体的结构性,共享性高,冗余度减小,具有一定的程序与数据之间的独立性,并且对数据进行统一的控制。
2大数据时代的数据管理技术
大数据(big data),或称巨量资料,指的是所涉及的资料量规模巨大到无法透过目前主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。大数据有 3 个 V,一是大量化(Volume),数据量是持续快速增加的,从 TB级别,跃升到 PB 级别;二是多样化(Variety),数据类型多样化,结构化数据已被视为小菜一碟,、音频、视频等非结构化数据正以传统结构化数据增长的两倍速快速创建;三是快速化 (Velocity),数据生成速度快,也就需要快速的处理能力,因此,产生了“1 秒定律”,就是说一般要在秒级时间范围内给出分析结果,时间太长就失去价值了,这个速度要求是大数据处理技术和传统的数据挖掘技术最大的区别。
21 关系型数据库(RDBMS)
20 世纪 70 年代初,IBM 工程师 Codd 发表了著名的论文“A Relational Model of Data for Large Shared DataBanks”,标志着关系数据库时代来临。关系数据库的理论基础是关系模型,是借助于集合代数等数学概念和方法来处理数据库中的数据,现实世界中的实体以及实体之间的联系非常容易用关系模型来表示。容易理解的模型、容易掌握的查询语言、高效的优化器、成熟的技术和产品,使得关系数据库占据了数据库市场的绝对的统治地位。随着互联网 web20 网站的兴起,半结构化和非结构化数据的大量涌现,传统的关系数据库在应付 web20 网站特别是超大规模和高并发的 SNS(全称 Social Networking Services,即社会性网络服务) 类型的 web20 纯动态网站已经显得力不从心,暴露了很多难以克服的问题。
22 noSQL数据库
顺应时代发展的需要产生了 noSQL数据库技术,其主要特点是采用与关系模型不同的数据模型,当前热门的 noSQL数据库系统可以说是蓬勃发展、异军突起,很多公司都热情追捧之,如:由 Google 公司提出的 Big Table 和 MapReduce 以及 IBM 公司提出的 Lotus Notes 等。不管是那个公司的 noSQL数据库都围绕着大数据的 3 个 V,目的就是解决大数据的 3个 V 问题。因此,在设计 noSQL 时往往考虑以下几个原则,首先,采用横向扩展的方式,通过并行处理技术对数据进行划分并进行并行处理,以获得高速的读写速度;其次,解决数据类型从以结构化数据为主转向结构化、半结构化、非结构化三者的融合的问题;再次,放松对数据的 ACID 一致性约束,允许数据暂时出现不一致的情况,接受最终一致性;最后,对各个分区数据进行备份(一般是 3 份),应对节点失败的状况等。
对数据的应用可以分为分析型应用和 *** 作型应用,分析型应用主要是指对大量数据进行分类、聚集、汇总,最后获得数据量相对小的分析结果; *** 作型应用主要是指对数据进行增加、删除、修改和查询以及简单的汇总 *** 作,涉及的数据量一般比较少,事务执行时间一般比较短。目前数据库可分为关系数据库和 noSQL数据库,根据数据应用的要求,再结合目前数据库的种类,所以目前数据库管理方式主要有以下 4 类。
(1)面向 *** 作型的关系数据库技术。
首先,传统数据库厂商提供的基于行存储的关系数据库系统,如 DB2、Oracle、SQL Server 等,以其高度的一致性、精确性、系统可恢复性,在事务处理方面仍然是核心引擎。其次,面向实时计算的内存数据库系统,如 Hana、Timesten、Altibase 等通过把对数据并发控制、查询和恢复等 *** 作控制在内存内部进行,所以获得了非常高的性能,在很多特定领域如电信、证券、网管等得到普遍应用。另外,以 VoltDB、Clustrix 和NuoDB 为代表的 new SQL 宣称能够在保持 ACDI 特性的同时提高了事务处理性能 50 倍 ~60 倍。
(2)面向分析型的关系数据库技术。
首先,TeraData 是数据仓库领域的领头羊,Teradata 在整体上是按 Shared Nothing 架构体系进行组织的,定位就是大型数据仓库系统,支持较高的扩展性。其次,面向分析型应用,列存储数据库的研究形成了另一个重要的潮流。列存储数据库以其高效的压缩、更高的 I/O 效率等特点,在分析型应用领域获得了比行存储数据库高得多的性能。如:MonetDB 和 Vertica是一个典型的基于列存储技术的数据库系统。
(3)面向 *** 作型的 noSQL 技术。
有些 *** 作型应用不受 ACID 高度一致性约束,但对大数据处理需要处理的数据量非常大,对速度性能要求也非常高,这样就必须依靠大规模集群的并行处理能力来实现数据处理,弱一致性或最终一致性就可以了。这时, *** 作型 noSQL数据库的优点就可以发挥的淋漓尽致了。如,Hbase 一天就可以有超过 200 亿个到达硬盘的读写 *** 作,实现对大数据的处理。另外,noSQL数据库是一个数据模型灵活、支持多样数据类型,如对图数据建模、存储和分析,其性能、扩展性是关系数据库无法比拟的。
(4)面向分析型的 noSQL 技术。
面向分析型应用的 noSQL 技术主要依赖于Hadoop 分布式计算平台,Hadoop 是一个分布式计算平台,以 HDFS 和 Map Reduce 为用户提供系统底层细节透明的分布式基础架构。《Hadoop 经典实践染技巧》传统的数据库厂商 Microsoft,Oracle,SAS,IBM 等纷纷转向 Hadoop 的研究,如微软公司关闭 Dryad 系统,全力投入 Map Reduce 的研发,Oracle 在 2011 年下半年发布 Big Plan 战略计划,全面进军大数据处理领域,IBM 则早已捷足先登“,沃森(Watson)”计算机就是基于 Hadoop 技术开发的产物,同时 IBM 发布了 BigInsights 计划,基于 Hadoop,Netezza 和 SPSS(统计分析、数据挖掘软件)等技术和产品构建大数据分析处理的技术框架。同时也涌现出一批新公司来研究Hadoop 技术,如 Cloudera、MapRKarmashpere 等。
3数据管理方式的展望
通过以上分析,可以看出关系数据库的 ACID 强调数据一致性通常指关联数据之间的逻辑关系是否正确和完整,而对于很多互联网应用来说,对这一致性和隔离性的要求可以降低,而可用性的要求则更为明显,此时就可以采用 noSQL 的两种弱一致性的理论 BASE 和 CAP关系数据库和 noSQL数据库并不是想到对立的矛盾体,而是可以相互补充的,根据不同需求使用不同的技术,甚至二者可以共同存在,互不影响。最近几年,以 Spanner 为代表新型数据库的出现,给数据库领域注入新鲜血液,这就是融合了一致性和可用性的 newSQL,这种新型思维方式或许会是未来大数据处理方式的发展方向。
4 结束语
随着云计算、物联网等的发展,数据呈现爆炸式的增长,人们正被数据洪流所包围,大数据的时代已经到来。正确利用大数据给人们的生活带来了极大的便利,但与此同时也给传统的数据管理方式带来了极大的挑战。
下面我们来说一下Python具体的工作岗位以及其岗位要求:
Python后台开发工程师:主要是负责搭建和改进平台产品的后台,并与前端开发工程师相互配合完成整体产品的开发工作。要求工程师具备至少一门Python Web开发框架(Tornado、Django、Flask等),了解并熟悉MySQL/Redis/MongoDB。还要熟悉分布式、微服务、高性能Web服务的开发。
Python爬虫开发工程师:爬虫开发工程师并非我们预想的那样,只是负责为公司爬取相对应的数据内容。爬虫开发工程师主要负责对传统网页、SNS及微博等各种网站信息高效采集与正确解析,然后对用户数据进行整理分析,参与建模的构建,总结分析不同网站、网页的结构特点及规律,负责爬虫架构设计和研发,参与爬虫核心算法和策略优化研究。需要开发工程师熟悉了解robot规则、selenium、mitmproxy、pymouse等内容。当然作为爬虫开发工程师一定要有一定的职业情况,所有工作都需要在合理合法的需求下进行。
Python全栈开发工程师:是指可以使用Python相关工具,独立完成网站开发,称之为全栈开发。全栈开发工程师需要掌握非常多的技能,包括:项目管理、前后端开发、界面设计、产品设计、数据库开发、多端产品等等。
自动化运维工程师:是在基本的运维工作的基础上,实现运维工作的自动化,并且对自动化程序进行优化提升。需要从业者在掌握基本的运营工作的前提下,掌握Python中的IPy、Ansible、Saltstack等常用模块。
自动化测试工程师:首要要完成测试的基本工作,包括测试计划、测试用例、黑盒测试、性能测试等等。其次要是完成产品的自动化测试的部署以及维护工作,并且不断尝试新的方法,新的工具,以提高测试的效率。需要掌握Python以及selenium相关的技能。
数据分析师:指的是不同行业中,专门从事行业数据搜集、整理、分析,并依据数据做出行业研究、评估和预测的专业人员。需要从业者了解行业相关业务知识、相关管理工作、掌握足够的数据分析方法、了解数据分析工具使用、能够完成数据分析建模等,工作内容偏重于分析,同样也要掌握一定的开发能力,例如R语言和Python语言。
数据分析开发工程师:根据数据分析师的建模完成数据相关的开发工作,搭建仓库、完成数据存储、数据处理、计算处理以及报表开发等工作。需要从业者熟练应用数据库、数据建模开发、Python相关数据科学知识等技能。
人工智能开发工程师:根据企业人工智能AI相关的开发需求,完成相应产品或者功能开发。需要从业者掌握充分的数据理论基础、Python开发基础、机器学习理论与实践、深度学习理论与实践、自然语言处理等一系列相关的开发技能。
Python游戏开发工程师:主要负责游戏服务端的逻辑开发。需要从业者掌握Python各种性能优化方法、soket网络编程知识、运维相关基础知识、以及Python相关的游戏开发库与框架。此外还可以将Python开发相关工作按照岗位晋升分为初级Python开发工程师、中级Python开发工程师、高级Python开发工程师、项目经理、架构师、CTO等。主要是根据从业者工作年限,在某个就业方向的工作经验以及解决问题的能力进行定位。
无论是哪个就业方向,扎实的学习好Python相关知识是重中之重,在互联网行业,无论是大厂还是创业创新的公司,招聘人才的最核心要求是技术能力,只有自己的能力和岗位匹配的时候,才能获得更多的工作机会。
你好!很高兴回答你的问题。\r\n1新颖\r\n亚马逊之所以成功,有一半归功于科技不为过。贝索斯早就洞悉商业价值与科技的必然关系。贝索斯说:“网络商业将是极度重要的。对许多垂直性产业(像书籍销售),重要性更是很快就会到来。网站的确可以在许多产业增加商业价值,而之前科技必须尽量成熟。”正如专家所言:未来对所有零售业者的挑战,就是去决定科技与自己从事的零售行业是如何相关。\r\n2快捷\r\n可以从三个方面证明亚马逊书店的快捷特征。其一是搜索快速,亚马逊不断更新其技术设备,使用最先进的网络服务器,因此功能极为便利与快速。另外,除了搜寻选项之外,顾客也可以同时浏览23种不同的主题,如此也节省了上网的时间,增加搜索的速度。这也是网络书店虽然没有传统书店的临场感,但是货比三家的机会却更为容易。其二是订购快速。亚马逊中有两套订购的 *** 作方式。其三是送货时间的快速。亚马逊快速的送货时间,是其受好评的重要原因。亚马逊书店对于订货到达的时间有一恒等式:找到订货商品+装运时间=所需的送货时间。\r\n3实惠\r\n亚马逊曾经自称是举世最大的折扣者,有高达30万种以上的书目可以进行购买折扣优惠。的确,少了中间商抽成剥削,促使亚马逊销售的书籍或其他商品,有着较平实的价格。\r\n4全面\r\n○1独具特色的书评\r\n亚马逊在书评上下了很大工夫,可以说形成了一大特色。它们的书评主要来自书的作者、出版者和读者,从不同的角度,以不同的方式来撰写书评,以对一本书提供多角度的分析和评价。为此,亚马逊提供了一个交流读书感想的空间和机会,必然会受到书迷们的欢迎。并特别声明:任何违反规定的书评将不予在网上刊登。对作者评论、出版者评论、读者评论分别提出了不同的要求和限定。\r\n○2交易的安全性\r\n关于xyk结账的安全性:亚马逊对安全性作出了专门的“安全消费保证”:如果你在亚马逊中的消费得到了错误的索取,可以分文不付。另外,用户可在亚马逊中建一个账户,预支一定数额的钱。在每次订购后,亚马逊会自动结账。\r\n在付款方式上,顾客可选择xyk、现金汇款或支票等方式。亚马逊接受的卡有很多种。用户为自己的支付渠道设立密码,可通过全显示卡号或只输入后5位卡号来支付款额。亚马逊不在互联网上公开顾客的卡号,卡号将被存入专门的机器保存。\r\n○3遍布世界各地的营销网络\r\n亚马逊成为目前网上最大的网上书店,但他们没有就此满足。在其主页下面,写着一句:“我们计划以更多的语种在更多的国家出现。”亚马逊已不再满足于国内市场的成功,它开始将影响扩展到世界各地。目前,其经营的区域包括非洲、亚太地区、拉美、中东、北美和欧洲等六大板块;现有的非英文语种有法语、德语、日语等八种。\r\n○4注重塑造品牌\r\n品牌成为网络信息服务企业最重要的无形资产。在国际市场上,网络信息服务企业和产品的品牌将占居越来越重要的地位,具有高附加值的名牌信息产品将具有更大的优势。而品牌的建立取决于该企业能够在短时期内创造全新的信息服务产品和机制,并且迅速地占领市场。而网上信息产品除了在质量和数量上占有优势以外,还应该在产品的特性上具有不可替代性。对于网上用户来说,对最新的服务往往情有独钟,一旦接受的信息服务,特别是好的信息服务,不会轻易放弃。强大的品牌效应可以提高公司的可信度。品牌的最主要价值在于,长期以来,消费者对产品和服务的评价,这种评价在消费者中具有广泛的影响力,也是增加品牌可信度的关键。一些新型网络信息服务公司,如Yahoo、AOL、亚马逊都在品牌塑造方面投入巨大,以达到广而告之的效果。信息服务公司塑造品牌的一个重要手段是无偿提供服务和软件使用,目的是在产品服务与用户之间建立一种密切的联系。由于信息用户的利用信息的行为一旦形成就比较稳定,因此,这种方式对信息产品的品牌塑造很有帮助。几年来,亚马逊创造了读者在网上购书的参政权,为读者提供信息反馈的机会和热情的服务,如当读者来到网上书店的时候,他会很快收到一份畅销书目,并要求消费者评价10本书,这足以显示读者的偏爱,也是了解用户需求的一个捷径。根据用户的爱好,亚马逊还会提醒读者,他们喜欢的作者又写了什么新书,是否愿意先睹为快,这正是传统的图书营销商所梦寐以求的。为了扩大影响,亚马逊公司允许任何网址免费与亚马逊相连,并将这种“同志站点”带来的效益以5~15%的比例返还,目前,亚马逊的“同志参政会”网址已经达4万左右,使得网上到处都飘扬着亚马逊的旗帜,成为最好的品牌宣传。\r\n“新颖、快捷、实惠、全面”,这四点恰好符合了亚马逊公司的价值主张,只要在这四个方面能够不断地追求创新,亚马逊就拥有了极佳的竞争优势。\r\n希望能帮到你,请采纳,如满意给点赞一个哦
数据库可以按照内容类型分类:书目、全文、数字和图像。在计算中,数据库有时根据其组织方法进行分类。有许多不同类型的数据库,从最流行的方法关系数据库到分布式数据库、云数据库或NoSQL数据库。
常用数据库:
1、关系型数据库
关系型数据库是由IBM的EF Codd于1970年发明的,它是一个表格数据库,其中定义了数据,因此可以以多种不同的方式对其进行重组和访问。
关系数据库由一组表组成,其中的数据属于预定义的类别。每个表在一个列中至少有一个数据类别,并且每一行对于列中定义的类别都有一个特定的数据实例。
结构化查询语言(SQL)是关系数据库的标准用户和应用程序接口。关系数据库易于扩展,并且可以在原始数据库创建之后添加新的数据类别,而不需要修改所有现有应用程序。
2、分布式数据库
分布式数据库是一种数据库,其中部分数据库存储在多个物理位置,处理在网络中的不同点之间分散或复制。
分布式数据库可以是同构的,也可以是异构的。同构分布式数据库系统中的所有物理位置都具有相同的底层硬件,并运行相同的 *** 作系统和数据库应用程序。异构分布式数据库中的硬件、 *** 作系统或数据库应用程序在每个位置上可能是不同的。
3、云数据库
云数据库是针对虚拟化环境(混合云、公共云或私有云)优化或构建的数据库。云数据库提供了一些好处,比如可以按每次使用支付存储容量和带宽的费用,还可以根据需要提供可伸缩性和高可用性。
云数据库还为企业提供了在软件即服务部署中支持业务应用程序的机会。
4、NoSQL数据库
NoSQL数据库对于大型分布式数据集非常有用。
NoSQL数据库对于关系数据库无法解决的大数据性能问题非常有效。当组织必须分析大量非结构化数据或存储在云中多个虚拟服务器上的数据时,它们是最有效的。
5、面向对象的数据库
使用面向对象编程语言创建的项通常存储在关系数据库中,但是面向对象数据库非常适合于这些项。
面向对象的数据库是围绕对象(而不是 *** 作)和数据(而不是逻辑)组织的。例如,关系数据库中的多媒体记录可以是可定义的数据对象,而不是字母数字值。
6、图形数据库
面向图形的数据库是一种NoSQL数据库,它使用图形理论存储、映射和查询关系。图数据库基本上是节点和边的集合,其中每个节点表示一个实体,每个边表示节点之间的连接。
图形数据库在分析互连方面越来越受欢迎。例如,公司可以使用图形数据库从社交媒体中挖掘关于客户的数据。
82 规范化理论
关系数据库中关系规范化问题在1970年Godd提出关系模型时就同时被提出来,关系规范化可按属性间不同的依赖程度分为第一范式,第二范式,第三范式,Boyce-Codd范式以及第四范式人们对规范化的认识是有一个过程的,在1970年时已发现属性间的函数依赖关系,从而定义了与函数依赖关系有关的第一,第二,第三,及Boyce-Codd范式在1976~1978年间,Fagin,Delobe以及Zanjolo发现了多值依赖关系,从而定义了与多值依赖有关的第四范式
范式的定义与属性间的依赖关系的发现有密切关系,在本节中我们介绍函数依赖与多值依赖这两个概念,并在此基础上定义第一范式,第二范式,第三范式,Boyce-Codd范式以及第四范式
821 函数依赖
函数依赖(functional dependency)是关系模式内属性间最常见的一种依赖关系,例如在关系模式S中,S#与Sd间有一种依赖关系即S#的值一经确定后Sd的值也随之唯一地确定了,此时即称S#函数决定Sd或称Sd函数依赖于S#,它可用下面符号表示:
S# → Sd
同样,我们还可以有:
S# → Sa
S# → Sn
但是关系模式SC中的S#与G间则没有函数依赖关系,因为一个确定的学号S#可以允许有多个成绩(它们分别对应于不同的课程),因此成绩G并不能唯一地确定,但是(S#,C#)与G间则存在着函数依赖关系,即有:
(S#,C#)→G
函数依赖这个概念是属语义范畴的,我们只能根据语义确定属性间是否存在这种依赖,此外别无它法可循
定义8-1 设有关系模式R ( U ),X,Y是U的子集,若对于任一个关系R中的任一元组在X中的属性值确定后则在Y中的属性值必确定,则称Y函数依赖于X或称X函数决定Y, 并记作X→Y,而其中X称为决定因素,Y称为依赖因素对于函数依赖,我们一般总是使用一种叫非平凡的函数依赖,在本章中如无特殊声明,凡提到函数依赖时总认为指的是非平凡的函数依赖下面我们对非平凡函数依赖下一个定义
定义8-2 一个函数依赖关系X→Y如满足Y(X,则称此函数依赖是非平凡的函数依赖
为了对函数依赖作深人研究,也为了规范化的需要,我们还得引入几种不同类型的函数依赖
首先;引入一种完全函数依赖的概念,这个概念为真正的函数依赖打下基础例如在S申我们有S#→Sd,因而我们同样也会有:
(S#,Sn) →Sd
(S#,Sa) →Sd
比较这三种函数依赖后我们会发现,实际上真正起作用的函数依赖是:
S#→Sd
而其他两种函数依赖都是由它派生而成的,即是说在函数依赖中真正起作用的是S#,而不是Sn或Sa等这样,我们在研究函数依赖时要区别这两种不同类型的函数依赖,前一种叫完全函数依赖,而后一种叫不完全函数依赖
定义8-3 R( U )中如有X,Y(U,满足X→Y且对任何X的真子集X',都有X'→Y',则称Y完全函数依赖于X并记作:
X Y
定义8-4 在R( U )中如有X,Y(U且满足X→Y,但Y不完全函数依赖于X,则称Y部分依赖于X,并记作:
X Y
由上所述可知,Sd完全函数依赖于S#,但Sd不完全函数依赖于(S#,Sn),亦即有:
S# Sd
(S#,Sn) Sd
(S#,Sa) Sd
在函数依赖中还要区别直接函数依赖与间接函数依赖这两个不同的概念,例如S#→Sd中Sd是直接函数依赖于S#,但如果在属性中尚有系的电话号码DT(假如每个系有唯一的一个电话号码),则有:Sd→DT,从而由S#→Sd及Sd→DT可得到:
S# →DT
在这个函数依赖中,DT并不直接函数依赖于S#,而是经过中间属性Sd传递而依赖于S#,亦即是DT直接依赖于Sd,而Sd又直接依赖于S#,从而构成了DT依赖于S#这种函数依赖关系,是一种间接依赖关系,或叫传递依赖关系我们可以对它定义如下
定义8-5在R( U )中如有X,Y,Z(U且满足:
X→Y,(Y(X ) Y / X,Y→Z
则称Z传递函数依赖于X,否则,称为非传递函数依赖
注意,在这里传递函数依赖与非传递函数依赖仅作概念上区别, 在形式表示上不作任何区别,即Z传递函数依赖于X或Z非传递函数依赖于X都用X→Z表示,这样做的目的也是为了从全局考虑使得表示尽量简单与方便
定义了几种不同的函数依赖关系后,我们在此基础上继续定义一些十分重要的基本概念即有关关键字(keY)的一些概念
定义8-6 在R(U )中如有K(U且满足:
K U
则称K为R的关键字
一个关系模式可以有若干个关键字,我们在使用中选取其中的一个就够了,这个被选中的关键字叫做这个关系模式的主关键字(Prime key),而一般的关键字叫候选关键字(candidate key)
在关系模式S,C,SC中,S的关键字是S#,C的关键字是C#,而SC的关键字是(S#,C#),因为我们有:
S# (S#,Sn,Sd,Sa)
C# (C#,CN,P#)
(S#,C#) (S#,C#,G)
而S中,(S#,Sn),(S#,Sd)等均不是关键字,因为我们有:
(S#,Sn) (S#,Sn,Sd,Sa)
(S#,Sd) (S#,Sn,Sd,Sa)
在一个关系模式中,所有关键字中的属性构成一个集合,而所有其余的属性则构成另一个集合,这两个集合分别叫做这个关系模式的主属性集与非主属性集主属性集中的属性叫做主属性(prime attribute),非主属性集中的属性则叫非主属性(nonprime attribute)例如在关系模式S (S#,Sn,Sd,Sa)中, 主属性集为:
(S#)
而非主属性集为:
(Sn,Sd,Sa)
在SC(S#,C#,G)中,主属性集为:
{ S#, C# }
而非主属性为:
{G}
下面我们给出它们的定义:
定义8-7 R ( U )中所有关键字中的属性构成的集合P称为R(U )的主属性集
定义8-8 在R ( U )中所有非关键字中的属性构成的集合N称为R(U)的非主属性集以上建立了一系列与函数依赖有关的概念,有了它们后就可以讨论与函数依赖有关的几
个范式,它们是第一范式,第二范式及第三范式(实际上第一范式与所有依赖均无关,但为叙述方便起见,可视为与函数依赖有关)至于函数依赖的有关理论的探讨,将在本章稍后部分再作详细介绍
822 与函数依赖有关的范式
在这节中我们讨论四种范式,他们是第一范式,第二范式,第三范式以及Boyce-Codd范式
先介绍第一范式第一范式是关系模式所要遵循的基本条件,即关系中的每个属性值均必须是一个不可分割的数据量如一个关系模式满足此条件则称它属于第一范式(first normal form,或简写成lNF),一个关系模式R如满足第一范式,则可记为R∈lNF
第一范式规定了一个关系中的属性值必须是一个不可分割的数据,它排斥了属性值为元组,数组或某种复合数据等的可能性,使关系数据库中的所有关系的属性值均是最简单的,这样可以做到结构简单,讨论方便一般说来,每个关系模式均要满足第一范式,因为这是对每个关系的最基本要求
下面开始讨论真正与函数依赖有关的三个范式为了讨论这几个范式,我们一般对一个关系模式除了要确定其属性外,还要根据它的语义确定在这个模式上的所有函数依赖设有关系模式R,它有属性集U,而在它上的函数依赖集是F,则此时一个关系模式可由三元组R,U,F确定,它可以写成为:
R ( U,F )
注意,这个表示式仅表示一个三元组而已,它并不表示谓词或关系例如前面所提到的学生关系模式S,它可表示为:
S ({S#,Sn,Sd,Sa},{S#→Sn,S#→Sd,S#→Sa})
又如有一个关系模式叫SCG',它由属性S#,Sn,Sd,Sa, C#, G 组成,其中Ss表示学生所学专业,其他含义同前在这个关系模式中有一些语义信息,它们是:
(1 ) 每个学生均只属一个系与一个专业;
(2 ) 每个学生修读之每门课有且仅有一个成绩;
(3 ) 各系无相同专业
根据上述语义信息以及其他的一些基本常识,我们可以将它们用函数依赖形式表示出来,它们是:
S#→Sn
S#→Sd
S#→Ss
Ss→Sd
(S#,C#)→G
因此,这个关系模式的有关信息可写成为:
SCG'({S#,Sn,Sd,Ss,C#,G},{ S#→Sn,S#→Sd,S#→Ss, Ss S#→Sd, (S#,C# ) →G}
关系模式有了函数依赖后就可以讨论规范化的问题了关系中的每一级范式均提出了关系模式所要遵循的约束条件,目的是为了使得关系模式具有较少异常性与较小的冗余度,即是说使关系模式更"好"一些
下面讨论第二范式
定义8-9 设有R(U)∈lNF且其每个非主属性完全函数赖于关键字,则称R(U)满足第二范式(可简写为2NF)或写为R∈2NF
实际上并不是每个满足第一范式的关系模式必满足第二式,如前面例子中的关系模式SCG'即不满足第二范式这是因在SCG'中,它的关键字是(S#,C#),而它的非主属性集是:
(Sd,G,Sn,Ss)
虽然我们有:
(S#,C#) G
但是Sn,Sd,Ss均并不完全依赖(S#,C#),因此不满足第二范式的条件
一个关系模式若满足第二范式,则它必须具有较少异常与较小冗余度因此,一个关系模式若仅满足第一范式还不够,它必须满足第二范式,其方法是将一个关系模式分解成几个关系模式,使分解后的关系模式能满足第二范式如关系模式SCG'可分解成两个关系模式,它们是:
SCG'l ({S#,C#,G},{( S#,C#)→G})
SCG'2 ({S#,Sn,Sd,Ss},{S#→Sn,S#→Sd,S#→Ss→Sd})
这两个模式SCG'均可用图8-1所示的示意图表示之
模式SCG'I与SCG'2均满足第二范式,它们均有较少异常与较小冗余度,而SCG'l还可以做到无插人与删除异常的出现,而SCG'由于不满足第二范式,因此插入异常,删除异常均有存在,且数据冗余度也很大关于这方面的验证请读者自己去做
(a) SCG'示意图 (b)SCG'1及SCG'2示意图
图8-1 三个关系模式函数依赖示意图
但是,第二范式还不能完全避免异常现象的出现,如SCG'2虽满足第二范式,但仍会出现插入异常与删除异常如在SCG'2中,它有如表8-4所示的模式
表8-4 SCG'2的关系模式
S#
Sn
Sd
Ss
SCG'2:
在这个模式中,如果我们要登记一个尚未招生的系的专业设置情况,要插入这个情况在模式中是较为困难的这样,如果要删除一些学生,有可能会将有关系的专业设置情况一起删除究其原因,不外是因为Sd既函数依赖于S#又函数依赖于Ss,同时Ss又函数依赖于S#,并且由此引起了传递函数依赖的出现因此,看来要消除异常现象,必须使关系模式中无传递函数依赖现象出现,这样就产生了第三范式
第三范式要求关系模式首先得满足第二范式,同时每个非主属性都非传递依赖于关键字由此可以看出,如满足第三范式则每个非主属性既不部分依赖也不传递依赖于关键字
定义8-10 若关系模式R(U)的每个非主属性都不部分依赖也不传递依赖于关键字,则称R满足第三范式(可简写为3NF),并记作R∈3NF
第三范式将关系模式中的属性分成为两类,一类是非主属性集,另一类是主属性集,而非主属性集的每个属性均完全,不传递依赖于主属性集中的关键字,从而做到在关系模式中理顺了复杂的依赖关系,使依赖单一化与标准化,进而力求达到避免异常性的出现,其示意图可见图8-2,在图中可将关系模式比拟成一个原子,其中主属性集是这个原子的原子核,而非主属性集中的属性则是这个原子中的电子,它们紧紧依赖于主属性集构成一个紧密整体
一个关系模式如果不满足第三范式,可以通过模式分解使分解成若干个模式,使分解后的模式能满足第三范式例如关系模式SCG'中,SCG'2满足第二范式,但不满足第三范式,此时可将其分解成下面两个模式:
SCG'21(S#,Sn,Ss)
SCG'22 (Ss,Sd)
图8-2 第三范式的"原子"模型
其依赖示意图见图8-3
(a)SCC'l (b)SCG'21 (c)SCG'22
图8-3模解分解图
在SCG'中经过几次分解后,得到三个关系模式:
SCG'l,SCG'21,SCG'22
这三个模式均满足第三范式且没有异常现象出现,同时冗余度小
1972年Boyce,Codd等从另一个角度研究了范式,发现了函数依赖中的决定因素与关键字间的联系与范式有关,从而创立了另一种第三范式,称为Boyce-Codd范式
Boyce-Codd范式的大概意思是:如果关系模式中,每个决定因素都是关键字,则满足Boyce-Codd范式我们知道,一般而言,每个函数依赖中的决定因素不一定都是关键字,因此,只有当R中决定因素都是关键字时才能认为满足Boyce-Codd范式
定义8-1l 如R(U )中X,Y(U,假定满足R∈lNF,且若X→Y(Y(X)时X必含关键字,则称R满足Boyce-Codd范式(可简记BCNF)并记以R∈BCNF
下面一个问题我们需要研究BCNF与3NF间究竟有什么关系 经过仔细研究后,我们认为BCNF比3NF更为严格下面的定理给出了这个回答
定理8-1关系模式R(U)若满足BCNF,则必定满足3NF
这个定理的证明请读者设法自行证得(注:可以用BCNF及3NF的定义而求得)
这个定理告诉我们:一关系模式满足BCNF者必满足3NF但是,一关系模式满足3NF是否满足BCNF呢 即是说,定理8-1的充分条件是否成立呢 回答是否定的,即必存在一R(U)满足3NF,但不满足BCNF,这只要用一例即可说明
例8-1设有关系模式R(S, C,T),其中S, C含义同前, T表示教师,R有下列语义信息: (1)每个教师仅上一门课;
(2)学生与课程确定后,教师即唯一确定
这样,R就有如下函数依赖关系:
(S, C ) →T
T→C
这个关系模式满足3NF,因为它的主属性集为(S,C )非主属性集为 (T ),而T完全依赖于(S,C )且不存在传递依赖但这个关系模式不满足BCNF,因为T是决定因素,但T不是关键字
这个模式的示意图见图8-4
图8一4 例8一1示意图
从这个例子中也可以看出,实际上第三范式也避免不了异常性,如某课程本学期不开设,因此就无学生选读,此时有关教师固定开设某课程的信息就无法表示因此,要避免此种异常性,还需要进一步将关系模式分解成BCNF如在此例中可将R进一步分解成:
R1 (S, T )
R2 (T, C )
其示意图如图8-5所示而R1, R 2则为BCNF,这两个模式均不会产生异常现象
R1 R 2
图8-5 R分解成两个BCNF
从上面所述可以看出,BCNF比3NF更为严格,它将关系模式中的属性分成两类,一类是决定因素集,另一类是非决定因素集非决定因素集中的属性均完全,不传递地依赖于决定因素集中的每个决定因素关于这种比喻的一个示意图见图8-6
到此为止,由函数依赖所引起的异常现象,只要分解成BCNF即可获得解决在BCNF中每个关系模式内部的函数依赖均比较单一和有规则,它们紧密依赖而构成一个整体,从而可以避免异现象出现以及冗余量过多的现象
图8-6 BCNF的原子模型
823 多值依赖与第四范式
我们研究了函数依赖及与它有关的几个范式,但是否关系模式内属性间的依赖关系除函数依赖外就没有其他依赖关系呢 事实并不如此,函数依赖关系是一种较为明显的依赖关系,但是随着人们对关系模式了解越来越深刻后,发现尚有另外的一些依赖系存在,多值依赖就是其中的一种我们先举一个例子,以说明多值依赖的存在
例8-2设有一个课程关系C,它可用表8-5表示此表表示高等数学这门课的任课教师可以有3个,它的参考书可以有2本;普通物理这门课的任课教师也可以有3个,它的参考书可以有3本如用关系的形式表示,见表8-6
表8-5 关系C的示意图
课程名C
教师名T
选用参考书L
高等数学
李华民
王天华
林 静
高等数学
高等数学教程
普通物理
吴铁钢
谢晓芳
徐秋芳
物理学
普通物理
普通物理基础
表8-6 C的关系
C
T
L
高等数学
李华民
高等数学
高等数学
李华民
高等数学教程
高等数学
王天华
高等数学
高等数学
王天华
高等数学教程
高等数学
林 静
高等数学
高等数学
林 静
高等数学教程
普通物理
吴铁钢
物理学
普通物理
吴铁钢
普通物理
普通物理
吴铁钢
普通物理基础
普通物理
谢晓芳
物理学
普通物理
谢晓芳
普通物理
普通物理
谢晓芳
普通物理基础
普通物理
徐秋芳
物理学
普通物理
徐秋芳
普通物理
普通物理
徐秋芳
普通物理基础
从这个关系中可以看出两点
(1 ) 这个关系的数据冗余很大
(2 ) 这个关系的属性间有一种有别于函数依赖的依赖关系存在
我们仔细分析这种特殊依赖关系后发现它有两个特点:
(1)设如R(U)中X与Y有这种依赖关系,则当X的值一经确定后可以有一组Y值与之对应如确定C为高等数学,则有一组T的值:李华民,王天华,林静与之对应同样C与L也有类似的依赖
(2 ) 当X的值一经确定后,其所对应的一组Y值与U一X一Y无关如在C中,对应高等数学课的一组教师与此课程的参考书毫无关系,这就表示C与T有这种依赖,则T的值的确定与U一C一T= L无关
上述这种依赖显然不是函数依赖,我们称之为多值依赖(multi-valued dependency),如Y多值依赖于X,则可记为X→→Y
从上面所描述的多值依赖X→→Y的特点看,其第一个特点表示X与Y的对应关系是很随便的,X的一个值所对应的Y值的个数可不作任何强制性规定,即Y的值可以是从0到任意多个,其主要起强制性约束的是第二个条件,即X所对应的Y取值与U一X一Y无关,说得确切些,如有R(U)且如存在X→→Y,则对R(U)的任何一个关系R,如有元组s,t∈R,有s[X]=t[X](表示s与t在X的投影相等),如将它们在U一X一Y的投影(记为s[U一X一Y], t [U一X一Y],交换后所得元组称为u, v则必有u, v∈R
关于这个情况可以用表8-7表示
表8-7多值依赖示意图
X
Y
U-X-Y
s s [X]
t t [X]
s [Y]
t [Y]
s[U-X-Y]
t[U-X-Y]
s [X]
t [X]
s [Y]
t [Y]
t[U-X-Y]
s[U-X-Y]
…………
…………
…………
…………
…………
…………
对多值依赖有了充分了解后,我们可对它定义如下:
定义8-12 设R(U)中有X,Y(U,若对R(U)的任何一个关系,对X的一个确定值,存在Y的一组值与之对应,且Y的这组值又与Z=U一X一Y中的属性值不相关,此时称Y多值依赖于X,并记为X→→Y
在多值依赖中若X→→Y且Z=U一X一Y≠O,则称X→→Y为非平凡多值依赖,否则称为平凡多值依赖
多值依赖可有下面的一些性质:
(1) 在R(U)中如有X→→Y,则必有X→→U一X一Y
(2) 在R(U)中如有X→Y,则必有X→→Y
读者要注意,我们在R(U)中讨论多值依赖时并不意味着R(U)中已不需要讨论函数依赖
了,恰恰相反,我们一般不仅要在R(U)找出所有多值依赖关系来,而且还要找出所有的函数依赖关系来因此,一个完整的R(U)应该包含一个函数依赖集F'以及一个多值依赖集F',它可以用R(U, F,F')表示
前面已经讲过,具有多值依赖的关系,它们的数据冗余量特别大,如何设法减少数据冗余呢 从例8-2中的关系C中可以看出,如果将C(C, T, L)分解成两个关系C1,C2后,它们的冗余度会明显下降
C1 (C,T )
C2 (C,L )
C1,C2这两个关系可用表8-8表示
表8-8关系C分解成关系C1和C2
C
T
高等数学
高等数学
高等数学
普通物理
普通物理
普通物理
李华民
王天华
林 静
吴铁钢
谢晓芳
徐秋芳
C
L
高等数学
高等数学
普通物理
普通物理
普通物理
普通物理
高等数学
高等效学教程
物理学
普通物理
普通物理基础
(a) 关系C1 (b) 关系C2
从表8-8可以看到,数据冗余的减少是极其明显的
从多值依赖的观点看,在C1,C2中各对应一个多值依赖C→→T与C→→L,它们都是平凡多值依赖因此,在多值依赖时,减少数据冗余的方法是使关系分解成为仅有平凡多值依赖
这样,我们就可以规定一个比BCNF更高的范式,它叫第四范式,可简记为4NF这个范式的特点是,在关系模式中它必须满足:
(1) 只允许出现平凡多值依赖(不允许出现非平凡多值依赖);
(2) 函数依赖要满足BCNF
由于函数依赖是多值依赖的特例,因此统一可以用多值依赖概念定义第四范式
定义8-13 R(U)中如果X→→Y是非平凡多值依赖,则X:必含有关键字,此时称R满足第四范式,并记作R∈4NF
由这个第四范式定义可以看出,前面所定义的关系C,它虽是BCNF,但不是4NF,因为在C(C, T )中有:
C→→T
C→→L
而它的关键字是(C,T,L)
虽然C∈BCNF,但C不是关键字,所以C(4NF对它作分解后所产生的C1及C2显然因为C1(C,T)有C→→T,故不存在非平凡多值依赖,因此有C1∈4NF,同理有C2∈4NF
824 小 结
我们在规范化讨论中定义了五个范式,对这些范式的认识是逐步深入的总的说来,我们可以总结成下面几点:
(1) 规范化的目的:解决插入,修改异常以及数据冗余度高
(2) 规范化的方法:从模式中各属性间的依赖关系(函数依依赖及多值依赖)入手,尽量做到每个模式表示客观世界中的一个"事物"
(3) 规范化的实现手段:用模式分解的方法
实际上从第一范式到第四范式的过程是一个不断消除一些依赖关系中的弊病的过程图8-7给出了这个过程
读者应注意的是:规范化是一种理论,它研究如何通过规范以解决异常与冗余现象,在实际数据库设计中构作关系模式时需要考虑到这个因素但是,客观世界是复杂的,在构作模式时尚需考虑到其他的多种因素,如模式分解过多,势必在数据查询时要用到较多的联结运算,这样就会影响查询速度因此,在实际构作模式中,需要综合多种正反因素,统一权衡利弊得失,最后构做出一个较为适合实际的模式来
图8-7 规范化的过程
83 规范化所引起的一些问题
由规范化而引起了对一些问题的进一步研究,它们是:
1函数依赖理论的研究
属性间的函数依赖与多值依赖是规范化的基本依据,因此有必要对它们作进一步研究,这些研究包括:
(1)可由关系模式上的一些函数依赖通过一些公理系统(叫Armstrong公理)而获得关系模式上的所有函数依赖由此可知:一个关系模式上的所有函数依赖可由两部分组成:基础部分是直接由语义获取,其他部分可由公理系统推演而得
(2)引入了函数依赖集的等价概念与最小函数依赖集,即如果两函数依赖集能推演出相同的集来,则称它们是等价的,而等价的函数依赖集之最小者称为最小函数依赖集
这些研究为规范化提供了更多的基础信息
2模式分解的研究
规范化的实施主要依靠不断地进行模式分解在模式分解中需要研究下列问题:
(1)分解后关系中的信息是否会丢失 这叫无损联接性(lossless join)
(2)分解后关系中的函数依赖是否会丢失 这叫依赖保持性
(3)在满足无损联接性与依赖保持性下可分解到第几范式
经过研究我们可以得到下面几个事实:
若要求满足无损联接性,则模式分解一定可以达到BCNF
若要求满足依赖保持性,则模式分解一定可以达到3NF,但不一定能达到BCNF
若既要求满足无损联接性又要求满足依赖保持性,则模式分解一定可以达到
3NF,但 不一定能达到BCNF
上述三点均可通过三个算法获得实现
由于规范化所引起的这两个问题的研究的详细探讨均比较复杂,故本书中不拟详述,仅将结果陈述于上,供读者参考
习 题 8
1请给出下列术语的含义:
函数依赖;(2)关键字;(3)主属性集;(4)多值依赖;(5)2NF;(6)3NF;
(7)BCNF;(8)4NF
2在关系SC(S#, C#, G)中S#((C#正确吗 请说明其理由
3是不是规范化最佳的模式结构是最好的结构 为什么
4试证明若R(BCNF,则必有R(3NF
5试问下列关系模式最高属第几范式,并解释其原因
R (A, B, C, D),F: {B(D, AB(C};
R (A, B, C),F: {A(B, B(A, A(C};
R (A, B, C, D),F: {A(C, D(B};
R (A, B, C, D),F: {A(C, CD(B}
s
t
f
p
f
p
p
f
f
f
f
p
p
f
G
S#
C#
Sd
Ss
Sn
S#
C#
G
S#
Sd
Ss
Sn
非主属性集N
○
○
主属性集p
K1
K2
K3
K4
○
○
○
S#
c#
G
S#
Sn
Ss
Ss
Sd
S
C
T
C
T
T
S
非决定因素
决定
因素
R:
消除决定因素非关键字的非平凡多值依赖
1NF
消除非主属性对关键字的部分依赖
2NF
消除非主属性对关键字的传递依赖
3NF
消除主属性对关键字的部分与传递依赖
BCNF
消除非平凡且非函数依赖的多值依赖
4NF
以上就是关于大数据时代数据管理方式研究全部的内容,包括:大数据时代数据管理方式研究、学会Python之后更适合做哪方面的工作、网络营销策略有哪几种等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)