版权归原作者所有,如有侵权,请联系我们

[科普中国]-关系型数据库结构

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

定义

关系型数据是指以关系数学模型来表示的数据,关系数学模型中以二维表的形式来描述数据。关系型数据库是存储在计算机上的、可共享的、有组织的关系型数据的集合。例如视图,存储过程,索引等的集合。在关系型数据库中,信息存放在二维表中,一个关系型数据库包括多个二维表。关系型数据库所包含的表之间是有关联的,关联主要有主码和外码所体现的参照关系实现。关系模型由关系数据结构,关系操作集合、关系完整性约束三部分组成。

数据结构在关系模型中,现实世界的实体以及实体间的各种联系均用关系来表示。在用户看来,关系模型中数据的逻辑结构是一种二维数据结构,在数据库中就表现为一张二维表。

数据结构就是计算机存储、组织数据的方式,关系就是实体间的某种联系。例如两个实体分别为学生与课程,在选课系统的环境下,他们之间的联系就是“选课”,我们为了想存储下每个学生都选了什么课,可以以学生实体与课程实体的联系建立起一个二维的逻辑结构,在这种逻辑结构中我们可以很轻松的检索两实体间的关系集。例如某一学生都选了什么课,或者是某一课程都有哪些学生选了,多维的关系数据结构可以以此类推,但很少见到实际应用,大多都是二维关系的组合应用。

关系数据结构的重点在于“实体”与“关系”的选择,记住“关系”是指的实体与实体之间的联系。

操作集合关系数据库中的核心内容是关系即二维表。而对这样一张表的使用主要包括按照某些条件获取相应行、列的内容,或者通过表之间的联系获取两张表或多张表相应的行、列内容。概括起来关系操作包括选择、投影、连接操作。关系操作其操作对象是关系,操作结果亦为关系。

选择(Selection)操作是指在关系中选择满足某些条件的元组(行)。

投影(Projection)操作是在关系中选择若干属性列组成新的关系。投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组,这是因为取消了某些属性列后,可能出现重复的行,应该取消这些完全相同的行。

连接(Join)操作是将不同的两个关系连接成为一个关系。对两个关系的连接其结果是一个包含原关系所有列的新关系。新关系中属性的名字是原有关系属性名加上原有关系名作为前缀。这种命名方法保证了新关系中属性名的惟一性,尽管原有不同关系中的属性可能是同名的。新关系中的元组是通过连接原有关系的元组而得到的。

其他操作是可以用基本操作来定义和导出的。

约束完整性约束包括:实体完整性,参照完整性,用户定义完整性。

实体完整性在关系数据库中一个关系对应现实世界的一个实体集,关系中的每一个元组对应一个实体。在关系中用主关键字来唯一标识一个实体,实体具有独立性,关系中的这种约束条件称为实体完整性。

参照完整性用于约定两个关系之间的联系,理论上规定,若m是关系s中的一属性组,且m是另一关系z的主关键字,则称m为关系s对应关系z的外关键字。若m是关系s的外关键字,则s中每一个元组在m上的值必须是空值或是对应关系z中某个元组的主关键字值。例如,学生关系s和学校专业关系z之间满足参照完整性约束。学校专业关系z中的专业号属性是主关键字,同时它也存在学生关系s中,那么只有当专业号存在,这个专业的学生才有可能存在,因此在添加学生关系中的元组时,定义的专业号必须在学校专业关系z中已存在对应的元组。

用户定义完整性约束是用户定义某个具体数据库所涉及的数据必须满足的约束条件,是由具体应用环境来决定的。例如,约定学生成绩的数据必须小于或等于100。

优势关系型数据库相比其他模型的数据库而言。有着以下优点:

1、容易理解:关系模型中的二维表结构非常贴近逻辑世界,相对于网状、层次等其他模型来说更容易理解。

2、使用方便:通用的SQL语言使得操作关系型数据库非常方便,只需使用SOL语言在逻辑层面操作数据库,而完全不必理解其底层实现。

3、易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大降低了数据冗余和数据不一致的概率。

问题传统的关系型数据库具有不错的性能,高稳定型,久经历史考验,而且使用简单,功能强大,同时也积累了大量的成功案例。在90年代的互联网领域。一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。在那个时候,更多的都是静态网页,动态交互类型的网站不多。可是最近几年,互联网Web2.0网站开始快速发展。火爆的论坛、博客、微博逐渐引领web领域的潮流。传统的关系型数据库在应付这些超大规模和高并发的纯动态网站显得力不从心,,暴露了很多难以克服的问题。

1、数据库高并发读写:高并发的纯动态网站一般都是根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系数据库应付上万次SOL查询还勉强顶得住。但是应付上万次SQL写数据请求,硬盘就已经无法承受了。

2、海量数据的高效率存储和访问:上述提到的Web2.0网站,每天用户会产生海量的动态信息,对于关系数据库来说。在一张数以亿计条记录的表里面进行SQL查询,效率是极其低下。难以忍受的。

3、数据库的高可扩展性和高可用性:基于web的架构当中,数据库无法通过添加更多的硬件和服务节点来扩展性能和负载能力,对于很多需要提供24小时不问断服务的网站来说,数据库系统升级和扩展却只能通过停机来实现,这无疑是一个艰难的决定。

