




已阅读5页,还剩328页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章数据库系统概论 1 1数据处理技术发展经历数据 data 是人们描述客观事物及其活动的抽象符号表示 是人们相互之间进行思想文化交流的工具 数据处理 dataprocessing 是人们利用手工或机器对数据进行加工的过程 对数据进行的查找 统计 分类 修改 变换等运算都属于加工 1 1 1人工管理阶段计算机只能用于科学和工程计算 计算机专业人员按用户计算要求编制出二进制代码程序 并把需要处理的少量数据以二进制的形式穿孔在程序代码之后 上机运算时同程序一起输入到内存中 运行程序时读取数据并处理 最后把运算结果输出出来 1 1 2文件管理阶段数据与程序在存储位置上完全分开 数据被单独组织成文件保存到外部存储器上 数据文件既可以为某个程序单独使用 也可以为多个不同的程序在不同的时间所使用 即数据文件可以被任何程序重复利用 1 1 3数据库管理阶段数据与程序在存储位置上完全分开 数据被单独组织成文件保存到外部存储器上 数据文件既可以为某个程序单独使用 也可以为多个不同的程序在不同的时间所使用 即数据文件可以被任何程序重复利用 1 数据结构化2 数据共享3 数据相对独立4 数据粒度小5 数据操作界面独立6 数据由DBMS统一管理DBMS是运行在操作系统之上的数据库管理系统软件 由它实施对外存上的数据库进行统一管理 并负责执行在DBMS之上开发的应用程序对数据库的全部操作 DBMS除了同操作系统配合按照用户的要求存取数据库中的数据外 主要还具有以下四个方面的管理控制功能 1 安全性控制 2 一致性控制 3 并发性控制 4 数据库恢复 1 1 4分布式数据库管理阶段分布式数据库系统通过计算机网络和通信线路可以把分布在不同地域的 不同局域网环境下的 不同类型的数据库系统连接和统一管理起来 分布式数据库系统既支持客户的局部应用 又支持客户的全局应用 1 2概念数据模型 1 2 1ER模型的有关概念1 实体实体 entity 是现实世界中存在的 可以相互区别的事物或活动 实体集 entityset 是指同一类实体的集合 实体型 entitytype 是对同类实体的共有特征的抽象定义 对于同一类实体 根据人们的不同认识和需要 可能抽取出的特征有所不同 因而定义出的实体型就可能不同 如你可以把人的姓名 出生日期 性别 身高 体重等特征定义为人的实体型 实体值 entityvalue 就是符合实体型定义的 对一个实体的具体描述 2 联系联系 relationship 是指实体之间的相互关系 它通常表示一种活动 如一张订单 一个讲座 一场比赛 一次选课等都是联系 联系集 relationshipset 是同一类联系的集合 如一次展销会上的全部订单 一次会议安排中的全部讲座 一次比赛活动中的所有比赛场次 一个班级同学的所有选课等都是相应的联系集 联系型 relationshiptpe 是对同类联系的共有特征的抽象定义 联系元数就是一个联系中所涉及的实体型的个数 若涉及到两个实体型则称为二元联系 若涉及到三个实体型则称为三元联系 等等 特殊地 若涉及到的两个实体型对应同一个实体则为一元联系 实体和联系的异同实体和联系实际上没有什么本质的区别 它们都是由相应的特征标识的 都具有型和值的概念 只不过在联系中含有较多的联系特征 如在选课联系中含有学生号 课程号等联系特征 通过联系特征与其他实体发生联系 3 属性属性 attribute 是描述实体或联系中的一种特征 一个实体或联系通常具有多个特征 需要多个相应属性来描述 码 key 或称键 关键字 关键码等 是实体间相互区别的一种唯一标识 如人是实体 每个人的身份证号就是这种唯一标识 因为每个人的身份证号都不会相同 域 domain 是实体中相应属性的取值范围 4 联系分类联系分类 relationshipclassify 是讨论两个实体型 含联系型在内 之间的联系的类别 按照一个实体型中的实体个数与另一个实体型中的实体个数的对应关系 可分类为1对1联系 1对多联系 多对多联系这三种情况 1 1对1联系若一个实体型中的一个实体至多与另一个实体型中的一个实体发生关系 同样另一个实体型中的一个实体至多与该实体型中的一个实体发生关系 则这两个实体型之间的联系被定义为1对1联系 简记为1 1 2 1对多联系若一个实体型中的一个实体与另一个实体型中的任意多个实体 含0个 发生关系 而另一个实体型中的一个实体至多与该实体型中的一个实体发生关系 则这两个实体型之间的联系被定义为1对多联系 简记为1 n 3 多对多联系若一个实体型中的一个实体与另一个实体型中的任意多个实体 含0个 发生关系 反过来也一样 另一个实体型中的一个实体与该实体型中的多个实体 含0个 实体发生关系 则这两个实体型之间的联系被定义为多对多联系 简记为m n 1 2 2ER模型ER模型 entityrelationshipmodel 是人们描述数据及其联系的概念数据模型 是数据库应用系统设计人员和普通非计算机专业用户进行数据建模和勾通与交流的有力工具 使用起来非常直观易懂 简单易行 1 ER模型中的基本构件ER模型是一种用图形表示数据及其联系的方法 所使用的图形构件 元件 包括矩形 菱形 椭圆形和连接线 矩形表示实体 矩形框内写上实体名 菱形表示联系 菱形框内写上联系名 椭圆形表示属性 椭圆形框内写上属性名 连接线表示实体 联系与属性之间的所属关系或实体与联系之间的相连关系 2 各种联系的ER图表示对于1对1 1对多和多对多三种联系 对应的ER图如图1 2 5所示 其中每个实体或联系未画出相应的属性框和连线 图1 2 5三种联系的ER图 1 3逻辑数据模型 1 3 1层次数据模型层次模型是一个树型结构模型 整棵树中有并且只有一个根结点 其余结点都是它的孩子或子孙 每个结点 除根结点外 只能有一个双亲结点 或称父结点 但可以有一个或多个孩子结点 当然也允许没有任何孩子结点 无孩子结点被称为叶子结点 每个结点对应一个记录型 即对应概念模型中的一个实体型 每对结点的父子联系隐含为1对多的联系 包括1对1联系 1 3 2网状数据模型网状模型是一个图结构模型 它是对层次模型的扩展 允许有多个结点无双亲 同时也允许一个结点有多个双亲 层次模型成为网状模型中的一种最简单的情况 1 3 3关系数据模型关系数据模型有着坚实的理论支持 它是建立在集合论 数理逻辑 关系理论等数学理论基础之上的 并且关系数据模型结构简单 符合人们的逻辑思维方式 很容易被人们所接受和使用 很容易在计算机上实现 很容易从概念数据模型转换过来 1 关系数据模型的定义关系模型是一种简单的二维表格结构 概念模型中的每个实体和实体之间的联系都可以直接转换为对应的二维表形式 每个二维表称做一个关系 一个二维表的表头 即所有列的标题称为关系的型 结构 其表体 内容 称做关系的值 关系中的每一行数据 记录 称做一个元组 每一列数据称做一个属性 列标题称做属性名 同一个关系中不允许出现重复元组 即两个完全相同的元组 和相同属性名的属性 列 2 关系数据模型应用举例关系模型不仅容易表示概念模型中的每个实体 而且容易表示每一种类型的联系 它们都同样对应一个关系 该关系中必定包含相联系的每个实体的各一个码 3 关系型的关系定义在以关系模型为数据库逻辑结构建立的数据库系统中 所有数据都是以关系 表 的形式定义和保存的 特别是所有关系的定义 即结构 它是关系的型 也同样是以关系的形式定义和保存的 为了区别于一般的保存数据的关系 把保存关系定义的关系称为该数据库的元关系 元数据 系统数据 数据字典等 它提供了数据库中所有关系的模式 即关系的型 元关系是在用户建立数据库应用系统时 由DBMS根据该数据库中每个关系的模式自动定义的 4 关系模型中的查询和更新在关系模型的数据库中进行查询和更新运算是非常灵活与方便的 用户即可以在每个关系上进行 也可以在相关的若干个关系上进行 相关的关系是靠关系之间共同使用的相同属性来实现的 该相同属性被称为连接属性或关联属性 如对于学生选课关系模型 既可以分别在学生 课程 选课这三个单独的关系上进行查询和更新 也可以通过它们之间的连接属性学号和课程号把两个或三个关系连接起来进行查询和更新 5 关系数据模型的特点采用关系模型建立数据库系统具有以下特点 也称为优点 1 数据结构单一 2 采用集合运算 3 数据完全独立 4 数学理论支持 1 3 4对象数据模型在面向对象模型中 对象也有型和值的区别 对象型 又称为类 是对具有共同特征的事物的抽象定义 描述 对象值就是对象型中的一个具体事物 实体 如学生对象型由所含的属性特征和行为特征的定义组成 学生对象值表示某个具体的学生 他符合对象型的定义 对象具有封装性 继承性和多态性 这些特性都是传统数据模型中的记录所不具备的 这也是面向对象模型区别于传统数据模型的本质特征 1 4数据库系统简介 1 4 1数据库系统构成数据库系统 databasesystem 简称DBS 是指安装了数据库和数据库管理系统的计算机系统 数据库管理系统在计算机操作系统的支持下对保存于外部设备上的 由物理数据文件所组成的数据库进行有效地管理 维护和使用 在数据库管理系统之上通常需要有数据库应用系统开发工具软件 应用程序员使用它 或者直接使用由DBMS所提供的数据库语言和开发环境编制程序建立数据库应用系统 数据库应用系统通常提供可视化操作界面供终端用户使用 进行日常数据处理工作 1 4 2数据库系统用户使用数据库系统通常包括四种类型的用户 第一种是数据库管理员 DBA 他负责整个数据库系统的建立 管理 运行 维护 监控等系统性工作 以及用户登记 存取数据权限分配等服务性工作 第二种是数据库设计员 他根据数据库在某一方面的应用 通过同相关业务人员一起进行需求分析 建立概念数据模型和逻辑数据模型 搜集和整理数据 利用计算机中的数据库管理系统和数据库定义语言或操作界面建立相应的数据库应用系统 第三种是应用程序员 它根据已有的数据库系统 利用VisualBasic PowerBuilder Delphi等数据库应用系统开发工具编制程序开发出功能丰富 操作简便 满足用户需求的应用系统 供终端用户使用 第四种是终端用户 他是使用数据库的最广泛群体 是建立数据库为之服务的对象 如银行出纳员 窗口售票员 仓库管理员 住宿登记员等都是相应数据库系统的终端用户 1 4 3数据库体系结构在数据库的三级模式结构中 中间层叫做模式 schema 或概念模式 逻辑模式 全局模式等 它是对整个数据库逻辑结构和特征的描述 用户以DBMS支持的逻辑数据模型为基础 以DBMS提供的模式描述 定义 语言 DDL datadescription definitionlanguage 为工具给出数据库中所有实体型和联系的定义 以及给出对数据的安全性 有效性等规则要求 三级模式中的最下层叫做内模式 internalschema 或存储模式 物理模式等 它是对整个数据库的存储结构和特征的描述 用户通常以DBMS和OS支持的存储结构和特征为依托 以DBMS提供的内模式描述 定义 语言 DSDL datastoragedescription definitionlanguage 为工具给出全局模式所对应的存储结构和特征的定义 在非关系模型中 内模式定义必须由用户给出 但在关系模型中 则往往省略此定义 而由DBMS自行确定 数据库中的数据根据内模式定义还不能直接存储 还必须交由操作系统去处理 由操作系统同外部设备打交道 控制存储空间的分配和存取数据的过程 三级模式的最上层叫做外模式 externalschema 或子模式 应用模式 局部模式等 它是对数据库在某个方面局部应用所涉及数据的逻辑结构和特征的描述 它是终端用户和应用程序员所见到的数据库 被称为数据视图 它是整个数据库模式的一个子集 所有外模式定义的逻辑综合就得到整个模式的定义 外模式通常由用户利用所使用的计算机高级语言或开发工具定义 或利用DBMS所提供的数据库语言定义 1 4 4DBMS的主要功能1 数据定义和操纵DBMS提供数据定义语言DDL和数据操纵语言DML datamanipulationlanguage 及其相应的编译或解释程序 使用户能够进行数据库系统的各级模式定义 并能够对数据库进行查询 插入 删除 修改等操纵数据库的操作 2 数据库监控DBMS提供了一组数据库管理控制程序 用以监督和控制数据库系统的正常运行 如存取监控程序检查用户标识 口令和访问权限 决定是否允许对数据库的访问 并发监控程序处理多个用户同时访问数据库时的并发操作 完整性检查程序根据数据约束条件检查用户输入或修改数据的有效性和一致性 3 数据库辅助服务DBMS提供一组数据库服务程序 完成诸如数据库初始创建 数据库转存 备份 数据库恢复 日志文件管理 同其他软件系统通信等辅助功能 4 数据库实用工具DBMS提供一组快捷高效 简单方便的使用数据库的工具 帮助用户按照提示完成各种相应的任务 如在ACCESS数据库系统中提供有基本表 查询 窗体 打印报表等生成器 用户利用它们能够通过交互操作窗口按步操作得到相应的结果 5 建立和维护数据字典数据库系统的三级模式定义都将被DBMS保存到数据字典 DD datadictionary 中 当模式被用户修改时 DBMS将自动更新数据字典 当用户访问数据库时 DBMS将自动查找数据字典进行语法检查 看是否存在已定义的数据 并接着对用户进行存取权限的检查看是否为合法用户访问权限内的数据 再接着进行有效性检查看是否使用了有效数据 等等 1 4 5使用数据库系统存取数据过程使用数据库系统存取数据的过程大致如下 1 用户向DBMS发出读取数据 或写入数据 的请求 2 DBMS检查用户的存取权限 确定是否接受请求 3 如果是合法用户进行合法访问则DBMS查看外模式到模式的映象 确定在模式中对应的数据定义 4 DBMS查看模式到内模式的映象 确定在内模式中对应的数据定义 5 DBMS按照内模式数据定义向操作系统发送读取数据的命令 6 操作系统执行此命令从外存数据库中读出指定的数据并送入在内存的系统缓冲区中 7 DBMS取出系统缓冲区的数据并相继进行内模式到模式 模式到外模式的数据转换后 把它写入到用户缓冲区 8 DBMS把数据从用户缓冲区取出给用户使用 至此结束一次访问数据库的读数过程 第二章关系运算 2 1关系数据结构关系数据结构非常单一 它就是一张具有行列结构的二维表 不过 作为关系的二维表具有较严格的规定和限制 下面以集合论的观点给出有关概念的形式化定义 1 域域 domain 是具有相同特性的数据集合 例如 1 3 5 99 是一个域 它是由100以内的所有奇数组成的集合 男 女 是一个域 它是由人类两种性别男和女组成的集合 东 南 西 北 是一个域 它是由四个不同方向组成的集合 SUN MON TUE WED THU FRI SAT 是一个域 它是由一个星期内的每天英文名称标记组成的集合 2 笛卡尔积笛卡尔积 cartesianproduct 是定义在一组域上的集合 假定一组域用D1 D2 Dn表示 则它们的笛卡尔积表示为D1 D2 Dn 笛卡尔积中每个元素由下式求出 D1 D2 Dn d1 d2 dn di Di 1 i n n 1 笛卡尔积中的每个元素又习惯称为元组 每个元组中的一个值di称为该元组的一个分量 n是域的个数 也是每个元组中分量的个数 具有n个分量的元组被称为n元组 3 关系关系 relation 是笛卡尔积的一个子集 若笛卡尔积具有n个域 则该笛卡尔上的关系被称为n元关系 设D1 D2 Dn为n个域 则该域上的关系用R D1 D2 Dn 表示 R称为关系名 R关系所包含的全部元组是D1 D2 Dn的一个子集 4 关系模式关系模式 relationschema 是一个关系的型 即一个关系的具体结构 它通常被形式化定义为R U D DOM F I 其中R为关系名 U为该关系中的所有属性名集合 D为该关系的所有定义域的集合 该集合长度必然小于等于属性名集合的长度 因为可能出现不同属性使用同一个域的情况 DOM为属性向域映射的集合 它给出属性和域之间的对应关系 即哪个属性属于哪个域 F为该关系中各属性之间的数据依赖的集合 I为该关系中所定义的完整性规则的集合 5 码码 key 又称为键 关键字等 在关系中涉及到许多码的概念 有超码 候选码 主码 备用码 外码等 超码 superkey 关系中能唯一标识每个元组的属性或属性组 集 被称为该关系的超码 一个关系可能有多个超码 候选码 candidatekey 关系中能唯一标识每个元组的最少属性或属性组被称为该关系的候选码 一个关系可能有多个候选码 由超码和候选码的定义可知 一个超码至少包含一个候选码 并且还可能包含除候选码之外的多余属性或属性组 主码 primarykey 从候选码中选择一个作为该关系的主码 数据库系统将按主码标识和排序每个元组 一个关系在任一时刻至多只能有一个主码 但在不同时刻可以指定不同的候选码作为主码 当然也可以在关系中不指定任何主码 备用码 alternatekey 除了主码之外的所有候选码都是该关系的备用码 一个关系可能没有备用码 也可能具有一个或多个备用码 外码 foreignkey 在关系R1中的属性或属性组若在另一个关系R2中作为主码使用 则称该属性或属性组为R1的外码 R1的外码和对应的R2中的主码必须定义在相同的域上 允许使用相同或不同的属性名 不过 为了明确起见 增强可读性 尽量使用相同的属性名 6 主属性和非主属性在一个关系中 包含在任何候选码中的属性都称为该关系的主属性 除主属性外都是非主属性 或称为非码属性 2 2关系完整性关系完整性就是关系模型中数据的正确性 一致性和有效性 关系完整性又包括实体完整性 参照完整性和用户定义的完整性三个方面 每种完整性都对应有相应的完整性规则 都需要用户在定义关系数据库时给出相应定义 1 实体完整性实体完整性 entityintegrity 规则 关系的主码不能取空值 或者说任何关系中每个元组的主码不能为空 2 参照完整性参照完整性 refrenceintegrity 规则 在两个参照和被参照关系中 参照关系中每个元组的外码或者为空 或者等于被参照关系中某个元组的主码 3 用户定义的完整性用户定义的完整性 used definedintegrity 规则包括对每个关系每个属性的取值限制 或称约束 的具体定义 它同其他两个完整性规则一样也被记录在DBMS的数据字典中 在数据库操作时 DBMS会自动根据各种完整性规则进行操作监控 拒绝不符合要求的数据进入数据库 2 3关系运算 2 3 1传统的集合运算传统的集合运算包括并 交 差和笛卡尔积四种 对应的运算符分别用 和 表示 1 并运算 unin 设两个关系R和S具有完全相同的结构 模式 则R和S的并仍是一个关系 该关系的结构与R或S的结构相同 该关系的值是R中所有元组与S中所有元组共同组成的集合 当然 对于R和S中共同具有的元组 在结果集合中只能出现一个 R和S的并记作R S 用集合公式表示为 R S t t R t S 2 交运算 intersect 设两个关系R和S具有完全相同的结构 则R和S的交仍是一个关系 该关系的结构与R或S的结构相同 该关系的值是R和S中共同具有的元组的集合 R和S的交记作R S 用集合公式表示为 R S t t R t S 3 差运算 difference 设两个关系R和S具有完全相同的结构 则R和S的差仍是一个关系 该关系的结构与R或S的结构相同 该关系的值是从R中去掉在S中同时出现的元组后 由R中剩余元组所组成的集合 R和S的差记作R S 用集合公式表示为 R S t t R t S 4 笛卡尔积 cartesianproduct 设有一个具有n个属性的关系R和另一个具有m个属性的关系S 则它们的笛卡尔积仍是一个关系 该关系的结构是R和S的结构之连接 即前n个属性来自R 后m个属性来自S 属性个数等于n m 该关系的值是由R中的每个元组连接S中的每个元组所构成元组的集合 R和S的笛卡尔积记作R S 用集合公式表示为 R S tRtS tR R tS S 2 3 2专门的关系运算专门的关系运算包括选择 投影 连接和除四种 对应的运算符分别用 和 表示 1 选择运算 Select 选择运算是单目运算 它从一个关系R中选择出满足给定条件的所有元组 并同R具有相同的结构 选择运算提供了横向划分 或称分割 关系的手段 设F t 为元组逻辑表达式 当值为真 用逻辑真常量True表示 时 元组t就被选择出来 成为结果关系中的一个元组 对关系R按F t 条件做选择运算记作为 F t R 用集合公式表示为 F t R t t R F t True 2 投影运算 project 投影运算也是单目运算 它从一个关系R中按所需顺序选取若干个属性构成新关系 该新关系的元组数必然小于等于原关系R中的元组数 因为要从中去掉在新关系模式下重复的元组 选择运算提供了纵向划分 或称分割 关系的手段 设t是R中的一个元组 A是要从R中投影出的属性子集 则用t A表示t元组中属性子集A所对应的分量值 对关系R按属性子集A做投影运算记作为 A R 用集合公式表示为 A R t A t R 3 连接运算 join 连接运算是双目运算 它把两个关系R和S按相应属性值的比较条件连接起来 它是R和S的笛卡尔积的一个子集 比较条件就是比较运算表达式 相应的连接就称为该运算符连接 如大于连接 小于等于连接 等于连接等 总称为 连接 假定A和B分别为R和S中的属性 t是连接结果中的一个元组 tR和tS分别表示t元组中分别属于R和S中的元组 tR A和tS B分别为t元组中相应的连接分量 tR A和tS B也可分别表示为R A和S B 因为关系的属性值就表示关系中当前元组t的属性值 对R和S按 条件进行连接记作R S或R R A S BS 用笛卡尔积和选择运算表示为R A S BR R A S BS R A S B R S t tR R tS S R A S B True 2 3 3关系运算综合举例例2 3 9从表2 3 7所示的学生 课程和选课构成的关系数据库中 查询出姓名 Sname 为 lhy 的学生的学生号 所选课程的每门课程号及相应成绩 例2 3 10从表2 3 7 a b c 所示的关系数据库中 查询出学生号为k 变量k中保存着一个给定的学生号 为了使属性名和变量名相区别 假定在变量名前用 字符做标记 的学生的学生号 姓名 所选每门课的课程名及成绩 例2 3 11从表2 3 7 a b c 所示的关系数据库中 查询出同时选修了 001 和 002 这两门课程的学生的学生号 例2 3 12从表2 3 7 a b c 所示的关系数据库中 查询出没有选修任何课程的全部学生 第三章关系规范化基础 3 1数据依赖1 一般函数依赖定义1设一个关系为R U X和Y为属性集U上的子集 若对于元组中X上的每个值都有Y上的一个唯一值相对应 则X和Y之间存在着函数依赖 并称X函数决定Y 又称Y函数依赖于X 记作X Y 称X为决定因素 2 平凡和非平凡函数依赖定义2设一个关系为R U X和Y为属性集U上的子集 若X Y且X Y 则称X Y为非平凡函数依赖 否则若X Y则称X Y为平凡函数依赖 3 部分和完全函数依赖定义3设一个关系为R U X和Y为属性集U上的子集 若X Y 同时X的一个真子集X 也能够函数决定Y 即存在X Y 则称X部分函数决定Y 或Y部分函数依赖于X 记作XY 否则若不存在一个真子集X 使得X 也能够函数决定Y 则称X完全函数决定Y 或Y完全函数依赖于X 记作XY X到Y的部分函数依赖也称为局部函数依赖 4 传递函数依赖定义4设一个关系为R U X Y和Z为属性集U上的子集 其中存在X Y Y Z 但Y X Y Z 则存在X Z 称此为传递函数依赖 即X传递函数决定Z Z传递函数依赖于X 5 函数依赖的增广性规则定义5设一个关系为R U X Y和Z为属性集U上的子集 若X Y 则存在XZ YZ和XZ Y 6 函数依赖的合并性规则与函数依赖分解性规则相对应的为合并性规则 若X Y和X Z成立 则存在X YZ 如 职工号 姓名 和 职工号 性别 成立 则 职工号 姓名 性别 也成立 反之亦然 即 职工号 姓名 性别 成立 则根据分解性规则 职工号 姓名 和 职工号 性别 也同样成立 7 一个关系的最小函数依赖集定义6设一个关系为R U X和Y为U的子集 若X Y 并且为完全函数依赖 同时Y为单属性 则称X Y为R的最小函数依赖 由R中所有最小函数依赖构成R的最小函数依赖集 其中不含有冗余的传递函数依赖 8 根据函数依赖求关系的候选码定义7设一个关系为R U X为U的一个子集 若X能够函数决定U中的所有属性 并且X的任何真子集都不能函数决定U中的所有属性 则称X为关系R的一个候选码 9 根据实际需要给关系添加候选码在关系数据库中通常把同类事物或活动用一个关系来描述 若单靠事物或活动本身的特征不好或者不方便标识时 就应该给它们进行人为的统一编码 这样既能够唯一标识每个对象 又便于人们进行处理 如平常使用的标识系列 职工编号 学生号 身份证号 借书证号 驾驶证号 车牌号 银行账号 订单号 合同号 图书编号 设备编号 零件编号等都是人们为处理对象的方便而附加的候选码 10 函数依赖规则小结这里总结给出函数依赖的一些常用规则 设关系为R U X Y Z W是U上的子集 则 1 自反性 若X Y 则存在X Y 2 增广性 若X Y 则存在XZ YZ 3 传递性 若X Y和Y Z 则存在X Z 4 合并性 若X Y和X Z 则存在X YZ 5 分解性 若X Y 且Y Z 则存在X Z 6 伪传递性 若X Y和WY Z 则存在WX Z 7 复合性 若X Y和Z W 则存在XZ YW 8 自增性 若X Y 则存在WX Y 3 2关系规范化 3 2 1第一范式 FirstNormalForm 定义8设一个关系为R U 若U中的每个属性都是不可再分的 或者说都是不被其他属性所包含的独立属性 则称关系R U 是符合第一范式的 关系数据库中的每个关系都必须达到第一范式 这是对关系数据库的最起码要求 若一个关系不满足第一范式 则称为非规范化的关系 否则称为规范化的关系 3 2 2第二范式 SecondNormalForm 定义9设一个关系为R U 它是满足第一范式的 若R中不存在非主属性对候选码的部分函数依赖 则称该关系是符合第二范式的 若一个数据库中所有关系都达到了第二范式则称该数据库是符合第二范式的 3 2 3第三范式 ThirdNormalForm 定义10设一个关系为R U 它是满足第一范式的 若R中不存在非主属性对候选码的传递函数依赖 则称该关系是符合第三范式的 一个关系中的部分函数依赖也是一种传递依赖 如假定WX是候选码 存在X Y的函数依赖 则WX Y是部分函数依赖 因有WX X X WX X Y 所以WX Y又是传递依赖 若关系R中不存在非主属性对候选码的传递函数依赖 就包括不存在部分函数依赖 因此 一个关系若达到了第三范式 则自然也就包括达到了第二范式 若一个数据库中所有关系都达到了第三范式则称该数据库是符合第三范式的 3 2 4BC范式 Boyce CoddNormalForm BC范式又简称BCNF 它比第三范式的规范化程度更高 定义11若一个关系为R U 它是满足第一范式的 当R中不存在任何属性对候选码的传递函数依赖时 则称R是符合BCNF的 BCNF的定义也可以采用另一种等价的方式叙述 若R中的所有属性都完全依赖于候选码 或者说R的最小函数依赖集中的所有函数依赖的决定因素都是候选码 则R是符合BCNF的 在第三范式中 只要求非主属性不传递依赖于候选码 没有强调主属性是否传递依赖于候选码 而在BCNF中 不但要求非主属性 而且要求主属性都不能传递依赖于候选码 当然传递依赖包含部分依赖在内 若一个关系虽然达到了第三范式要求 没有达到BCNF要求 表明在主属性中存在着部分依赖或传递依赖 这也会带来数据冗余和操作异常 经常也需要继续分解使之达到BCNF 不过此分解过程可能破坏无损连接性和函数依赖性 第四章结构化查询语言 SQL 4 1SQL简介4 2数据库模式的建立和删除4 3表结构的建立 修改和删除4 4表内容的插入 修改和删除4 5视图的建立 修改和删除4 6SQL查询 4 1SQL简介 SQL是StructuredQueryLanguage的缩写 是美国国家标准局 ANSI 从1986年首次推出的一种关系数据库语言 它已经相继出现了多个版本 依次有1986年的SQL86 1989年的SQL89 1992年的SQL2和1999年的SQL3等 SQL也相应得到国际标准化组织 ISO 的认可 已经成为关系数据库语言的国际标准 现在SQL几乎被所有关系数据库管理系统所采用 各系统对其都有所修改和扩充 但核心仍然是SQL SQL具有数据定义 DDL 数据操纵 DML 和数据控制 DCL 等丰富功能 它定义有一组操作命令 语句 用户通过命令交互方式或程序执行方式使用命令能够实现相应的功能 不过现在许多关系数据库管理系统不但提供给用户命令和编程式操作界面 而且提供给用户窗口式操作界面 可视化的窗口界面方式操作数据库更为直观和快捷 更为灵活和方便 因此受到广大数据库应用开发者和数据库用户的欢迎 为了能够理解数据库开发环境中每个操作对象和每个窗口界面中各操作元素的含义 能够熟练地使用各种窗口 菜单 对话框 控件 按钮等进行有效操作 则必须首先掌握好SQL SQL的数据定义功能能够定义数据库的三级模式结构 即外模式 全局模式和内模式结构 在SQL中 外模式又叫做视图 view 全局模式简称模式 schema 或数据库 database 内模式由系统根据数据库模式自动实现 至多由用户定义相应的索引文件 其余无须用户过问 在SQL中 每个关系又叫做基本表或表 table 每个关系中的属性又叫做字段 field 或列 column 元组又叫做行 row 一个数据库由若干个基本表组成 通常一个基本表对应存储在外存数据库空间的一个存储文件中 每个视图也是一个关系 它由基本表产生出来 有自己独立的结构定义 但没有独立的数据存在 它的数据来自基本表 间接地来自存储基本表的数据存储文件 所以 又把视图称为虚表 virtualtable 4 2数据库模式的建立和删除 当需要在计算机中某个关系数据库管理系统之下建立数据库时 首先就要使用数据库模式的建立命令定义数据库名 即模式名 然后在其中定义各个基本表 视图等有关对象 4 2 1建立数据库模式 语句格式 CREATE SCHEMA DATABASE AUTHORIZATION 语句功能 在计算机系统中建立一个只有名字的空数据库 并定义出它的所有者名称 4 2 2删除数据库模式 语句格式 DROP SCHEMA DATABASE 语句功能 从计算机系统中删除 撤消 一个数据库 当然会同时把该库中的所有信息一并删除掉 4 3表结构的建立 修改和删除 在计算机系统中建立了一个关系数据库 模式 之后 接着就要建立数据库中的每个关系 基本表或表 4 3 1建立表结构 语句格式 CREATETABLE 语句功能 在当前或给定的数据库中定义一个表的结构 即关系模式 1 数据类型 每个列的名字是一个用户定义的标识符 列名后面跟着其数据类型的描述 可使用的数据类型主要有以下四种 char n 定长字符型 其长度为n 即占n个字节 能够用来保存长度 即ASCII码字符的个数 小于等于n的字符串 注意 对于每个汉字区位码字符 其长度为2 相当于两个ASCII码字符 int整型 又称整数型 int也可以用标识符integer表示 该类型占4个字节 能够用来表示 2147483648到 2147483647之间的所有整数 float浮点型 又称实数型 该类型占4个或8个字节 能够表示相当大范围内的任何浮点数或实数 包括该范围内的所有整数和小数 date日期型 也可以为datetime 表示日期时间型 该类型占4个或8个字节 能够表示任何一个日期 日期数据格式为yyyy mm dd或yyyy mm dd 其中yyyy表示年份 mm表示年内的月份 dd表示月内的天数 整数和浮点数都属于数值 为了区别于数值 字符数据和日期数据在书写时需要用单引号括起来 2 列级完整性约束 每个列后面的完整性约束称为列级完整性约束 它给出对该列数据的完整性约束条件 表中任一行在该列上的值若改变时破坏了规定的条件 将拒绝这种操作 列级完整性约束有以下六种 DEFAULT默认值约束 当不给一个元组中的该列分量输入值时则采用由所提供的值 整数 浮点数 用单引号括起来的字符串或日期都是常量表达式 如25 100为整数 2 45 3 67E5为浮点数 计算机 2 xy 为字符串 1956 03 25 2002 12 18 为日期 NULL NOTNULL空值 非空值约束 注明每行上的该列值是否允许为空 对于非主属性 若不注明此项约束 则隐含为空值约束 即允许任何行上的该列值为空 PRIMARYKEY主码约束 注明该列为关系的主码 一个关系只能注明一个主码 当然可以无主码 一个关系被注明主码后 其所有元组将按主码值的升序排列 可以作为出生日期字段的检查条件 假定由函数getdate 返回系统当前的日期 UNIQUE单值约束 又称唯一值约束 注明该列上的所有取值必须互不相同 REFERENCES 外码约束 注明该列为外码 并给出对应的父表及父表中被参照的主码 另外 在一些实际的数据库管理系统中 不仅允许主码被参照 而且也允许候选码或单值约束的属性被参照 CHECK 检查约束 注明该列的取值条件 或称取值限制 当一个列规定为主码时 就隐含规定该列同时具有非空和单值约束 当一个列虽然没有规定为主码 但若同时规定为非空和单值时 则它是一个候选码 若一个列只规定为单值 则也允许有一个空值存在 即不能出现多行在该列上的值为空 检查约束中的逻辑表达式通常含有其列名 给出取值限制 如 性别 男 OR性别 女 可以作为性别字段的检查条件 年龄 18 可以作为职工年龄字段的检查条件 出生日期 getdate 3 表级完整性约束 在所有列定义后给出 包括以下四种 PRIMARYKEY 主码约束 注明一个或同时多个列为主码 如primarykey 课程号 教师号 就定义了相应关系中的主码为课程号和教师号这两个属性的组合 UNIQUE 单值约束 注明一个或同时若干个列为单值 如unique 订单号 顾客号 就定义了相应关系中的订单号和顾客号属性构成组合的单值属性 即在该关系的所有元组中 不能出现完全相同的订单号和顾客号 否则将报错 FOREIGNKEY REFERENCES 外码约束 注明一个或同时多个列为外码 并给出对应的父表及父表中被参照的主码中的所有列 CHECK 检查约束 注明每行中一个或若干个列在取值上必须满足的条件 如check 工龄 年龄 就定义了工龄和年龄之间的检查约束 除默认值约束和空值 非空值约束外 对于其他约束 若只涉及到一个列时 则既可以作为列级完整性约束 又可以作为表级完整性约束 当然只能取其一使用 若涉及到多个列时 则只能作为表级完整性约束来定义 4 3 2修改表结构 语句格式 ALTERTABLE ADD ADD DROPCOLUMN DROP 语句功能 向已定义过的表中添加一些列的定义或一些表级完整性约束 或者从已定义过的表中删除一些列或一些完整性约束 4 3 3删除表结构 语句格式 DROPTABLE 语句功能 从指定或当前数据库中删除一个表 当然在删除表结构的同时也删除了全部内容 4 4表内容的插入 修改和删除 当建立好一个表结构后 它只是一个空表 接着需要向它插入数据 即添加每个元组 记录 然后还可以进行修改和删除等操作 4 4 1插入记录 向一个表中插入记录有两种语句格式 一种是单行插入 另一种是多行插入 单行插入语句格式 INSERT INTO VALUES 多值插入语句格式 INSERT INTO 语句功能 向一个表中所指定的若干列插入一行或多行数据 4 4 2修改记录 语句格式 UPDATE SET FROM WHERE 语句功能 按条件修改 更新 一个表中一些列的值 4 4 3删除记录 语句格式 DELETE FROM FROM WHERE 语句功能 删除一个表中满足条件的所有行 4 5视图的建立 修改和删除 视图 view 是在基本表之上建立的表 它的结构 即所有列定义 和内容 即所有数据行 都来自基本表 它依据基本表存在而存在 一个视图可以对应一个基本表 也可以对应多个基本表 也就是说 每个视图的列可以来自同一个基本表 也可以来自多个不同的基本表 基本表有对应的存储文件 即内模式文件 视图有对应的基本表 它是基本表的抽象和在逻辑意义上建立的新关系 广义地说 视图可以在任何一个或多个表上建立 这些表包括基本表和称作逻辑表的视图在内 在数据库三级模式结构中 基本表属于全局模式中的表 它是实表 而视图则属于局部模式中的表 它是虚表 视图的建立和删除只影响视图本身 不影响对应的基本表 而对视图内容的更新 即插入 删除和修改 直接影响基本表 即直接更新对应基本表中的数据 当视图来自多个基本表时 通常只允许对视图做适当的修改 如对非主属性的修改 不允许做插入和删除数据的操作 当然对视图做的最多的是查询 它同对基本表的查询完全相同 没有任何差别 在SQL操作中 既允许用户直接访问视图 也允许用户直接访问基本表 当然还要受到用户访问权限的限制 4 5 1建立视图 语句格式 CREATEVIEW AS语句功能 在当前数据库中根据SELECT子句的查询结果建立一个视图 包括建立视图的结构和内容 使用视图的优点 1 建立复合表 2 增强数据库的安全性 3 按习惯使用属性名称 4 添加用于计算的属性 4 5 2修改视图内容 通常需要对视图进行修改 是修改由基本表中非主属性所对应的列 若要修改主属性所对应的列 最好到各自的基本表中去修改 以便更好地满足关系的规范化和完整性的要求 语句格式 UPDATE SET FROM WHERE 语句功能 按照一定条件对当前或指定数据库中的一些列值进行修改 4 5 3修改视图定义 语句格式 ALTERVIEW AS语句功能 在当前数据库中修改已知视图的列 它与SELECT子句的查询结果相对应 4 5 4删除视图 语句格式 DROPVIEW语句功能 删除当前数据库中一个视图 4 6SQL查询 SQL集数据定义 数据更新 数据控制 数据查询等功能为一体 特别具有非常强大的数据查询功能 SQL查询只对应一条语句 即SELECT语句 该语句带有丰富的选项 又称子句 每个选项都由一个特定的关键字标识 后跟一些需要用户指定的参数 4 6 1SELECT语句格式及简要说明 SELECT语句格式 SELECT ALL DISTINCT AS AS INTO FROM AS AS WHERE GROUPBY HAVING ORDERBY ASC DESC ASC DESC 语句功能 根据一个或多个表按条件进行查询 产生出一个新表 即查询结果 该新表被显示出来或者被命名保存起来 语句说明 该命令中如下一些选项 SELECT选项 给出在查询结果中每一行 即每一条记录 所包含的列 以及决定是否允许在查询结果中出现重复行 即内容完全相同的记录 INTO选项 决定是否把查询结果以基本表的形式保存起来 若需要则应带有该选项 FROM选项 提供用于查询的基本表和视图 它们均可以带有表别名 称这些表为源表 而把查询结果称为目的表 WHERE选项 用来指定不同源表之间记录的连接条件和每个源表中记录的筛选 选择 条件 只有满足所给连接条件和筛选条件的记录才能被写入到目的表中 GROUPBY选项 用于使查询结果只包含按指定列的值进行分组的统计信息 HAVING选项 通常同GROUPBY选项一起使用 筛选出符合条件的分组统计信息 ORDERBY选项 用于将查询结果按指定列值的升序或降序排序 在查询语句中 包含了关系运算中介绍的选择 投影 连接 笛卡尔积和并运算 通过SELECT选项实现投影运算 通过FROM选项和WHERE选项实现连接和选择运算 在SQL新版本中 用FROM选项专门实现连接运算 用WHERE选项专门实现选择运算 若省略连接条件则实现笛卡尔积运算 若在两个查询语句之间使用UNION关键字则实现并运算 4 6 2SELECT选项 在该选项中 ALL DISTINCT为任选项 若选择ALL 则允许在查询结果中出现内容重复的行 记录 若选择DISTINCT 则在查询结果中不允许出现内容重复的行 也就是说 只有内容互不相同的记录才能被写入到查询结果中 若省略该选项 则隐含为ALL 在SELECT语句中 使用的列函数有 COUNT ALL DISTINCT 若选用ALL则统计出指定列的值的个数 不去除重复值 若选用DISTINCT则统计出指定列的不同值的个数 去除重复值 若选用 则统计出所有元组的个数 MAX 求出指定的数值 字符或日期列的最大值 MIN 求出指定的数值 字符或日期列的最小值 AVG 求出指定的数值列的平均值 SUM 求出指定的数值列的总和 4 6 3FROM选项 FROM选项提供用于查询的基本表和视图 并可以为每个基本表起一个别名 此别名只限于该SELECT语句中使用 作为列名的前缀限定符 以区别于其它源表中的同名列 若没有给一个源表定义别名 则使用表名作为所属列的前缀限定符 当一个源表的表名较长时 可起一个简单的别名 以方便在其它选项中使用 或者在一个查询中需要使用多个同一个表时 则必须为每个表命名不同的别名 以示区别 若基本表和视图不在当前数据库中 则必须加上数据库名和所有者名作前缀 当然 其他选项中引用这些表的列名时 也必须加上相应的前缀 4 6 4WHERE选项 WHERE选项的功能是指定源表之间的连接条件 若多于一个源表的话 和对记录的筛选条件 该选项中的既可以只包含连接条件 也可以只包含筛选条件 还可以同时包含这两种条件 这两种条件之间需用逻辑与 AND 运算符连接成一个逻辑表达式 当系统执行一个SELECT语句时 若WHERE选项中的逻辑表达式既包含连接条件 又包含筛选条件 那么是先进行连接运算 然后再进行选择运算 还是先进行选择运算 再进行连接运算 这完全由系统自动进行优化处理 无须用户过问 连接条件是通过比较运算符等于 大于 小于 和不等于 共六种 把两个源表中的对应列连接起来的式子 也可以是通过逻辑与 AND 运算符连接两个比较式构成的逻辑表达式 或者通过逻辑非 NOT 运算符对比较式取反而得到的逻辑表达式 连接条件中最常用的是等值连接 即使两个表中对应列相等所进行的连接 通常一个列是所在表的主码 另一个列是所在表的主码或外码 若在命令的WHERE选项中省略连接条件 则表示将每个源表按笛卡尔积连接 筛选条件的作用是从源表或连接后生成的中间表中选择出所需要的行 筛选条件可以是由比较运算符连接两个数值 字
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国电动轮椅市场营销渠道策略与投资可行性风险报告
- 2025-2030中国热致液晶聚酯市场现状调研及发展前景规划报告
- 2025四川卫生人才招聘考试医学基础卫生公基笔面试题库及答案
- 2025年《处方管理办法》考试试题及答案
- 智能交通系统租赁合同:三方交通合作协议
- 离婚协议公证及财产分割执行监督协议
- 《离婚后子女教育、生活费用及心理辅导支持协议》
- 旅游景区物业管理租赁委托收费标准合同范本
- 猪场租赁期限为五年的规模化养殖场出租合同范本
- 综合医院护士岗位派遣及劳动合同管理协议
- 化工阀门管件培训课件
- 白酒生产安全员考试题库及答案解析
- 2025店面劳动合同范本:超市收银员专项协议
- 《树之歌》课件 小学部编版语文二年级上册
- 画廊与画家签约合同范本
- 展会联合承办协议书范本
- 2025-2026冀人版三年级科学上册教学设计(附目录)
- 2025设备担保抵押借款合同
- 早教托育合伙人合同协议
- 抵押合同变更协议书范本
- 2025年舞蹈培训学校工作计划及方案范文
评论
0/150
提交评论