关系数据库

阅读 / 问答 / 标签

关系数据库的基本原理?

关系数据库是支持关系模型的数据库系统。关系模型由关系数据结构、关系操作集合和完整性约束三部分组成。关系操作分为关系代数、关系演算、具有关系代数和关系演算双重特点的语言(SQL语言)。完整性约束提供了丰富的完整性:实体完整性、参照完整性和用户定义的完整性。

自考《数据库原理》串讲—关系数据库SQL语言

第三章 关系数据库SQL语言   本章为重点章,应熟悉和掌握SQL的数据定义、数据查询、数据更新的句法及其应用,特别是数据查询的应用。结合上机操作进行理解和掌握。   一、SQL概述。   1、SQL发展历程( 识记 )   SQL从1970年美国IBM研究中心的E.F.Codd发表论文到1974年Boyce和Chamberlin把SQUARE语言改为SEQUEL语言,到现在还在不断完善和发展之中,SQL(结构式查询语言)虽然名为查询,但实际上具有定义、查询、更新和控制等多种功能。   2、SQL数据库的体系结构( 领会 )   SQL数据库的体系结构也是三级结构 ,但术语与传统关系模型术语不同,在SQL中,关系模式称为“ 基本表 ”,存储模式称为“ 存储文件 ”,子模式称为“ 视图 ”,元组称“ 行 ”,属性称“ 列 ”。   SQL数据库体系的结构要点如下:   (1)一个SQL数据库是表的汇集。   (2)一个SQL表由行集构成,行是列的序列,每列对应一个数据项。   (3)表或者是基本表,或者是视图。基本表是实际存储在数据库中的表,视图由是由若干基本表或其他视图构成的表的定义。   (4)一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。存储文件与物理文件对应。   (5)用户可以用SQL语句对表进行操作,包括视图和基本表。   (6)SQL的用户可以是应用程序,也可以是终端用户。   3、SQL的组成( 识记 )   SQL由四部分组成:   (1)数据定义:SQL DDL.定义SQL模式,基本表、视图和索引。   (2)数据操纵:SQL DML.包括数据查询和数据更新(增、删、改)。   (3)数据控制:包括对基本表和视图的授权、完整性规则的描述,事务控制等。   (4)嵌入式SQL的使用规定。   二、SQL的数据定义( 简单应用 )   1、SQL模式的创建和撤消:   SQL 模式的创建 可简单理解为建立一个数据库,定义一个存储空间,其句法是:   CREAT SCHEMA 模式名> AUTHORIZATION 用户名>   撤消SQL模式的句法为:   DROP SCHEMA 模式名> [ CASCADE | RESTRICT ]   方括号中的选项参数CASCADE表示连锁方式,执行时将模式下所有基本表、视图、索引等元素全部撤消。RESTRICT表示约束式,执行时必须在SQL模式中没有任何下属元素时方可撤消模式。   2、SQL提供的基本数据类型   数值型:包括 integer、smallint、real、double precision 、float(n),numeric(p,d)   字符串型:char(n)、varchar(n),前者是定长,后者为变长串   位串型:bit(n),bit varying(n),同上。   时间型:date、time.   3、基本表的创建、修改和撤消   基本表的创建:(可理解为建立表结构)   CREAT TABLE SQL 模式名。基本表名   (列名,类型,   ……   完整性约束……)   完整性约束包括主键子句(PRIMARY KEY)、检查子句(CHECK)和外键子句(Foreign KEY)。   基本表结构的修改   ALTER TABLE 基本表名 ADD/ DROP (增加/删除) 列名 类型名(增加时写出)   删除时有子句 [CASCADE|RESTRICT],前者为连锁删除,后者为约束删除,即没有对本列的任何引用时才能删除。   基本表的撤消   DROP TABLE 基本表名 [CASCADE|RESTRICT]   4、视图的创建和撤消   创建: CREAT VIEW 视图名(列名表) AS SELECT 查询语句   撤消: DROP VIEW 视图名   5、索引的创建和撤消   创建: CREAT [UNIQUE] INDEX 索引名 ON 基本表名(列名表 [ASC|DESC])   撤消: DROP INDEX 索引名   总结:凡创建都用 CREAT ,删除都用 DROP ,改变用 alter ,再跟类型和名字,附加子句很容易了。   三、SQL的数据查询( 综合应用 )   这一段是本章的重点内容,应该熟练掌握。首先了解基本句法:   1、 SELECT -FROM- WHERE 句型   SELECT 列名表(逗号隔开) FROM 基本表或视图序列 WHERE 条件表达式   在这里,重点要掌握条件表达式中各种运算符的应用,如=,>,<,>等算术比较运算符、逻辑运算符 AND、OR、NOT 、集合成员资格运算符: IN,NOT IN ,以及嵌套的 SELECT 语句的用法要特别注意理解。 针对课本的例题和课后习题进行掌握。   在查询时, SELECT 语句可以有多种写法,如 联接查询、嵌套查询和使用存在量词的嵌套查询 等。都掌握,但是起码应能写出一种正确的查询语句。   2. SELECT 语句完整的句法:   SELECT 列名表(逗号隔开)   FROM 基本表或视图序列   [ WHERE 条件表达式] (此为和条件子句)   [GROUP BY 列名序列] (分组子句)   [HAVING 组条件表达式] (组条件子句)   [ORDER BY列名[ASC|DESC]……] (排序子句)   这段关于完整句法的内容能够理解也就问题不大了。   3、 SELECT 语句中的限定   这一段内容主要是对 SELECT 语句进一步使用进行的深入学习,领会下列各种限定的使用目的和方法。   要求输出表格中不出现重复元组,则在 SELECT 后加一DISTINCT   SELECT 子句中允许出现加减乘除及列名,常数的算术表达式   WHERE 子句中可以用BETWEEN……AND……来限定一个值的范围   同一个基本表在 SELECT 语句中多次引用时可用AS来增加别名   WHERE 子句中字符串匹配用LIKE和两个通配符,%和下划线_.   查询结果的结构完全一致时可将两个查询进行并(UNION)交(INTERSECT)差(EXCPT)操作   查询空值操作不是用="null",而是用 IS NULL来测试。   集合成员资格比较用 IN/NOT IN ,集合成员算术比较用元组θSOME/ALL   可以用子查询结果取名(表名(列名序列))来作为导出表使用   基本表的自然联接操作是用 NATURAL INNER JOIN来实现的。   四、SQL的数据更新( 简单应用 )   简单应用就是掌握基本的句型并能套用在一些简单的查询要求上。   1、数据插入:   INSERT INTO 基本表名(列名表)   valueS (元组值)   或   INSERT INTO 基本表名(列名表)   SELECT 查询语句   其中元组值可以连续插入。用查询语句可以按要求插入所需数据。   2、数据删除:   DELETE FROM 基本表名 [ WHERE 条件表达式]   3、数据修改:   UPDATE 基本表名   SET 列名=值表达式,[列名=值表达式……]   [ WHERE 条件表达式]   4、对视图的更新:   我们知道,对视图的查询是和基本表相同的,但是更新操作则受到下列三条规则的限制:(领会一下)   如果视图是从多个基本表使用联接操作导出的,则不允许更新。   如果导出的视图使用了分组和聚合操作,也不允许更新。   如果视图是从单个基本表使用选择和投影操作导出的,并且包括了基本表的主键或某个候选键,则可以执行操作。(这就相当于在基本表上操作)。   这一节的关于增删改的操作要和前面关于数据库模式、表的增删改操作进行对比学习,以加深理解。不要忘记上机实践 .