所以现在有人提出了非关系型数据库,可以部分解决上述问题1。

代表Oracle作为全球最大的,领先的数据库巨头,Oracle涉及了数据库行业的所有领域,产品线强大,在数据仓库、数据分析、在线事务处理方面都具有很强的表现。综合对比Oracle具有以下优点:

兼容性

Oracle数据库采用ANSI SQL设计,能和目前市场上所有的SQL范式兼容,与IBMSQL/DS、DB2INGRES、IDMS/R等标准兼容,方便数据交换和数据对接。

移植性

Oracle的产品可运行于大多数硬件与操作系统平台上。可以安装在多种不同的大、中、小型机上;可在VMS、DOS、UNIX、Windows,Linux等多种操作系统下工作,支持多种网络协议,这为以后的系统升级和平台迁移提供了方便。

高可用性

在一个大型数据库或数据仓库环境,数据库是基础中的基础,数据库服务的连续性和可用性非常关键,为保证中心数据库的持续可用,Oracle提供了一系列高可用性产品,比如RAC,DataGuard,Streams Replication等。在数据备份方面,提供了全球最为强大的可免费使用的RMAN备份工具,RMAN备份是给予物理级别的,不及备份了数据还备份了数据相关的文件和日志,这样关键时期可以缩短数据恢复的时间。RMAN包含在Oracle数据库的所有版本中。大多数商业数据库,企业级的备份需要支付昂贵的License.

开放性

Oracle数据库具有高度的开放性,为了满足学者了解和学习Oracle数据库,Oracle公司提供了开发许可License,这个License不需要支付费用,Oracle官网提供了可下载学习的数据库产品 ,并且在产品中包含了这个License。也就是我们可以合法免费的使用部分Oracle数据库产品进行学习。Oracle支持多种驱动程序和开发工具,开发者可以很轻松的开发基于Oracle数据库的产品。

VLDB的支持

Oracle天生为大型和超级数据库提供了支持和扩展,Oracle Table Partition( 数据表分区)提供了在数据表很大的情况下,可以对表进行物理分区,解决大表管理困难和数据查询或更新导致的性能问题,同时数据表分区也有利于解决数据迁移的问题。

ASM的支持

Oracle提供了自己的数据库存储管理解决方案,引入了ASM(Automatic Storage Management),ASM是Oracle的一个附属系统。解决了三个问题:

1、从整体上将数据库的逻辑定义和物理存储分开管理;

2、在线存储添加和卸载,Oracle数据库从操作系统接管了部分物理存储管理权限,在不影响数据库业务的情况下可以很轻松的在线完成ASM磁盘的添加删除任务;

3、数据均匀分布,在我们每次对ASM完成磁盘调整工作之后,Oracle会自动重新分布数据调整数据,这样可以提高数据库的查询性能,避免了磁盘热点问题。

DB2DB2是IBM旗下的关系型数据库,作为和Oracle同步起家的产品,业绩方面,DB2在企业级的应用最为广泛,在全球的500家最大的企业中,几乎85%以上都用DB2数据库服务器,而国内到1997左右年约占5%。随着Oracle的改革,从2002开始,Oracle改写了这一辉煌。DB2的成功莫过于IBM自身的硬件和强大的软件支持,大多数企业选择了IBM的小型机后,经过IBM的关系营销,也会选择IBM的软件,包括DB2。

DB2的整体特性有:

1、支持多种操作系统,支持目前流行的Linux(IBM自身的Linux OS),Windows等,Unix只支持IBM自己的AIX;

2、对硬件有一定的要求,最初只支持IBM的AS/400系统,现在支持INTEL部分硬件;

3、兼容Oracle,DB2兼容Oracle大多数的数据类型和SQL语言,比如PL/SQL;

4、 开放性不高,没有Oracle,SQL Server,MySQL高度开放;

5、可靠性好,尤其和IBM的小型机可以集合起来。

SQL ServerSQL Server是由微软开发的数据库管理系统,是Web上最流行的用于存储数据的数据库,它已广泛用于电子商务、银行、保险、电力等与数据库有关的行业。SQL Server只能在Windows上运行,操作系统的系统稳定性对数据库十分重要。并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷,伸缩性有限。

SQL Server 提供了众多的Web和电子商务功能,如对XML和Internet标准的丰富支持,通过Web对数据进行轻松安全的访问,具有强大的、灵活的、基于Web的和安全的应用程序管理等。而且,由于其易操作性及其友好的操作界面,深受广大用户的喜爱。作为开发和测试,SQL Server可以是个不错的选择。

MySQLMySQL是最受欢迎的开源SQL数据库管理系统,它由 MySQL AB开发、发布和支持。MySQL AB是一家基于MySQL开发人员的商业公司。MySQL是MySQL AB的注册商标,2010 年MySQL被Oracle收购。

MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass- deployed)的软件中去。 与其他数据库管理系统相比,MySQL具有以下优势:

1、MySQL也是一个关系数据库管理系统;

2、MySQL是开源的;

3、MySQL服务器是一个快速的、可靠的和易于使用的数据库服务器;

4、MySQL服务器工作在客户/服务器模式或嵌入式的系统中;

5、有大量的MySQL软件可以使用;

6、支持多种数据库引擎,这是MySQL一大特色,在读密集和事务密集形应用中,可以选择不同的数据库引擎。