版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库技术,主讲教师:赵晓瑜zhaoxiaoyu_ 工程技术系 2011年2月,数据库技术,1、课程作用,课程重要性:没有数据库,就不可能有管理系统。对于任何一个管理系统而言,数据库是它所必备的。 2、如何学好这门课程:勤动脑+多动手!,第1章 数据库的基本概念,1.1 数据库基本概念,1.2 关系数据库设计,1.3 数据库应用系统,1.4 MySQL概述,学习目标,对数据库技术的功能及实际应用有个整体认识; 理解并掌握数据库的常用术语及基本概念(Data、DB、DBMS、DBS等) 理解数据库系统的特点 掌握关系数据库的设计 MYSQL的安装和配置,思考:什么是数据库,对数据库“想当然”的理
2、解: 数据库应该是存放数据的仓库? 那么什么是“数据”呢?,1.1 数据库基本概念,1. 数据库( DataBase) 数据库(DB)是存放数据的仓库,只不过这些数据存在一定的关联,并按一定的格式存放在计算机上。 数据库是长期存储在计算机内、有组织的、可共享的数据集合。这种集合具有如下特点: 最小的冗余度 应用程序对数据资源共享 数据独立性高 统一管理和控制,1.1.1 数据库与数据库管理系统,1.1 数据库基本概念,2. 数据库管理系统(DataBase Management System,简记为DBMS) DBMS是管理数据库的系统,它按一定的数据模型组织数据,是位于用户与操作系统之间的一
3、个数据管理软件。DBMS应提供如下功能: (1)数据定义功能 用户通过数据定义语言(DDL,Data Definition Language)它可以方便地对数据库中的数据对象进行定义。 (2)数据操纵功能 用户可以使用数据操纵语言(DML,Data Manipulation Language) 操纵数据,实现对数据的基本操作。如查询、插入、删除和修改。,1.1 数据库基本概念,(3)数据的完整性检查功能 保证用户输入的数据应满足相应的约束条件。 (4)数据库的安全保护功能 保证只有赋予权限的用户才能访问数据库中的数据。 (5)数据库的并发控制功能 使多个应用程序可在同一时刻并发地访问数据库的数
4、据。 (6)数据库系统的故障恢复功能 使数据库运行出现故障时进行数据库恢复,以保证数据库可靠运行。 (7)在网络环境下访问数据库的功能。 (8)方便、有效地存取数据库信息的接口和工具。,1.1.1 数据库与数据库管理系统,编程人员通过程序开发工具与数据库的接口编写数据库应用程序。数据库管理员通过提供的工具对数据库进行管理。 3、数据库系统(DataBase System,简记为DBS) 数据库系统一般由数据、数据库、数据库管理系统与操作数据库的应用程序,加上支撑它们的硬件、软件平台和与数据库有关的人员构成。图1.1描述了数据库系统的构成。,图1.1 数据库系统的构成,1.1.1 数据库与数据库
5、管理系统,4、数据(Data) “数据”是一个多义词,分为有意义的数据和无意义的字节数据 硬盘可存储30G数据 把U盘数据拷到硬盘去 学生信息表中的数据 实验结果表中的数据 因此数据库中的数据是指有意义的数据 数据是描述现实世界事物的符号记录,是用物理符号记录的可以鉴别的信息。从广义上讲,数据不仅包含数字,还包括了文本、图像、音频、视频等。,补充知识,1、数据库技术的产生与发展 数据管理技术经历了如下三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。 人工管理阶段 人力手工整理存储数据 特点是:数据不保存、数据无专门软件进行管理、数据不共享、数据不具有独立性、数据无结构。 文件系统阶段 使
6、用磁盘文件来存储数据,补充知识,特点是:数据可以长期保存、由文件系统管理数据、程序与数据有一定的独立性、数据共享性差、数据独立性差、记录内部有结构。 数据库系统阶段 关系型数据库 特点: 数据结构化 在描述数据时不仅描述数据本身,还描述数据之间的联系。 数据共享性高、冗余度小、易扩充 数据可以被多个应用共享。这不仅大大减小了数据的冗余度、节约存储空间、减少存取时间,而且可以避免数据之间的不相容性和不一致性。,补充知识,数据独立性高 数据独立性包括物理独立性和逻辑独立性。数据的物理独立性是指当数据的物理存储改变时,应用程序不用改变。数据的逻辑独立性是指当数据的逻辑结构改变时,用户应用程序不用改变
7、。 统一的数据管理和控制 数据库对系统中的用户是共享资源。计算机的共享一般是并发的,即多个用户可以同时存取数据库中的数据,甚至可以同时存取数据库中同一个数据。因此,数据库管理系统必须提供以下几个方面的数据控制保护功能。 数据的安全性(security)保护 数据的完整性(integrity)控制 数据库恢复(recovery) 并发(concurrency)控制,补充知识,2、数据库系统的体系结构 集中式系统 DBMS和应用程序以及与用户终端进行通信的软件等都运行在一台宿主计算机上,所有的数据处理都是在宿主计算机中进行。宿主计算机一般是大型机、中型机或小型机。应用程序和DBMS之间通过操作系统
8、管理的共享内存或应用任务区来进行通信,DBMS利用操作系统提供的服务来访问数据库。终端通常是非智能的,本身没有处理能力。 集中系统的主要优点是:具有集中的安全控制,以及处理大量数据和支持大量并发用户的能力。集中系统的主要缺点是:购买和维持这样的系统一次性投资太大,并且不适合分布处理。 个人计算机系统 与大型系统不同,通常个人计算机(微机)上的DBMS功能和数据库应用功能是结合在一个应用程序中的,这类DBMS(如FoxPro、Acssce)的功能灵活,系统结构简洁,运行速度快,但这类DBMS的数据共享性、安全性、完整性等控制功能比较薄弱。,补充知识,客户/服务器系统 在客户/服务器(Client
9、/Server,简记为C/S)结构的数据库系统中,数据处理任务被划分为两部分:一部分运行在客户端,另一部分运行在服务器端。客户端负责应用处理,数据库服务器完成DBMS的核心功能。 这种模型中,客户机上都必须安装应用程序和工具,使客户端过于庞大、负担太重,而且系统安装、维护、升级和发布困难,从而影响效率。 分布式系统 一个分布式数据系统由一个逻辑数据库组成,整个逻辑数据库的数据,存储在分布于网络中的多个结点上的物理数据库中。在当今的客户/服务器结构的数据库系统中,服务器的数目可以是一个或多个。当系统中存在多个数据库服务器时就形成了分布系统。 浏览器/服务器系统 随着Internet的迅速普及,出
10、现了三层客户机/服务器模型:客户机应用服务器数据库服务器。这种系统称为浏览器/服务器(Browser/Server,简记为B/S)系统。,补充知识,3、数据库系统三级模式结构 从DBMS方面考虑,数据库系统通常采用三级模式结构,这是DBMS内部的系统结构。 模式(schema) 模式也称为逻辑模式,是数据中全体数据的逻辑结构和特征描述,是所有用户的公共数据视图。 一个数据库只有一个模式。DBMS提供描述语言(模式DDL)来严格定义模式。 外模式(external schema) 外模式也称为子模式或用户模式,它是数据库用户能够看到和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,
11、是与某一应用有关的数据的逻辑表示。 外模式通常是模式的子集。一个数据库可以有多个外模式。外模式是保证数据库安全性的一个有力措施。每个用户只能看见和访问所对应的外模式中的数据,数据库中其余数据是不可见的。 DBMS提供子模式描述语言(子模式DDL)来严格定义子模式。,补充知识,内模式(internal shcema) 内模式也称为存储模式(storage shcema),一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。 DBMS提供内模式描述语言(内模式DDL,或者存储模式DDL)来严格定义内模式。 三级模式之间的映射 三级模式间有两种映射:模式/外模式
12、映射、模式/内模式映射 模式/外模式映射定义某个外模式和模式的对应关系,当模式发生改变时,只要改变其映射,而无需改动外模式,从而保证了数据的逻辑独立性。 模式/内模式映射定义内模式和模式的对应关系,当内模式发生改变时,只要改变其映射,而无需改动模式,从而保证了数据的物理独立性。,补充知识,4、 数据模型及其组成要素 数据库系统的核心是数据库,数据库是根据数据模型建立的,因而数据模型是数据库系统的基础。 数据模型通常都是由数据结构、数据操作和完整性约束3个要素组成。 数据结构 数据结构研究数据元素之间的组织形式、存储形式以及数据操作等。数据结构用于描述系统的静态特性。 在数据库系统中,通常按照其
13、数据结构的类型来命名数据模型。例如层次结构、网状结构、关系结构的数据模型分别命名为层次模型、网状模型和关系模型。,补充知识,数据操作 数据操作用于描述系统的动态特性。数据操作是指对数据库中的各种对象的实例允许执行的操作的集合,包括操作及有关的操作规则。 数据库主要有查询和更新两大类操作。 数据完整性约束 数据完整性约束是一组完整性规则的集合。完整性规则是给定的数据模型中数据及其联系所具有的制约和储存规则,用以符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效和相容。 数据模型是数据库技术的关键,它的3个要素完整地描述了一个数据模型。,1.1.2 数据模型,1.1.2. 数据模型的种
14、类 目前,数据库领域中,最常用的数据模型有:层次模型、网状模型和关系模型。 层次模型 层次模型是数据库中最早出现的数据模型。用树型结构表示实体类型以及实体间的联系是层次模型的主要特征。 层次模型的一个最基本的特点是,任何一个给定的记录值(也称为实体)只有按照其路径查看时,才能显出它的全部意义。没有一个子记录值能够脱离双亲记录值而独立存在。,图1.2 按层次模型组织的数据示例,1.1.2 数据模型, 网状模型 每一个数据用一个节点表示,每个节点与其他节点都有联系,这样数据库中的所有数据节点就构成了一个复杂的网络。在网状模型中,一个子结点可以有多个父结点,在两个结点之间可以有一种或多种联系。图1.
15、3为按网状模型组织的数据示例。,图1.3 按网状模型组织的数据示例,1.1.2 数据模型,关系模型 在关系模型中,数据在用户观点下的逻辑结构就是一张二维表。每一张二维表称为一个关系(relation)。 表格中的一行称为一个记录,一列称为一个字段,每列的标题称为字段名。如果给每个关系表取一个名字,则有n个字段的关系表的结构可表示为:关系表名(字段名1,字段名n),通常把关系表的结构称为关系模式。,1.1.2 数据模型,在关系表中,如果一个字段或几个字段组合的值可唯一标志其对应记录,则称该字段或字段组合为码。 有时一个表可能有多个码,如表A.4中,姓名不允许重名,则“学号”、“姓名”均是学生信息
16、表码。对于每一个关系表通常可指定一个码为“主码”,在关系模式中,一般用下横线标出主码。 按关系模型组织的数据表达方式简洁、直观,插入、删除、修改操作方便,而按层次、网状模型组织的数据表达方式复杂,插入、删除、修改操作复杂。因此,关系模型得到了广泛应用,MySQL是支持关系数据模型的数据库管理系统。,1.2 关系数据库设计,1.2.1 数据库设计概述 数据库设计的主要内容有数据库的结构特性设计和数据库的行为特性设计。 数据库的结构特性设计起着关键作用。数据库的结构特性是静态的,一般情况下不会轻易变动。 数据库的行为结构设计是指确定数据库用户的行为和动作。数据库用户的行为和动作是指数据查询和统计、
17、事物处理及表报处理等。,1.2 关系数据库设计,1.2.2 数据库设计的基本步骤 考虑数据库及其应用系统开发的全过程,可以将数据库设计过程可分为以下6个阶段。 需求分析阶段 调查用户需求的具体步骤是: 调查使用该系统的组织单位的具体情况,包括部门组成、部门职责、部门人员等,了解使用组织的各个信息。 调查使用系统的各部门的业务活动。包括各部门使用该系统的业务流程、业务数据、以及业务功能等,了解各部门的业务相关信息。,1.2 关系数据库设计,在熟悉了各部门组织及业务情况后,协助用户明确对该系统的各种功能的需要,包括需要的数据要求、对数据的处理要求、对整个系统的安全要求等,从而与客户达成共识。 确定
18、该系统的最终功能。这是需求分析的最后一步,在完成以上三个步骤后,最终要求客户需要分析人员确定系统的功能,具体确定当前阶段系统应该完成的功能,以及后期系统扩展需要完成的功能。,1.2 关系数据库设计,概念结构设计阶段 概念结构设计是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型,一般用E-R图表示概念模型。 逻辑结构设计阶段 逻辑结构设计是将概念结构转化为选定的DBMS所支持的数据模型,并使其在功能、性能、完整性约束、一致性和可扩充性等方面均满足用户的需求。,1.2 关系数据库设计,数据库物理设计阶段 数据库的物理设计通常分为两步进行: (1)
19、确定数据库的物理结构:数据存放方法和存储结构 具体的关系模式存取方法主要包括以下两种选择:一是索引方法,一是聚簇方法,一是HASH方法。 (2)评价所确定的物理结构 数据库实施阶段 数据库实施阶段的任务是根据逻辑设计和物理设计的结果,在计算机上建立数据库,编制与调试应用程序,组织数据入库,并进行系统测试和试运行。,1.2 关系数据库设计,数据库运行和维护阶段 数据库应用系统经过试运行后即可投入正式运行。在数据库系统运行过程中必须不断地对其进行评价、调整与修改。,1.2 关系数据库设计,补充知识,信息世界中的基本概念 实体(entity) 客观存在并可相互区别的事物称为实体。实体可以是具体的人、
20、事、物,也可以是抽象的概念或联系。例如:酒店里,一名客人、一名前台服务员、一名前台主管等都是实体,同样,前台主管与前台服务员之间的联系称为实体。 属性(attribute) 实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。若干属性中能唯一标识实体的属性称为该实体的码。 主码(primary key) 惟一标识实体的属性集称为主码。 例如,学生号是学生实体的主码,职工号是职工实体的主码。 域(domain) 属性的取值范围称为该属性的域。 例如,职工性别的域为(男,女),姓名的域为字母字符串集合,年龄的域为小于150的整数,职工号的域为5位数字组成的字符串等。,补充知识,实体型(e
21、ntity type) 具有相同属性的实体必然具有共同的特征和性质。用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。 例如,学生(学号,姓名,性别,出生年份,系,入学时间)就是一个实体型。 实体集(entity set) 同型实体的集合称为实体集。 例如,全体学生就是一个实体集。 图书馆的图书也是一个实体集。 联系(relationship) 在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体内部的联系和实体之间的联系。实体内部的联系通常是组成实体的各属性之间的联系。,补充知识,概念模型的表示方法 概念模型是对信息世界建模,所以概念模型应该能够方便、准确地表示
22、信息世界中的常用概念。概念模型的表示方法很多,其中最为常用的是P.P.S.Chen于1976年提出的实体联系方法(Entity-Relationship Approach,简记为E-R表示法)。 该方法用ER图来描述现实世界的概念模型,称为实体联系模型,简称E-R模型。E-R图中各图形的含义及图示见表1-1。 需要注意的是,联系本身也可以有属性。如果一个联系具有属性,则这些属性也要用无向边与该联系连接起来。,补充知识,表1-1 E-R图中各图形的含义,1.2.2 概念结构设计,对于每一个实体集,可指定一个码为主码。如果用矩形框表示实体集,用带半圆的矩形框表示属性,用线段连接实体集与属性,当一个
23、属性或属性组合指定为主码时,在实体集与属性的连接线上标记一斜线,则可以用图1.4描述学生成绩管理系统中的实体集及每个实体集涉及的属性。,图1.4 学生和课程实体集属性的描述,1.2.2 概念结构设计,1.2.2 概念结构设计,实体集A和实体集之间存在各种关系,通常把这些关系称为“联系”。通常将实体集及实体集联系的图表示为实体(Entity)-联系(Relationship)模型;从分析用户项目涉及的数据对象及数据对象之间的联系出发,到获取E-R图的这一过程称为概念结构设计。联系用菱形表示,通过直线与实体相连。这样构成的图就是E-R图,E-R图就是E-R模型的描述方法。 1. 一对一的联系(1:
24、1) A中的一个实体最多与B中的一个实体相联系,B中的一个实体也最多与A中的一个实体相联系。例如,一般情况下,“部门”与“主管”这两个实体集之间的联系是一对一的联系,1.2.2 概念结构设计,一对多的联系(1:n) 如果对于实体集A中的每一个实体,实体集B中有n个实体与之联系(n0),反之,对于实体集B中的每一个实体,实体集A中至多有一个实体与之联系,则称实体集A与实体集B具有一对多联系,记为1:n 。 例如,“班级”与“学生”这两个实体集之间的联系是一对多的联系,因为,一个班可有若干学生,反过来,一个学生只能属于一个班。,1.2.2 概念结构设计,3. 多对多的联系(m:n) 如果对于实体集
25、A中的每一个实体,实体集B中有n个实体与之联系(n0),反之,对于实体集B中的每一个实体,实体集A中也有m个实体与之联系(m0),则称实体集A与实体集B具有多对多联系,记为m:n 。 例如,“学生”与“课程”这两个实体集之间的联系是多对多的联系,因为,一个学生可选多门课程,反过来,一门课程可被多个学生选修。 注意: 一对一联系是一对多联系的特例,而一对多联系又是多对多联系的特例。实体型之间的这种一对一、一对多、多对多联系不仅存在于两个实体型之间,也存在于两个以上的实体型之间。同一个实体集内的各实体之间也可以存在一对一、一对多、多对多的联系。,1.2.2 概念结构设计,【例1】在选课系统中,一门
26、课程同时有若干个学生选修(学生的属性主要包括:学号、姓名、性别、年龄、所在系等) ,而一个学生可以同时选修多门课程(课程的属性主要由课程号、课程名、学分组成,则课程与学生之间具有多对多联系。,1.2.2 概念结构设计,【例2】职工实体集内部有领导与被领导的联系。即某职工为部门领导,“领导”若干职工,而一名职工仅被另外一个职工(领导)直接领导,因此这是一对多联系。,1.2.2 概念结构设计,【例3】图书借阅系统概念模型设计。该系统中有读者(属性有:编号、姓名、读者类型、已借数量组成)、图书(属性有:编号、书名、出版社、定价、出版日期组成)两个实体集,实体集之间通过借阅(属性有:借期、还期组成)建
27、立联系。假定一位读者可以借阅多本图书,一本图书可以经多位读者借阅。一本图书一位读者可以借阅多次(不同时间)。,1.2.3 逻辑结构设计,将E-R模型转换成关系数据模型必须遵循以下规则: 一、E-R图中的每个实体型转换成一个关系模式,实体型中的实体的属性转换成关系模式的属性。实体的码也是关系模式的码。 二、E-R图中的联系,根据联系类型的不同,采用不同的方法使被它联系的实体所对应的关系彼此有某种联系。具体有以下几种不同的情况: 1. (1:1)联系的E-R图到关系模式的转换 (1)联系单独对应一个关系模式,则由联系的属性、参与联系的各实体集的主码属性构成关系模式,其主码为参与联系的实体集中任一方
28、的主码。例如,考虑图1.5描述的“班级(BJ)”与“正班长(BZ)”实体集E-R模型可设计如下关系模式: BJ(班级编号,院系,专业名,人数) BZ (学号,姓名) SY(学号,班级编号),1.2.3 逻辑结构设计,(2)联系不单独对应一个关系模式,则将联系的属性及一方的主码加入另一方实体集对应的关系模式中,主码仍为原实体方的主码。例如,图1.5“班级(BJ)”与“正班长(BZ)”实体集E-R模型可设计如下关系模式: BJ(班级编号,院系,专业名,人数) BZ (学号,姓名,班级编号 ) 或者 BJ(班级编号,院系,专业名,人数,学号) BZ (学号,姓名),1.2.3 逻辑结构设计,2. (
29、1:n)联系的E-R图到关系模式的转换 (1)联系单独对应一个关系模式,则由联系的属性、参与联系的各实体集的主码属性构成关系模式,n端的主码作为该关系模式的主码。例如,考虑图1.6描述的“班级(BJ)”与“学生(XS)”实体集E-R模型可设计如下关系模式: BJ(班级编号,院系,专业名,人数) XS (学号,姓名,专业名,性别,出生日期,总学分,备注) SY(学号,班级编号) (2)联系不单独对应一个关系模式,则将联系的属性及1端的主码加入n端实体集对应的关系模式中,主码仍为n端的主码。例如,图1.6“班级(BJ)”与“学生(XS)”实体集E-R模型可设计如下关系模式: BJ(班级编号,院系,
30、专业名,人数) XS (学号,姓名,专业名,性别,出生日期,总学分,备注,班级编号,1.2.3 逻辑结构设计,3. (m:n)联系的E-R图到关系模式的转换 对于(mn)的联系,单独对应一个关系模式,该关系模式包括联系的属性、参与联系的各实体集的主码属性,该关系模式的主码由各实体集的主码属性共同组成。例如,图1.7描述的“学生(XS)”与“课程(KC)”实体集之间的联系可设计如下关系模式: XS (学号,姓名,专业名,性别,出生日期,总学分,备注) KC(课程号,课程名称,类别,开课学期,学时,学分) XS_KC (学号,课程号,成绩) 关系模式XS_KC的主码是由“学号”和“课程号”两个属性
31、组合起来构成的一个主码,一个关系模式只能有一个主码。 至此,已介绍了根据E-R图设计关系模式的方法,通常这一设计过程称为逻辑结构设计。 在设计好一个项目的关系模式后,就可以在数据库管理系统环境下创建数据库、关系表及其他数据库对象,输入相应数据,并根据需要对数据中的数据进行各种操作。,1.2.3 逻辑结构设计,练习:将如下图所示的E-R图转换为关系模式,棱形框中的属性自己确定。 解:本题的E-R图转换为如下关系模式: 单位(单位号,地址,电话) 职工(职工号,姓名,性别,年龄,单位号),1.2.3 逻辑结构设计,练习:设有商业销售记账数据库。一个顾客(顾客姓名,单位,电话号码)可以买多种商品,一
32、种商品(商品名称,型号,单价)供应多个顾客。试画出对应的E-R图。 并根据E-R图转换成相应的关系模式。 解:本题对应的E-R图如图所示。 关系模式为: 顾客(顾客姓名,单位,电话号码); 商品(商品名称,型号,单价); 购买(顾客姓名,商品名称);,1.2.4 数据库物理设计,数据的物理模型即指数据的存储结构,如对数据库物理文件和索引文件的组织方式、文件的存取路径、内存的管理等。物理模型不仅与数据库管理系统有关,还和操作系统甚至硬件有关,物理模型对用户是不可见的。,2.4 案例1:活期储蓄管理系统数据库设计,问题的提出 在活期储蓄管理过程中,“储户”通过“存取款”与“储蓄所”发生业务联系。试
33、设计活期储蓄管理系统数据库的概念模型、关系模型并确定约束。,系统需求分析 通过对数据库用户(储蓄所业务人员)的调查,对用户的需求进行分析得知: 储户是指在某个储蓄所开户的人。该储蓄所称为储户的开户行。 一个储蓄所可以有多个储户,每个储户有惟一的账号。 每个储户可以在多个允许发生业务的储蓄所进行存取款。 储户按信誉分为“一般”和“良好”两种。信誉“一般”的储户不允许透支。信誉“良好”的储户可以透支,但不能超过5万元。 储户按状态分为:“正常”和“挂失”两种(分别用0、1表示)。状态为“正常”的储户允许存取款,状态为“挂失”的储户不允许存取款。,储户的信息有:账号、姓名、密码、电话、地址、信誉、存
34、款额、开户行编号、开户日期、状态等。 储蓄所的信息有:编号、名称、电话、地址、负责人 储户进行存取款时应该提供账号、存取标志(1:表示存款,0:表示取款)、存取金额、存取日期等信息,储蓄所首先要对储户的身份进行验证,对合法的储户再根据“信誉”判断是否可以发生此次业务。若发生业务则记录相应信息,修改储户的存款额。,概念模型设计 根据需求分析得知,此系统涉及“储户”和“储蓄所”两个实体集。两个实体集间通过“存取款”发生多对多的联系。其E-R图如图2-2所示。,图2-2活期储蓄管理系统的E-R模型,关系模型设计 由概念模型向关系模型的转换规则知,关系模型中包括3个关系:实体集“储户”和“储蓄所”分别
35、形成关系,实体的码就是关系的码;联系“存取款”形成一个关系,该关系的码应该包括两个实体的码,考虑到允许同一储户在同一储蓄所多次存取款,所以联系“存取款”对应的关系的主码中还应该包括“存取日期”。 另外,考虑到储户的信息项较多,而且有一部分信息(如:账号、姓名、电话、地址、开户行等)相对固定,其余信息(如:储户的密码、信誉、状态、存款额等)经常变化。因此,可以将实体储户的信息分割为储户基本信息和储户动态信息两个关系,两个关系的码均为账号。这样更利于数据的存储和维护,还可以提高数据的安全性。 储户基本信息(账号,名称,电话,地址,开户行,开户日期) 储户动态信息(账号,密码,信誉,存款额,状态)
36、储蓄所(编号,名称,电话,地址) 存取款(账号,储蓄所编号,存取标志,存取金额,存取日期),约束关系 实体完整性 实体“储户”的主码“账号”不能为空;实体“储蓄所”的主码“编号”不能为空。关系“存取款”中的主码“账号”和储蓄所“编号”和“日期”不能为空。 参照完整性 参照关系“存取款”的属性“账号”和储蓄所“编码”分别是被参照关系“储户”和“储蓄所”的外码。因此,参照关系“存取款”的属性“账号”的值必须是被参照关系“储户”中某一元组的“账号”的值。同样,参照关系“存取款”的属性储蓄所“编号”的值必须是被参照关系“储蓄所”中某一元组的“编号”的值。,用户定义的完整性 对信誉为“一般”的储户取款时
37、,只有当: “储户.存款额”“存取款.金额”0 时才可以发生取款业务。 同理,对信誉为“良好”的储户取款时,只要: “储户.存款额”“存取款.金额”50000(元) 时便可以发生取款业务。 关系结构描述 表2-17给出的活期储蓄管理系统的关系结构描述,实际上是给出了该系统数据库模式的型。,数据说明: 0 正常 0 一般储户,不允许透支 储户状态= 信誉= 1 挂失 1 允许透支5万元 0 取款 存取标志= 1 存款,补充知识,1、关系模型的结构 关系(relationship) 关系是满足一定条件的二维表。表中的一行称为关系的一个元组,用来存储事物的一个实例;表中的一列称为关系的一个属性,用来
38、描述实体的某一特征。表是由一组相关实体组成的集合。所以,表和实体集这两个词常常可以交替使用。 表2-1给出了实体集、关系、表等一系列术语之间的对照关系,补充知识,关系是一个行与列交叉的二维表,每一列(属性)的所有数据都是同一种数据类型的,每一列都有惟一的列名,列在表中的顺序无关紧要;表中的任意两行(元组)不能相同,行在表中的顺序也无关紧要。 表2-2以图书借阅系统为例给出了一个表的实例,补充知识,关系的特点: 关系的每一行定义实体集的一个实体,每一列定义实体的一个属性。 每一行必须有一个主码,主码是一个属性组(可以是一个属性),它能惟一的标识一个实体。 每一列表示一个属性,且列名不能重复。 列
39、的每个值必须与对应属性的类型相同。 列有取值范围,称为域。 列是不可分割的最小数据项。 行、列的顺序对用户无关紧要。,补充知识,关系中的术语 候选码(Candidate Key) 若关系中的某一属性组(或单个属性)的值能惟一的标识一个元组,则称该属性组(或属性)为候选码。 选择一个候选码作为关系的主码。,补充知识,2、关系代数 关系代数是一种抽象的查询语言。从数学的角度来看,关系是一个集合,关系的元组是集合的元素。因此,关系代数包括集合运算:交、并、差、乘,还有关系专有的运算:选择、投影、连接、除。 并(union) 设R和S是两个关系,它们的并运算是将两个关系中的所有元组构成一个新关系,即由
40、属于R或属于S的元素组成,该关系用RS,也可以记做R+S。,补充知识,【例1】有在职职工和离退修职工两个表,若需要所有职工的表,可以利用并运算实现。,表2-3 在职职工表,表2-4 离退修职工表S,补充知识,表2-5 新关系S,补充知识,差(difference) 设R和S是两个关系,R和S的差运算是由属于R而不属于S的所有元组构成新关系,也就是从关系R中减去关系S中的元组,该关系用R-S。差运算也要求两个关系对应属性的性质(属性名、属性的域等)必须一致。 【例2】某商店有本店商品表,接到不合格商品表后,需要将本店中的不合格商品去掉。可以利用差运算实现。,表2-6 本店商品表,表2-7 不合格
41、商品表,表2-8 新关系,补充知识,交(intersection) 设R和S是两个关系,R和S的交运算是由属于R并且也属于S的所有元组构成的一个新关系,即由关系R和关系S中公共的元组构成的新关系。该关系用RS。交运算也要求两个关系对应属性的性质(属性名、属性的域等)必须一致。 【例3】在【例2】中,找出本店内不合格的商品,可以用交运算实现。,表2-9 新关系,补充知识,乘(product) 设R和S是两个关系,R和S的乘运算是一个新关系(记为RS)结果是两个关系中所有元组按一定规则组合而成。关系R有m个属性,关系S有n个属性,则RS由(m+n)个属性;R有i个元组,S有j个元组,则RS有(ij
42、)个元组;每个元组的前m个属性是R的一个元组,后n个属性是S的一个元组。 说明:两个关系(集合)的乘运算,在集合论中也称为广义笛卡尔积。所以关系的乘运算也称为广义笛卡尔积。 【例4】现有学生表、必修课程表,每个学生必须学习所有必修课程,要求形成选课表。可以利用关系乘运算实现。,补充知识,表2-10 学生表,表2-11 必修课程表,补充知识,表2-12 新关系,补充知识,投影(projection) 关系R的投影运算是从R中选择某些属性的所有值组成的新关系。换言之,投影运算的结果是一个表的垂直方向的子集。 关系R的投影运算记为:A(R)。其中,A为R的一组属性列。 投影的结果将消除重复的元组。
43、例5:在表2-5所示的关系RS中 列出所有职工的名单,可以通过投影运算实现;,姓名(RS),补充知识, 列出职工姓名及其任职状态,可以通过投影运算实现。,姓名,状态(RS),姓名(RS)可记为2(RS),姓名,状态(RS)可记为2,4(RS)。 注意:姓名(RS)运算的结果将同名的两个“王红”去掉重复,只保留一个。,补充知识,选择(selection) 关系R的选择运算是从关系R中选择满足指定条件(用F表示)的元组构成的新关系。换言之,选择运算的结果是一个表的水平方向的子集。 关系R的选择运算记为:F(R)。其中,F是包括属性名的逻辑表达式,运算符有算术比较运算符:,和逻辑运算符:,(非、或、
44、与)。 【例2-6】 在表2-11中求出学分大于等于3的课程信息。 表2-13 学分3( RS),补充知识, 在表2-4中求所有在职男职工名单。 性别=男状态=1( RS),补充知识,性别=男( RS),连接(join) 关系R与关系S的连接运算是从两个关系的广义笛卡尔积中选取属性间满足一定条件的元组形成一个新关系。记作: 其中:A为包含S中的属性的表达式 B为包含R中属性的表达式 通常为关系比较符。 等值连接(equal join) 为“”的连接运算称为等值连接。关系R和S的等值连接是从R和S的广义笛卡尔积RS中选取A与B等值的那些元组,形成的关系。,补充知识,自然连接(natural jo
45、in) 关系R和S的自然连接是一种特殊的等值连接,它要求关系R和S中进行比较的分量必须是相同的属性组的一种连接,并且在结果中把重复的属性列去掉(只保留一个)。 自然连接记为: 一般的连接运算是从行的角度进行的。但自然连接还需要取消重复列,所以自然连接是同时从行和列的角度进行运算。 自然连接是构造新关系的有效方法,是关系代数中常用的一种运算,在关系数据库理论中起着重要作用。利用投影、选择和自然连接运算可以任意地分解和构造关系。 一般地,自然连接使用在R和S有公共属性的情况中。如果两个关系没有公共属性,那么它们的自然连接就转化为广义笛卡尔积。,补充知识,【例2-7】设图书借阅信息如表2-15所示,
46、图书信息如表2-16 所示,求各读者借阅图书的信息。,表2-15 借阅信息表borrowinf,补充知识,表2-16 图书信息表books,补充知识,求各读者借阅图书的信息,可通过等值连接实现: borrowinf books 图书编号 = 编号 结果为,补充知识,除(divide) 设关系R的属性可以分成互不相交的两组,用X、Y表示(XY为空集,XY为R的全部属性),则关系R可以表示为:R(X,Y)。 设R(X,Y)和S(Y,Z)是两个关系,其中R中的Y和S中的Y可以有不同的属性名,但必须出自相同的域。R与S的除运算是一个新关系P(X)(记为RS),它的属性为属性组X,设S在Y上的投影y(S
47、)有j个元组,RS由所有满足以下条件的元素构成:元组在X上的分量值x的象集YX包含S在Y上投影的集合。,补充知识,【例2-8】已知学生选课表R,要找出同时选修课号为C601、C605两门课程的学生的学号。指定的课程号和对应课程名构成的关系记为S,则该问题可以用RS表示。,选课表 R,S,RS,补充知识,3、关系代数与数据查询 在关系代数中,关系代数运算经过有限次复合而成的式子称为关系代数表达式,它的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。 【例2-9】以图书借阅信息表(表2-15)、 图书信息表(表2-16)为例,完成下列任务: (1) 每本图书的编号和书名;
48、 (2) 每位读者的编号和所借图书的书名; (3) 2004年8月以前的图书未还情况读者编号和所借图书书名; (4) 编号为:2002060328的读者所借图书信息。,补充知识,每本图书的编号和书名; 解: R1=编号,书名(books),R1,补充知识,(2) 每位读者的编号和所借图书的书名; 解: R2= 读者编号,书名 (borrowinf books) 图书编号=编号,R2,补充知识,(3) 2004年8月以前的图书未还情况读者编号和所借图书书名; 解: R3=读者编号,书名(借期2004-08-01还期=NULL(borrowinf books) ) 图书编号=编号,R3,补充知识,
49、(4) 编号为2002060328的读者所借图书信息。 解: R4=读者编号=2002060328 (borrowinf books ) 图书编号 = 编号,R4,补充知识,补充知识,4、关系模型的三类完整性约束 (1) 实体完整性 实体完整性规则: 若属性A是关系R的主属性,则A不能取空值。 (2)参照完整性规则 外码和参照关系 设F是基本关系R的一个或一组属性,但不是关系R的主码(或候选码)。如果F与基本关系S的主码KS相对应,则称F是基本关系R的外码,并称基本关系R为参照关系,称基本关系S为被参照关系。 例如:在授课系统的关系模型中: 课程(课号,课名,学分) 课号关系课程的主码 教师(
50、工号,姓名,职称,课号) 课号是关系教师的外码 参考书(书号,书名,课号) 关系教师是参照关系,关系课程是被参照关系。,参照完整性规则 参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码KS相对应,则对于R中的每个元组在F上的值必须满足:或者取空值(F的每个属性均为空值),或者等于S中某个元组的主码值。 例如,在授课系统的关系模型中,关系教师中的外码“课号”只能是下面两类值: (1) 空值。表示还未给该教师安排课。 (2) 非空值,但此值必须为被参照关系课程中某一门课程的“课号”。 注意:在实际应用中,外码不一定与对应的主码同名。 在关系数据库中,表与表之间的联系是通
51、过公共属性实现的。这个公共属性往往是一个表的主码,同时是另一个表的外码。,补充知识,(3)、 用户定义的完整性 用户定义的完整性就是针对某一具体要求来定义的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。 例如,某个属性必须取惟一值;某些属性之间应满足一定的函数关系;某个属性的取值范围在0400之间等。关系模型应提供定义和检验这类完整性的机制,以便系统用统一的方法处理它们,而不需要由应用程序来承担这一功能。 所以,用户定义的完整性通常是定义属性取值的约束,即对属性的值域的约束。对属性的值域的约束也称为域完整性规则是指对关系中属性取值的正确性限制。包括数据类型、精度、取值范围、是否允
52、许空值等。,补充知识,(4)、完整性规则检查 为了维护数据库中数据的完整性,在对关系数据库执行插入、删除和修改操作时,就要检查是否满足以上三类完整性规则。 当执行插入操作时 首先检查实体完整性规则,插入行的主码属性上的值,是否已经存在。若不存在,可以执行插入操作;否则不可以执行插入操作。 再检查参照完整性规则,如果是向被参照关系插入,不需要考虑参照完整性规则;如果是向参照关系插入,插入行在外码属性上的值是否已经在相应被参照关系的主码属性值中存在。若存在,可以执行插入操作;否则不可以执行插入操作,或将插入行在外码属性上的值改为空值后再执行插入操作(假定该外码允许取空值)。 最后检查用户定义完整性
53、规则,检查被插入的关系中是否定义了用户定义完整性规则,如果定义了,检查插入行在相应属性上的值是否符合用户定义完整性规则。若符合,可以执行插入操作;否则不可以执行插入操作。,补充知识,当执行删除操作时 一般只需要检查参照完整性规则。如果是删除被参照关系中的行,则应检查被删除行在主码属性上的值是否正在被相应的参照关系的外码引用,若没被引用,可以执行删除操作,若正在被引用,有三种可能的做法:不可以执行删除操作(拒绝删除),或将参照关系中相应行在外码属性上的值改为空值后再执行删除操作(空值删除),或将参照关系中相应行一起删除(级联删除)。 当执行修改操作时 因为修改操作可看成先执行删除操作,再执行插入
54、操作,因此是上述两种情况的综合。,补充知识,1.3 数据库应用系统,1. ODBC数据库接口 ODBC即开放式数据库互连(Open DataBase Connectivity),是微软公司推出的一种实现应用程序和关系数据库之间通信的接口标准。符合标准的数据库就可以通过SQL语言编写的命令对数据库进行操作,但只针对关系数据库。目前所有的关系数据库都符合该标准,如Oracle、SQL Server、MySQL、DB2、Sybase、Access等。ODBC本质上是一组数据库访问API(应用程序编程接口),由一组函数调用组成,核心是SQL语句。,1.3.1 数据库的连接方式,1.3 数据库应用系统,
55、在具体操作时,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。 MySQL是通过MySQL Connector/ODBC(MyODBC驱动程序系列)为ODBC提供支持的,图1.8说明了MySQL使用ODBC连接方式的结构。,1.3.1 数据库的连接方式,图1.8 MyODBC数据库接口,1.3.1 数据库的连接方式,2. ADO数据库接口 ADO(ActiveX Data Object)是微软公司开发的基于COM的数据
56、库应用程序接口,通过ADO连接数据库,可以灵活地操作数据库中的数据。 使用ADO访问关系数据库有两种途径:一种是通过ODBC驱动程序,另一种是通过数据库专用的OLE DB Provider,后者有更高的访问效率。,1.3.1 数据库的连接方式,3. ADO.NET数据库接口 ADO.NET数据模型从ADO发展而来,但它不只是对 ADO的改进,而是采用了一种全新的技术。主要表现在以下几个方面: ADO.NET不是采用ActiveX技术,而是与.NET框架紧密结合的产物。 ADO.NET包含对XML标准的完全支持,这对于跨平台交换数据具有重要的意义。 ADO.NET既能在与数据源连接的环境下工作,
57、又能在断开与数据源连接的条件下工作。特别是后者,非常适合于网络应用的需要。因为在网络环境下,保持与数据源连接,不符合网站的要求,不仅效率低,付出的代价高,而且常常会引发由于多个用户同时访问时带来的冲突。因此ADO.NET系统集中主要精力用于解决在断开与数据源连接的条件下数据处理的问题。 图1.9显示了 ADO.NET 架构总览。,1.3.1 数据库的连接方式,图1.9 通过ADO.NET访问数据库的接口模型,数据层是实现ADO.NET断开式连接的核心,从数据源读取的数据先缓存到数据集中,然后被程序或控件调用。数据源可以是数据库或XML数据。 数据提供器用于建立数据源与数据集之间的联系,它能连接
58、各种类型的数据,并能按要求将数据源中的数据提供给数据集,或者从数据集向数据源返回编辑后的数据。 MySQL使用MySQL Connector/NET实施了所需的ADO.NET接口,并将其集成到了ADO.NET aware工具中。从而使开发人员能够方便地创建需要安全和高性能数据连接(与MySQL)的.NET应用程序。MySQL Connector/NET是用纯C#语言编写的可完全管理的ADO.NET驱动程序。,1.3.1 数据库的连接方式,4. JDBC数据库接口 在JDBC API中有两层接口:应用程序层和驱动程序层,前者使开发人员可以通过SQL调用数据库和取得结果,后者处理与具体数据库驱动程
59、序的所有通信。 使用JDBC接口对数据库操作有如下优点: (1)JDBC API与ODBC十分相似,有利于用户理解; (2)使编程人员从复杂的驱动器调用命令和函数中解脱出来,而致力于应用程序功能的实现; (3)JDBC支持不同的关系数据库,增强了程序的可移植性。 使用JDBC的主要缺点:访问数据记录的速度会受到一定影响,此外,由于JDBC结构中包含了不同厂家的产品,这给数据源的更改带来了较大麻烦。 MySQL通过MySQL Connector/J驱动实现JDBC接口,它提供了与使用Java编程语言开发的客户端应用程序的连通性。MySQL Connector/J是一种纯Java程序,实施了3.0版JDBC规范,并能使用MySQL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论