数据库原理第四章关系数据库的模式设计

第四章 关系数据库的模式设计 45. 什么是关系数据库: 关系数据库是以关系模型为基础的数据库,它利用关系来描述现实世界。一个关系既可以用来描述一个实体及其属性,也可以用来描述实体间的联系。关系实质上是一张二维表。 46. 一个关系模型有哪两个方面内容: 一个关系模型包括外延和内涵两个方面的内容。 外延就是通常所说的关系,或实例,或当前值。它与时间有关,随着时间的推移在不断变化。(由于元组的插入、删除、修改引起的) 内涵是与时间独立的,包括关系、属性、及域的一些定义和说明,还有各种数据完整性约束。 47. 数据完整性约束分为哪两类: 数据完整性约束分为静态约束和动态约束。 静态约束:包括各种数据之间的联系(数据依赖),主键的设计和关系值的各种限制等等。这一类约束是如何定义关系的有效数据问题。 动态约束:主要定义如插入、删除、和修改等各种操作的影响。 48. 关系数据库设计理论主要包括哪些内容: 关系数据库设计理论主要包括三个方面的内容:数据依赖、范式、模式设计方法。其中数据依赖起着核心的作用。 49. 数据库使用过程中存在的问题是什么: 数据冗余、更新异常、插入异常、删除异常。 50. 函数依赖(FD)的定义: 设有关系模式R(A1,A2,……,An)(即R(U)),X,Y是U的子集,r是R的任一具体关系,如果对r的任意两个元组t1,t2,由t1[X]=t2[X]导致t1[Y]=t2[Y],则称X函数决定Y,或Y函数依赖于X,记为X→Y,X→Y为模式R的一个函数依赖。 或者说,对于X的每一个具体值,都有Y惟一的具体值与之对应,即Y值由X值决定,因而 这种数据依赖称为函数依赖。 51. 函数依赖的逻辑蕴涵、FD的闭包F+: 设F是关系模式R的一个函数依赖集,X,Y是R的属性子集,如果从F中的函数依赖能够推出X—>Y,则称F逻辑蕴涵X—>Y,记为F X→Y。 被F逻辑蕴涵的函数依赖的全体构成的集合,称为F的闭包,记为F+。F+={X→Y|F X→Y} 52. 候选键、主属性、非主属性: 设有关系模式R(A1,A2,……,An),F是R的一个函数依赖集,X是{A1,A2,……,An}的一个子集。如果 ① X→A1A2……An∈F+,且 ② 不存在X真子集Y,使得Y→A1A2……An成立,则称X是R的候选键。 包含在任何一个候选键中的属性称为主属性,不包含在任何一个候选键中的属性称为非主属性。 53. 函数依赖的推理规则: 设有关系模式R(A1,A2,……,An)和属性集U= A1,A2,……,An,X,Y,Z,W是U的一个子集,F是R的一个函数依赖集,推理规则如下: (1) 自反律:如果Y X U,则X→Y在R上成立。 (2) 增广律:如果X→Y为F所蕴涵,Z U,则XZ→YZ在R上成立。 (3) 传递律:如果X→Y和Y→Z在R上成立,则X→Z在R上成立。 FD的其他三个推理规则: (4) 合并律:如果X→Y成立,那么X→YZ成立。 (5) 伪传递律:如果X→Y和WY→Z成立,那么WX→Z成立。 (6) 分解律:如果X→Y和Z Y成立,那么X→Z成立。 54. 什么是平凡的FD?平凡的FD可根据哪一条推理规则推出? 如果X→Y,并且Y X,则称X→Y是平凡的FD。根据推理规则的自反律可推出。 55. 关系模式的分解有几个不同的衡量标准: 分解具有无损联接; 分解要保持函数依赖; 分解既要保持依赖,又要具有无损联接。 56. 什么是无损连接: 设有关系模式R,分解成关系模式ρ={R1,R2,……Rk},F是R的一个函数依赖集。如果对R中满足F的每一个关系r都有:r=πR1(r)|×|πR2(r)|×|……πRK(r),则称这个分解ρ是无损联结分解。 57. 试叙保持函数依赖的定义: 设F是属性集U上的一个函数依赖集,Z是U上的一个子集,F在Z上的一个投影定义为:πZ(F)={X→Y|X→Y∈F+且XY Z} 设关系模式R的一个分解为ρ={R1,R2,……Rk},F是R的一个函数依赖集,如果 则称为分解ρ保持函数依赖。 58. 第一范式(1NF): 如果关系模式R的所有属性的值域中每一个值都是不可再分解的值,则称R是属于第一范式模式。 59. 第二范式(2NF): 如果关系模式R为第一范式,并且R中每一个非主属性完全函数依赖于R的候选键,则称R是第二范式模式。 60. 第三范式(3NF): 如果关系模式R是第一范式,且每个非主属性都不传递依赖于R的候选键,则称R是第三范式的模式。 61. BCNF: 如果关系模式R是第一范式,且每个属性都不传递依赖于R的候选键,那么称R是BCNF的模式。从BCNF的定义可明显地得出如下结论: (1) 所有非主属性对键是完全函数依赖。 (2) 所有主属性对不包含它的键是完全函数依赖。 (3) 没有属性完全函数依赖于非键的任何属性组。 如果模式R是BCNF,则它必定是第三范式,反之,则不一定。 62. 模式设计方法的原则: 关系模式R相对于函数依赖集F分解成数据库模式ρ={R1,R2,……Rk},一般应具有下面三个特性: (1) ρ中每个关系模式Ri是3NF或BCNF (2) 保持无损联结 (3) 保持函数依赖集 (4) ρ中模式个数最少和属性总数最少。 63. 一个好的模式设计方法应符合哪三条原则: 表达性,分离性,最小冗余性。 表达性涉及到两个数据库模式的等价性问题,即数据等价和依赖等价,分别用无损联接和保持函数依赖性来衡量。 分离性是指属性间的“独立联系”应该用不同的关系模式表达。 最小冗余性要求在分解后的数据库能表达原来数据库的所有信息这个前提下实现。 关系模式设计方法基本上可以分为分解与合成两大类。 64. 多值依赖MVD: 设R(U)是属性集U上的一个关系模式,X,Y是U的子集,若对R(U)的任一关系r,对于X的一个给定的值存在着Y的一组值与其对应,同时Y的这组值又不以任何方式与U-X-Y中的属性相关,那么称Y多值依赖于X,记为X→→Y。 65. 平凡多值依赖: 对于属性集U上的一个多值依赖X→→Y,如果Y X或者XY=U,那么称X→→Y是一个平凡多值依赖。 66. 第四范式(4NF): 设关系模式R,D是一个多值依赖集,如果D中存在一个非平凡多值依赖X→→Y,并且X必是R的超键,那么称R是4NF模式。