关系型数据库
目录
一个关系数据库模式(S)由一组关系模式组成,其中包含数据库的基表结构(E)和完整性约束(CT)两个部分。基表结构定义关系(表)的结构、属性(列)及其数据类型与长度等;完整性约束定义施加在数据上的语义约束。
关系型数据库是支持关系模型的数据库系统,它是目前各类数据库中最重要,也是使用最广泛的数据库系统。关系型数据库从诞生到现在经过几十年的发展,已经变的比较成熟,目前市场上主流的数据库都为关系型数据库,比较知名的如Sybase、Oracle、SQL Server、Informix、DB2 等。
1970年,IBM的研究员,有“关系数据库之父”之称的埃德加·弗兰克·科德(Edgar Frank Codd或E. F. Codd)博士在刊物《Communication of the ACM》上发表了题为“A Relational Model of Data for Large Shared Data banks(大型共享数据库的关系模型)”的论文,文中首次提出了数据库的关系模型的概念,奠定了关系模型的理论基础。后来Codd又陆续发表多篇文章,论述了范式理论和衡量关系系统的12条标准,用数学理论奠定了关系数据库的基础。IBM的Ray Boyce和Don Chamberlin将Codd关系数据库的12条准则的数学定义以简单的关键字语法表现出来,里程碑式地提出了SQL语言。由于关系模型简单明了、具有坚实的数学理论基础,所以一经推出就受到了学术界和产业界的高度重视和广泛响应,并很快成为数据库市场的主流。20世纪80年代以来,计算机厂商推出的数据库管理系统几乎都支持关系模型,数据库领域当前的研究工作大都以关系模型为基础。
现实世界的实体以及实体间的各种联系均用关系来表示
从用户角度,关系模型中数据的逻辑结构是一张二维表。
但是关系模型的这种简单的数据结构能够表达丰富的语义,描述出现实世界的实体以及实体间的各种关系。
简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。下面列出了关系模型中的常用概念。
关系:可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的表名。
元组:可以理解为二维表中的一行,在数据库中经常被称为记录。
属性:可以理解为二维表中的一列,在数据库中经常被称为字段。
域:属性的取值范围,也就是数据库中某一列的取值限制。
关键字:一组可以唯一标识元组的属性。数据库中常称为主键,由一个或多个列组成。
关系模式:指对关系的描述,其格式为:关系名(属性1,属性2,…,属性N)。在数据库中通常称为表结构。
1)实体完整性
通常由关系系统自动支持
2)参照完整性
早期系统不支持,目前大型系统能自动支持
3)用户定义的完整性
反映应用领域需要遵循的约束条件,体现了具体领域中的语义约束
用户定义后由系统支持
关系型数据库相比其他模型的数据库而言,有着以下优点:
容易理解:关系模型中的二维表结构非常贴近逻辑世界,相对于网状、层次等其他模型来说更容易理解。
使用方便:通用的SQL 语言使得操作关系型数据库非常方便,只需使用 SQL 语言在逻辑层面操作数据库,而完全不必理解其底层实现。
易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大降低了数据冗余和数据不一致的概率。
传统的关系型数据库具有不错的性能,高稳定型,久经历史考验,而且使用简单,功能强大,同时也积累了大量的成功案例。在90 年代的互联网领域,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。在那个时候,更多的都是静态网页,动态交互类型的网站不多。可是最近几年,互联网Web2.0网站开始快速发展。火爆的论坛、博客、微博逐渐引领web领域的潮流。传统的关系型数据库在应付这些超大规模和高并发的纯动态网站显得力不从心,暴露了很多难以克服的问题。
数据库高并发读写:
高并发的纯动态网站一般都是根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系数据库应付上万次SQL 查询还勉强顶得住,但是应付上万次SQL 写数据请求,硬盘 IO 就已经无法承受了。
海量数据的高效率存储和访问:
上述提到的Web2.0 网站,每天用户会产生海量的动态信息,对于关系数据库来说,在一张数以亿计条记录的表里面进行SQL 查询,效率是极其低下,难以忍受的。
数据库的高可扩展性和高可用性:
基于web的架构当中,数据库无法通过添加更多的硬件和服务节点来扩展性能和负载能力,对于很多需要提供24小时不间断服务的网站来说,数据库系统升级和扩展却只能通过停机来实现,这无疑是一个艰难的决定。
美国Sybase公司研制的一种关系型数据库系统,是一种典型的UNIX或Windows NT平台上客户机/服务器环境下的大型数据库系统。 Sybase提供了一套应用程序编程接口和库,可以与非Sybase数据源及服务器集成,允许在多个数据库之间复制数据,适于创建多层应用。系统具有完备的触发器、存储过程、规则以及完整性定义,支持优化查询,具有较好的数据安全性。Sybase通常与Sybase SQL Anywhere用于客户机/服务器环境,前者作为服务器数据库,后者为客户机数据库,采用该公司研制的PowerBuilder为开发工具,在我国大中型系统中具有广泛的应用。
Oracle数据库系统是美国Oracle公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如Silver Stream就是基于数据库的一种中间件。Oracle数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了Oracle知识,便能在各种类型的机器上使用它。
SQL Server是一个关系数据库管理系统。它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本。在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。Sybase 则较专注于SQL Server在UNIX 操作系统上的应用。
MySQL(原本是一个开放源代码的关系数据库管理系统,原开发者为瑞典的MySQL AB公司,该公司于2008年被升阳微系统(Sun Microsystems)收购。2009年,甲骨文公司(Oracle)收购升阳微系统公司,MySQL成为Oracle旗下产品。
MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用,比如维基百科、Google和Facebook等网站。非常流行的开源软件组合LAMP中的“M”指的就是MySQL。
但被甲骨文公司收购后,Oracle大幅调涨MySQL商业版的售价,且甲骨文公司不再支持另一个自由软件项目OpenSolaris的发展,因此导致自由软件社区们对于Oracle是否还会持续支持MySQL社区版(MySQL之中唯一的免费版本)有所隐忧,因此原先一些使用MySQL的开源软件逐渐转向其它的数据库。例如维基百科已于2013年正式宣布将从MySQL迁移到MariaDB数据库。
附件列表
故事内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。