标题：关系数据库
简介
定义关系数据库（relational database）是一个被组织成一组正式描述的表格的数据项的收集，这些表格中的数据能以许多不同的方式被存取或重新召集而不需要重新组织数据库表格。关系数据库是在 1970 年被 IBM 公司的 E. F. Codd发明的。 
标准用户和应用程序到一个关系数据库的接口是结构化查询语言（SQL）。SQL 声明被用来交互式查询来自一个关系数据库的信息和为报告聚集数据。 
除了相对地容易创建和存取之外,关系数据库具有容易扩充的重要优势。在最初的数据库创造之后，一个新的数据种类能被添加而不需要修改所有的现有应用软件。 
一个关系数据库是包含进入预先定义的种类之内的一组表格。每个表格（有时被称为一个关系）包含用列表示的一个或更多的数据种类。 每行包含一个唯一的数据实体，这些数据是被列定义的种类。 举例来说，典型的商业订单条目数据库会包括一个用列表示的描述一个客户信息的表格：名字、住址、电话号码，等等。 另外的一个表格会描述一个订单：产品、客户、日期、销售价格，等等。数据库的一个使用者可以获得适合了该使用者的需要的数据库的观点。举例来说，一位分公司办公室经理可能喜欢在一个特定的日期之后已经买产品的所有客户的一项观点或报告。同一家公司的财务服务经理可能从相同的表格获得关于需要被支付的帐户的报告。 
当创造一个关系数据库的时候，你能定义数据列的可能值的范围和可能应用于那个数据值的进一步约束。举例来说，一个可能客户的范围可以允许达到十个可能的客户名字但是在一张表格中被约束只允许这些客户名字中的三个被列举。 
关系数据库（relational database）的定义造成元数据的一张表格或造成表格、列、范围和约束的正式描述。[1]基本概念关系模型建立在代数集合的基础上。
1.关系
1)域（Domain）
域是一组具有相同数据类型的值的集合。
例:整数,实数,介于某个取值范围的整数,长度指定长度的字符串集合,{‘男’，‘女’},介于某个取值范围的日期等
2)笛卡尔积（Cartesian Product）
给定一组域D1，D2，…，Dn，域名不能相同，后面提到的更名可以解决。D1，D2，…，Dn的笛卡尔积为：
D1×D2×…×Dn={（d1，d2，…，dn）|di?Di，i=1，2，…，n}
所有域的所有取值的一个组合，不能重复。
◇元组（Tuple）
笛卡尔积中每一个元素（d1，d2，…，dn）叫作一个n元组（n-tuple）或简称元组。
◇分量（Component）
笛卡尔积元素（d1，d2，…，dn）中的每一个值di叫作一个分量。
◇基数（Cardinal number）
若Di（i=1，2，…，n）为有限集，其基数为Mi（i=1，2，…，n）
在上例中，基数：2×2×3=12，即D1×D2×D3共有2×2×3=12个元组
◇笛卡尔积的表示方法
笛卡尔积可表示为一个二维表。表中的每行对应一个元组，表中的每列对应一个域。
3)关系（Relation）
◇关系 
D1×D2×…×Dn的子集叫作在域D1，D2，…，Dn上的关系，表示为 : R（D1，D2，…，Dn）
(R：关系名;n：关系的目或度（Degree）)
注意：
关系是笛卡尔积的有限子集。无限关系在数据库系统中是无意义的。
由于笛卡尔积不满足交换律，即
(d1，d2，…，dn )≠(d2，d1，…，dn )
但关系满足交换律，即
(d1，d2 ，…，di ，dj ，…，dn）=（d1，d2 ，…，dj，di ，…，dn） （i，j = 1，2，…，n）
解决方法：为关系的每个列附加一个属性名以取消关系元组的有序性
◇元组
关系中的每个元素是关系中的元组，通常用t表示。
◇单元关系与二元关系
当n=1时，称该关系为单元关系（Unary relation）。
当n=2时，称该关系为二元关系（Binary relation）。
◇关系的表示
关系也是一个二维表，表的每行对应一个元组，表的每列对应一个域。
◇属性
关系中不同列可以对应相同的域，为了加以区分，必须对每列起一个名字，称为属性（Attribute）。
n目关系必有n个属性
◇码
候选码（Candidate key）
超码是可以唯一标识关系的属性或属性组，候选码是超码的最小真子集。
在最简单的情况下，候选码只包含一个属性。称为单码（Single Key）。
在最极端的情况下，关系模式的所有属性组是这个关系模式的候选码，称为全码（All-key）。
主码
若一个关系有多个候选码，则选定其中一个为主码（Primary key），
关系中，候选码的属性称为主属性（Prime attribute），不包含在任何候选码中的属性称为非码属性（Non-key attribute）。 
◇三类关系
基本关系（基本表或基表）：实际存在的表，是实际存储数据的逻辑表示
查询表：查询结果对应的表
视图表：由基本表或其他视图表导出的表，是虚表，不对应实际存储的数据
2.关系数据库
1）关系数据库
在一个给定的应用领域中，所有实体及实体之间联系的集合构成一个关系数据库。
2）关系数据库的型与值
关系数据库的型称为关系数据库模式，是对关系数据库的描述，若干域的定义，在这些域上定义的若干关系模式。
关系数据库的值是这些关系模式在某一时刻对应的关系的集合，通常简称为关系数据库。历史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年代以来，计算机厂商推出的数据库管理系统几乎都支持关系模型，数据库领域当前的研究工作大都以关系模型为基础。
结构
单一结构单一的数据结构----关系
现实世界的实体以及实体间的各种联系均用关系来表示
数据的逻辑结构----二维表
从用户角度，关系模型中数据的逻辑结构是一张二维表。
但是关系模型的这种简单的数据结构能够表达丰富的语义，描述出现实世界的实体以及实体间的各种关系。主数据库oracle数据库是oracle公司(中文名叫甲骨文公司)的,还有SQL,access；db2是IBM的(中文名称是国际商务机器公司)。主流的关系数据库还有微软的Sql server，Sybase公司的sybase，(英孚美)软件公司的informix以及免费的MySQL等。
集合
1)操作◇查询:选择、投影、连接、除、并、交、差
◇数据更新:插入（insert）、删除(delete)、修改(update)
查询的表达能力是其中最主要的部分2)特点集合操作方式：即操作的对象和结果都是集合。
(非关系数据模型的数据操作方式：一次一记录文件系统的数据操作方式)3)种类◇关系代数语言 
用对关系的运算来表达查询要求
典型代表：ISBL
◇关系演算语言：用谓词来表达查询要求元组关系演算语言
谓词变元的基本对象是元组变量 
典型代表：APLHA, QUEL
◇域关系演算语言  关系数据库谓词变元的基本对象是域变量
典型代表：QBE
◇具有关系代数和关系演算双重特点的语言
典型代表：SQL
4)关系数据语言的特点
◇关系语言是一种高度非过程化的语言
a.存取路径的选择由DBMS的优化机制来完成
b.用户不必用循环结构就可以完成数据操作
◇能够嵌入高级语言中使用
◇关系代数、元组关系演算和域关系演算三种语言在表达能力上完全等价
约束
1)实体完整性
通常由关系系统自动支持
2)参照完整性
早期系统不支持，但大型系统能自动支持
3)用户定义的完整性
反映应用领域需要遵循的约束条件，体现了具体领域中的语义约束
用户定义后由系统支持