• 数据库的三个范式 > 数据库基础与应用
  • 数据库基础与应用

    免费下载 下载该文档 文档格式:PPT   更新时间:2008-08-02   下载次数:1   点击次数:19
    文档基本属性
    文档语言:
    文档格式:ppt
    文档作者:nc
    关键词:
    主题:
    备注:
    点击这里显示更多文档属性
    数据库基础与应用
    主讲:杨林
    yanglin78616813@126.com
    第一章数据库系统概述
    学习目标
    了解数据处理技术的各个阶段的不同特点;
    了解和掌握实体,联系,属性,码等概念的含义,以及ER图的应用;
    了解数据库设计中的各种逻辑结构模型和特点,特别是关系数据模型的特点;
    了解数据库系统的构成,数据库用户的分类,数据库体系结构,存取数据库中数据的大致工程等内容.
    1.1数据处理技术发展经历
    基本概念:
    数据:是人们描述客观事务及其活动的抽象符号表示.是人们互相之间进行思想文化交流的工具.
    是数据库系统研究和处理的对象.通常指用符号记录下来的,可以识别的信息.
    数据可以是声音,文字,图形,绘画,图像等.
    基本概念:
    数据处理:是对数据进行加工的过程,对数据进行的查找,统计,分类,修改,变换等运算都属于加工.
    数据处理是指从某些已知的数据出发,推导加工出一些新的数据,这些新的数据又表示了新的信息.
    数据处理手段的发展:
    人工管理
    文件管理
    数据库管理
    分布式数据库管理
    1.1.1人工管理阶段
    人工管理阶段的数据管理有下列特点:
    数据不保存在计算机内.
    没有专用的软件对数据进行管理.
    只有程序(program)的概念,没有文件(file)的概念.数据的组织方式必须由程序员自行设计与安排.
    数据面向程序.即一组数据对应一个程序.
    1.1.2文件管理阶段
    文件系统阶段的数据管理有以下特点:
    数据以"文件"形式可长期保存在外部存储器的磁盘上.
    数据的逻辑结构与物理结构有了区别,但比较简单.
    文件组织已多样化.有索引文件,链接文件和直接存取文件等.
    数据不再属于某个特定的程序,可以重复使用,即数据面向应用.
    对数据的操作以记录为单位.
    随着数据管理规模的扩大,数据量急剧增加,文件系统显露出三个缺陷:
    数据冗余(redundancy)
    数据不一致(inconsistency)
    数据联系弱(poor data relationship)
    1.1.3数据库管理阶段
    数据库阶段的数据管理具有以下特点:
    采用数据模型表示复杂的数据结构.
    数据共享.
    有较高的数据独立性.
    增加了系统的灵活性,数据粒度缩小.
    数据库系统为用户提供了方便的用户接口.
    数据库管理系统提供以下四方面的数据控制功能:数据安全性,数据的一致性,数据库的并发控制和数据库的恢复.
    1.1.4分布式数据库管理阶段
    分布式数据库系统主要有以下特点
    数据库的数据物理上分布在各个场地,但逻辑上是一个整体.
    每个场地既可以执行局部应用(访问本地DB),也可以执行全局应用(访问异地DB).
    各地的计算机由数据通信网络相联系.本地计算机单独不能胜任的处理任务,可以通过通信网络取得其它DB和计算机的支持.
    1.2概念数据模型
    概念数据模型:
    是人们对现实世界的认识和抽象,不考虑在计算机上的具体实现,也可以说与计算机的具体实现无关,而只考虑数据本身的结构和相互之间的自然联系.
    表示概念数据模型最常用的工具:实体联系(Entity Relationship)模型,简称ER模型.由于是以图形方式表现,又称为实体联系图,简称ER图.
    1.2.1 ER模型的有关概念
    1,实体:是现实世界中存在的可以相互区别的事务或活动的抽象(数据描述).通常,直接称事务或活动为实体.例如:一本书.
    实体集:是指同一个实体的集合.例如:一个班级的学生.
    实体型:是对同类实体的共有特征的抽象定义.例如:人的共有特征为姓名,年龄,籍贯,职业,学历等由此可以定义'人'这个实体型.
    实体值:就是符合实体型定义的每个具体实体.例如:由上面实体型定义{张三,35,江苏,教师,研究生}
    实体,实体集,实体型,实体值在以后的叙述中均用'实体'一词代替.
    2,联系:是实体之间的相互联系,它通常表示一种活动.例如:在一张订单中涉及商品,顾客和销售员之间的关系,即某个客户从某个销售员手里订购某件商品.
    联系集:是同一类联系的集合.例如:一次展销会上的全部订单.
    联系型:是对同类联系的共有特征的抽象定义.
    联系,联系集,联系型在本课程中也将由'联系'一词代替.
    3,属性:是描述实体或联系中的一种特征,一个实体或联系通常具有多个特征,需要多个相应属性来描述.例如:描述'人'需要使用姓名,年龄,籍贯,职业,学历,住址,电话等属性.
    码:或称键是实体间互相区别的一种唯一标识.例如:人的身份证号码.主属性与非主属性
    域:是实体中相应属性的取值范围.例如:性别E{男,女}
    4,联系分类:是讨论两实体型之间的联系情况.
    按照一个实体型中的实体个数与另一个实体型中的实体个数的对应关系,可分类为:1对1联系,1对多联系,多对多联系.
    (1) 1对1联系
    若一个实体型中的一个实体至多与另一个实体型中的一个实体发生关系,同时另一个实体型中的一个实体至多与该实体型中的一个实体发生关系,则这两个实体型之间的联系被定义为1对1联系,简记为1:1.
    例如:一个学生与其学生证号码.
    (2)1对多联系
    若一个实体型中的一个实体与另一个实体型中的任意多个实体(含0个)发生关系,而另一个实体型中的一个实体至多与该实体型中的一个实体发生关系,则这两个实体型之间的联系被定义为1对多联系,简记为1:n.例如:一个班级对多个学生.
    (3)多对多联系
    若一个实体型中的一个实体与另一个实体型中的任意多个实体(含0个)发生关系,而另一个实体与该实体型中的任意多个实体(含0个)发生关系,则这两个实体型之间的联系被定义为多对多联系,简记为m:n.例如:一个学生选修多门课程;一门课程被多个学生选修.
    1.2.2 ER模型
    ER模型是人们描述数据及其联系的概念数据模型,是数据库应用系统设计人员和普通非计算机专业用户进行数据建模和沟通与交流的有力工具.特点:直观易懂,简单易行.
    进行数据库应用系统设计时,首先要根据用户需要建立合理的ER模型,然后再建立与计算机管理系统相匹配的逻辑数据模型和物理数据模型,最后才能在计算机系统上安装,调试和运行数据库.
    1,ER模型中的基本构件
    矩形--实体,框内标注实体名
    菱形--联系,框内标注联系名
    椭圆型--属性,框内标注属性名
    连线表示实体,联系与属性之间的所属关系或实体与联系之间的相连关系.
    2,各种联系的ER图表示
    1对1
    1 1
    实体1
    联系
    实体2
    1对n
    1 n
    m对n
    m n
    3,使用ER模型举例
    book page16
    实体1
    联系
    实体2
    实体1
    联系
    实体2
    1.3逻辑数据模型

    数据库的逻辑数据模型又称为结构数据模型,或直接简称为数据模型,相继出现:层次,网状,关系和对象四种数据模型.
    1.3.1层次数据模型
    层次数据模型是最早出现和使用的数据模型,层次模型是一个树型结构模型,整个树有且只有一个根结点;其余结点都是它的孩子或子孙;每个结点只有1个双亲结点,但可以有0~n个孩子结点,没有孩子的结点被称为叶子结点.每个结点对应一个记录型,即概念模型中的一个实体型.

    层次模型有两个缺点:一是只能表示1:N联系,虽然系统有多种辅助手段实现M:N联系但较复杂,用户不易掌握;二是由于层次顺序的严格和复杂,引起数据的查询和更新操作很复杂,因此应用程序的编写也比较复杂.
    1.3.2网状数据模型
    网状数据模型是一个图结构模型,是对层次模型的扩展.允许有多个结点无双亲,允许每个结点无双亲.层次模型是网状模型的一个特例.
    网状模型的特点是记录之间联系通过指针实现,M:N联系也容易实现(一个M:N联系可拆成两个1:N联系),查询效率较高.
    网状模型的缺点是数据结构复杂和编程复杂.
    1.3.3关系数据模型
    关系数据模型是数据库产品的主导数据模型.它是建立在集合论,数理逻辑,关系理论等数学理论基础之上.关系数据模型结构简单,符合人的思维逻辑.
    关系模型是一种简单的二维表格结构,概念模型中的每个实体和实体之间的联系都可以直接转化为二维表格形式.每个二维表称为一个关系.表头称为关系的型;表体称为关系的值;每一行数据称为一个元组;每一列数据称为属性,列标题称为属性名.
    采用关系模型建立数据库具有的特点:
    1,数据结构单一
    二维表,符合人的习惯,也便于计算机实现.
    2,采用集合运算
    操作对象是关系,结果依然是关系,对关系的操作可以一次一集合.
    3,数据完全独立
    用户对数据库的查询和更新,只要知道数据的逻辑表示以及数据间的逻辑结构,就可以直接操作数据库中的数据.
    4,数学理论支持
    关系模型具有严格的数学定义,具有成熟的数学理论依据.
    1.3.4对象数据模型
    对象数据模型是数据库技术与面向对象程序设计的方法相结合的成果.主要适用于一些特殊领域,处理对象不仅是数值,文本还包括图形,图像,声音等多媒体数据信息.面向对象数据模型表达信息的基本单位为对象.
    面向对象模型中也有型和值的区别.对象型(类)是对具有共同特征的事务的抽象定义.对象值是对象型中的一个具体事务.
    面向对象模型区别于传统数据模型的本质特征在于对象具有封装性,继承性和多态性.
    1.4数据库系统简介
    1.4.1数据库系统构成
    数据库系统是安装了数据库和数据库管理系统的计算机系统.
    数据库管理系统在计算机操作系统的支持下对保存在外部存储器上的数据库进行有效的管理,维护和使用.在数据库管理系统之上通常需要数据库应用系统开发工具软件,应用程序系统.数据库应用系统通常提供可视化操作界面共终端用户使用.
    1.4.2数据库系统用户
    数据库系统用户通常包括四种:
    数据库管理员DBA:负责数据库系统的建立,管理,运行,维护,监控等系统工作,以及用户登记,存取数据权限分配等服务性工作.
    数据库设计员:根据用户的需求,负责建立相应的数据库.
    应用程序员:负责相关数据库的程序开发.
    终端用户:使用数据库的群体,是建立数据库为之服务的对象.
    1.4.3数据库体系结构
    三级模式结构和两级存储结构
    概念模式是数据库中全部数据的整体逻辑结构的描述.
    外模式是用户与数据库系统的接口,是用户用到的那部分数据的描述.
    内模式是数据库在物理存储方面的描述,定义所有内部记录类型,索引和文件的组织方式,以及数据控制方面的细节.
    模式/内模式映象存在于概念级和内部级之间,用于定义概念模式和内模式之间的对应性.
    外模式/模式映象存在于外部级和概念级之间,用于定义外模式和概念模式之间的对应性.
    数据库系统的三级模式和两级映像确保了数据的逻辑独立性和物理独立性.
    数据的逻辑独立性是当数据库的整体逻辑结构发生变化时,通过调整外模式和模式之间的映像使得外模式中的局部数据及其结构(外模式定义)不变,从而使外模式上的应用程序也不用修改.
    数据的物理独立性是当数据库的存储结构(内模式定义)发生变化时,通过调整模式和内模式之间的映像,仍然能够保持数据库的整体模式不变,当然其所有的外模式及应用程序都不变.
    1.4.4 DBMS的主要功能
    1,数据的定义和操纵
    DBMS提供数据定义语言DDL和数据操纵语言DML及其相应的编译或解释程序,使用户能够进行数据库系统的各级模式定义,并能够对数据库进行查询,插入,删除,修改等操纵数据库的操作.
    2,数据库管理控制
    DBMS提供一组数据库管理控制程序,用以控制数据库系统的正常运行.
    3,数据库辅助服务
    DBMS提供一组数据库服务程序,完成诸如数据库初始创建,数据库转存,数据库恢复等辅助服务.
    4,提供使用数据库工具
    DBMS提供一组高效,简单方便的使用数据库的工具,帮助用户按照提示内容操作完成各种相应的任务.
    5,建立和维护数据字典
    数据库系统的三级模式定义都被DBMS保存到数据字典.DBMS的每一步操作都得到数据字典的检查和验证,以确保数据库操作的合法,安全,有效.
    1.4.5使用数据库系统存取数据过程
    Book page29
    1.4.6关系数据库系统简介
    Book page30
    第二章 关系运算
    学习目标
    了解和掌握关系数据结构中涉及到的域,笛卡尔积,关系,关系模式等有关内容的含义.
    掌握关系的实体完整性和参照完整性的定义.
    掌握关系代数中的并,交,差,笛卡尔积运算,以及选择,投影和连接运算.
    2.1关系数据结构
    关系数据结构非常单一,它就是一张具有行列结构的二维表.
    1,域:是具有相同特性的数据集合.
    例如:{东,南,西,北}
    2,笛卡尔积:是定义在一组域上的集合.
    例如:一组域D1,D2…Dn,笛卡尔积表
    示为D1xD2x…Dn
    笛卡尔积的每个元素由下式求出:
    D1xD2x…Dn=|(d1,d2…dn)| di E Di,1<=i=1
    3,关系:是笛卡尔积的一个子集,若笛卡尔积具有n个域,则该笛卡尔积上的关系被称为n元关系.
    一个n元关系具有下面六个性质:
    (1)关系中每列的数据属于同一个域,每一列称为一个属性,列名称为属性名,每一列的值称为属性值,同一关系中的所有属性名必须是可区分的.
    (2)不同列允许对应同一个域,此时列名不宜直接采用域名,当一个列对应一个域时,既可以直接采用域名,也可以重新命名.

    (3)一个关系中属性的次序在理论上可以任意.
    (4)一个关系中的任意两个元组不允许完全相同.
    (5)一个关系中的元组的次序可以任意.
    (6)一个元组中的每个属性值都必须是单值,不可再分.
    4,关系模式:是一个关系的型,即一个关系的具体结构,通常被形式化定义为:
    R(U, D, DOM, F, I)
    R为关系名;
    U为该关系中的所有属性名集合;
    D为该关系的所有定义域的集合;
    DOM为属性向域映射的集合,给出属性和域之间的对应关系;
    F为该关系中各属性之间的数据依赖的集合;
    属性间的数据依赖的分析主要是找出关系的主码属性.
    I为该关系中所定义的完整性规则的集合.
    关系的完整性规则的建立是为了保证数据库数据的正确性和一致性.

    一个关系模式可以简化为R(A1,A2,...An)
    R为关系名;A1,A2,...An为各属性名;主码属性下用下划线标记.
    一个关系可以只有模式而没有值(空关系),但不能没有模式只有值.
    5,码:又称为键
    (1)超键:关系中能唯一标识每个元组属性或属性组.
    (2)候选码:关系中能唯一标识每个元组的最少属性或属性组.
    (3)主码:从候选码中选择一个作为该关系的主码,数据库系统将按主码标识和排序每个元组.
    (4)备用码:除了主码之外的所有候选码.
    (5)外码:在关系R1中的属性或属性组在关系R2中作为主码.
    (6)主属性和非主属性:包含在任何候选码中的属性称为主属性,其他属性称为非主属性.
    2.2关系完整性
    关系完整性就是关系模型中的数据的正确性,一致性和有效性.
    1,实体完整性
    在一个关系中,主码是对象的唯一标识,若主码为空,则表明该对象无法表示,主码绝对不能为空值.
    实体完整性规则:关系的主码不能取空值.

    2,参照完整性
    在一个关系模型中,关系R1的外码对应关系R2的主码,外码与主码不仅要定义在同一个域上,而且外码的取值不能超出主码的取值,否则将为非法数据.
    参照完整性规则:在两个参照和被参照关系中,参照关系中每个元组的外码或者为空,或者等于被参照关系中的某个元素的主码.
    3,用户定义完整性
    当用关系模型来描述对象时,关系中的每个属性除了用定义域或对应的数据类型进行取值约束外,有时还需要定义一些附加条件.
    用户定义完整性规则包括对每个关系每个属性的取值限制的具体定义,它和其它两个完整性规则都被记录在DBMS的数据字典中.
    2.3关系运算

    关系是元组的集合,因此关系比一般的集合运算复杂,对关系运算不仅可以采用传统的集合运算,还可以采用专门的运算.
    2.3.1传统的集合运算
    传统的集合运算包括并(∪), 交(∩),差(-)和笛卡尔积(ⅹ).
    设一个元组变量t
    t属于关系R:t∈R;
    t不属于关系R:t∈R;
    假定关系R中一个属性A,则t.A表示属性A在元组t中的值;
    六个比较运算符(θ运算符):
    大于(>),小于(=),
    小于等于(<=),等于(=),不等于()
    逻辑表达式由与∧,或∨,非-连接比较运算符构成
    1,并运算
    设两个关系R和S具有完全相同的结构,则R和S并仍是一个关系,结构与R和S相同,值是R和S的所有元组组成的集合.(R和S的共同元组,则结果只出现一个)
    R∪S={t|t∈R∨t∈S} (满足交换率R∪S=S∪R)
    2,交运算
    设两个关系R和S具有完全相同的结构,则R和S交仍是一个关系,结构与R和S相同,值是R和S共同具有的元组组成的集合.
    R∩S={t|t∈R∧t∈S} (满足交换率R∩S=S∩R)
    3,差运算
    设两个关系R和S具有完全相同的结构,则R和S差仍是一个关系,结构与R和S相同,值是从R中去掉S中同时出现的元组后,有R中剩余的元组组成的集合.
    R-S={t|t∈R∧t∈S}
    4,笛卡尔积
    设一个具有n个属性的关系R和另一个具有m个属性的关系S,则R和S的笛卡尔积仍是一个关系,结构是R和S的结构之连接,即前n个属性来自R,后m个属性来自S,属性个数为n+m,值是R中每个元素连接S中每个元素构成的元组集合.
    RⅹS={tRtS|tR∈R∧tS∈S}
    2.3.2专门的关系运算
    专门的关系运算包括选择(σ),投影( π ),连接( )和除(÷).
    1,选择运算(select)
    单目运算,它从一个关系R中选择满足条件的所有元组,同R具有相同的结构.选择运算提供横向划分关系的手段.设F(t)为元组逻辑表达式
    σF(R)={ t | t∈R ∧ F(t)= true }
    2,投影运算(project)
    单目运算,它从一个关系R中按所需顺序选择若干个属性构成新关系,新关系的元组数小于等于原关系的元组数.选择运算提供纵向划分关系的手段.
    πA(R)≡{ t.A|t∈R }
    3,连接运算(join)
    双目运算,把两个关系R和S按相应的属性值的比较条件连接起来,它是R和S的笛卡尔积的一个子集.比较条件就是比较运算表达式,相应的连接就称为该运算符连接.
    4,除法(division)
    设关系R和S的元数分别为r和s(设r>s>0),那么R÷S是一个(r-s)元的元组的集合.(R÷S)是满足下列条件的最大关系:其中每个元组t与S中每个元组u组成的新元组必在关系R中.
    2.3.3综合运算举例
    Book Page 47
    第三章 关系规范化基础
    学习目的:
    会根据一个关系的定义,分析出属性间的各种函数依赖,并能够得出相应的最小函数依赖集.
    掌握关系的第一,第二,第三以及BC范式的定义,会根据一个关系的最小函数依赖集确定它的规范化级别.
    会对一个具体关系进行规范化,使之达到所要求的规范化级别.
    3.1数据依赖
    每一种类型的数据和数据之间的联系,在关系数据库系统中都是利用相应的关系来描述的.这样事务之间以及事务内部的各特征之间的相互依赖和相互制约关系就自然反映到关系数据库中的各个关系之间和关系内部的各属性之间.因为关系是由属性构成的,所以数据依赖的基础是属性之间的数据依赖.
    数据依赖包括函数依赖和多值依赖,本课只讨论函数依赖.
    定义1:
    设一个关系为R(U),X和Y为属性集U上的子集,若对于元组中X上的每个值都有Y上的一个唯一值与之对应,则称X和Y具有函数依赖关系,并称X函数决定Y,或称Y函数依赖于X,记作X->Y,称X为决定因素.
    例如:身份证号码->姓名
    定义2:
    设一个关系为R(U),X和Y为属性集U上的子集,若X->Y且Y不属于X,则称X->Y 为非平凡函数依赖,否则若Y属于X则必有X->Y ,称此X->Y 为平凡函数依赖.
    例如:身份证号->姓名 非平凡函数依赖
    {身份证号,性别}->性别 平凡函数依赖
    定义3:
    设一个关系为R(U),X和Y为属性集U上的子集,若X->Y,同时X的一个真子集X'也能够函数决定Y,即X' ->Y,则称X部分函数决定Y,或Y部分函数依赖于X,记作XP>Y,否则若不存在一个真子集X',使得X'也能够函数决定Y,则称X完全函数决定Y,或Y完全函数依赖于X,记作XF>Y. X->Y的部分函数依赖也称为局部函数依赖.
    例如:book page 53
    定义4:
    设一个关系为R(U),X,Y和Z为属性集U上的子集,其中X->Y, Y->Z,但Y十> X,Z不属于Y,则存在X->Z,称为传递函数依赖,即X传递函数决定Z,Z传递函数依赖于X.
    必须强调Y十> X,否则X->Z则称为直接函数依赖,而非传递函数依赖.同理必须强调Z不属于Y.
    例如:学号->系号;系号->系主任;
    则学号->系主任
    定义5:
    设一个关系为R(U),X,Y和Z为属性集U上的子集,若X->Y,则存在XZ->YZ和XZ->Y.(增广性规则)
    例如:职工号->职务
    则(职工号,性别)->(职务,性别)

    定义6:
    设一个关系为R(U),X和Y为属性集U上的子集,若X->Y,并且为完全非平凡函数依赖,同时Y为单属性,则称X->Y为R的最小函数依赖.由R中所有最小函数依赖构成R的最小函数依赖集,其中不含有冗余的传递函数依赖.
    例如:
    book page 54 例3-4,3-5
    定义7:
    设一个关系为R(U),X为U的子集,若X能够函数决定U中的每个属性,并且X的任何真子集都不能函数决定U中的每个属性,则称X为关系R的一个候选码.
    例如:book page 55 例3-7
    分析一个关系的函数依赖,完全是根据关系模式的语义进行,绝不能根据一个关系的某个实例来判定.例如属性在元组上是否可以为空或重复,由语义决定而非实例.
    函数依赖的一些常用规则:
    (1)自反性
    (2)增广性
    (3)传递性
    (4)合并性
    (5)分解性
    (6)伪传递性
    (7)复合性
    (8)自增性
    3.2关系规范化
    在关系数据库中的每个关系都需要进行规范化,使之达到一定的规范化程度,从而提高数据的结构化程度,共享性,一致性和可操作性.
    关系规范化分为六个级别,从低到高:
    第一范式,第二范式,第三范式,BC范式,第四范式,第五范式
    通常只要求规范到第三范式,再向后有可能破坏数据的无损连接性和函数依赖性.
    3.2.1第一范式
    定义8:
    设一个关系为R(U),若U中的每个属性都是不可再分的,或者都是不被其他属性所包含的独立属性,则称关系R(U)符合第一范式(1NF).
    关系数据库中的每个关系都必须达到第一范式(最低要求),否则称为非规范化的关系.若一个关系数据库中的所有关系都达到第一范式要求,则称为第一范式数据库.
    3.2.2第二范式
    定义9:
    设一个关系为R(U),它满足第一范式,若R中不存在非主属性对候选码的部分函数依赖,则称关系符合第二范式(2NF).
    一个关系只满足第一范式,那可能会带来数据冗余和操作异常.操作异常具体包括插入异常,删除异常和修改异常.操作异常又常常称为更新异常或存储异常.
    若一个关系的所有候选码都是单属性,满足第一范式也就满足第二范式.
    1,修改异常.譬如教师教三门课程,在关系中就会有三个元组.如果他的地址变了,这三个元组中的地址都要改变.若有一个元组中的地址未更改,就会造成这个教师的地址不惟一,产生不一致现象.
    2,插入异常.如果一个教师刚调来,尚未分派教学任务,那么要将教师的姓名和地址存储到关系中去时,在属性课程和课程号上就没有值(空值).在数据库技术中空值的语义是非常复杂的,对带空值元组的检索和操作也十分麻烦.
    3,删除异常.如果要取消教师的教学任务,那么就要把这个教师的元组删去,同时也把教师的地址信息从表中删去了.这是一种不合适的现象.
    3.2.3第三范式
    设一个关系为R(U),它满足第一范式,若R中不存在非主属性对候选码的传递函数依赖,则称关系符合第三范式(3NF).
    若关系R中不存在非主属性对候选码的传递函数依赖,也就不包括部分函数依赖.因此若达到第三范式也就包括达到第二范式.
    若关系只满足第二范式,而不满足第三范式,则仍然存在由传递依赖带来的数据冗余和操作异常问题.
    3.2.4 BC范式
    定义11:
    设一个关系为R(U),它满足第一范式,若R中不存在任何属性对候选码的传递函数依赖,则称关系符合BC范式(BCNF).
    等价描述:若R中的所有属性都完全直接依赖于候选码,或者说R的最小函数集中的的所有函数依赖的决定因素都是候选码,则R符合BCNF.
    BCNF要求去除第三范式中因主属性存在部分依赖或传递依赖而带来的数据冗余和操作异常.
    若一个第三范式关系的都只存在单个候选码,满足第三范式也就满足BC范式.
    小结:
    关系规范化的过程就是合理分解关系的过程,就是概念单一化的过程,就是把不适当的属性依赖转化为关系联系的过程.在建立和设计数据库时,要切记概念单一化的原则,即用一个关系反映一个对象,每个关系的所用属性都是对主码的具体描述,或者是依附于主码的,另外在必要时附加一些联系属性,作为外码使用.千万不要让一个关系大而全的包含许多对象的信息,出现不是直接描述主码的属性的存在.
    第四章 结构化查询语言SQL
    学习目标
    掌握数据库模式的建立和删除的命令格式与作用.
    掌握基本表结构的建立,修改与删除的命令格式与作用.
    掌握基本表内容的插入,修改与删除的命令格式与作用.
    掌握图的建立,修改与删除的命令格式与作用.
    熟练掌握查询语句的格式与各个选项的作用,能够按照查询要求写出相应的查询语句.
    SQL是Structued Query Language的缩写,是美国国家标准局(ANSI)从1986年首次推出的一种关系数据库语言.
    SQL具有数据定义(DDL),数据操纵(DML)和数据控制(DCL)等丰富功能.它定义有一组操作命令(语句),用户通过命令交互方式或程序执行方式使用命令能够实现相应功能.
    SQL的数据定义功能能够定义数据库的三级模式结构,即外模式,全局模式和内模式结构.其中外模式又叫试图(View),全局模式简称模式(Schema)或数据库(Database),内模式由系统根据数据库模式自动实现.
    在SQL中,每个关系又叫基本表或表(Table),每个关系中的属性又叫做字段(Field)或列(Column),元组又叫做行(Row).一个数据库由若干基本表组成,通常一个基本表对应存储在外存数据库空间的一个存储文件中.每个视图也是一个关系,它由基本表产生,有自己独立的结构定义,但没有独立的数据存在,它的数据来自基本表,间接地来自存储基本表的数据存储文件.所以,视图又称为虚表.
    SQL的数据操纵功能包括对基本表和视图的数据查询,插入,删除和修改,特别具有很强的数据查询功能. SQL是一种高度非过程化的面向集合的语言.
    SQL的数据控制功能主要是对用户的访问权限加以控制,以保证系统的安全性.
    4.1数据库模式的建立和删除
    4.1.1 建立数据库模式
    语句格式:
    CREATE {SCHEMA|DATABSAE}
    〔AUTHORRIZATION〕
    语句功能:
    在计算机系统中建立一个只有名字的空数据库,并定义出它的所有者名称.
    语句举例:
    Create schema xuesh authorization 刘勇
    Create database 教学库
    4.1.2删除数据库模式
    语句格式:
    DROP {SCHEMA|DATABSAE}
    语句功能:
    从计算机系统中删除(撤销)一个数据库.
    语句举例:
    Drop database xuesh
    在设计操作中建立和删除数据库模式通常是通过窗口界面实现.
    4.2 表结构的建立,修改和删除
    4.2.1建立表结构
    语句格式:
    CREATE TABLE [..]
    (,…[,,…])
    语句功能:
    在当前或给定的数据库中定义一个表的结构(即关系模式).
    语句举例:
    Create table stu(
    stu_no char(7)primary key,
    stu_name char(6)not null unique,
    stu_sex char(2)not null check(stu_sex='m' or str_sex='f'),
    stu_birth datetime check(stu_birth=1 and stu_grade=1 and course_point=0 and grade<=100 ),
    primary key (stu_no,course_no),
    Foreign key(stu_no)reference stu(stu_no),
    Foreign key(course_no)reference course(course_no)
    )
    4.2.2修改表结构
    语句格式:
    ALTER TABLE [..]
    {ADD (列定义),…|ADD ,…
    |DROP COLUMN ,…|DROP ,…}
    语句功能:
    向已定义过的表中添加一些列的定义或一些表级完整性约束,或者从已定义过的表中删除一些列或一些完整性约束.
    语句举例:
    alter table stu add 籍贯 char(6)
    alter table stu drop column 籍贯
    4.2.3 删除表结构
    语句格式:
    DROP TABLE [..]
    语句功能:
    从当前或给定的数据库中删除一个表,在删除表结构的同时也删除全部内容.
    语句举例:
    drop table stu
    4.3 表内容的插入,修改和删除
    4.3.1插入记录
    (单行插入)语句格式:
    INSERT [INTO] TABLE [..]
    (,…) VALUES (,…)
    (多行插入)语句格式:
    INSERT [INTO] TABLE [..]
    (,…)
    语句功能:
    向一个表中所指定的若干列插入一行或多行数据.
    语句举例:
    insert into stu(stu_no,stu_name)values ('0001','tom')
    insert into stu(stu_no,stu_name)
    select stu_no,stu_name from stu1 where stu_sex='m'
    4.3.2 修改记录
    语句格式:
    UPDATE [..]
    SET =,…[FROM ][WHERE ]
    语句功能:
    按条件修改一个表中一些列的值.
    语句举例:
    update 职工 set 年龄=年龄+1
    update 职工 set 基本工资=职工1.基本工资+职工1.加班津贴
    from 职工1 where 职工.职工号=职工1.职工号
    update 职工 set 基本工资=基本工资*1.2 where 职工号='0001'
    4.3.3 删除记录
    语句格式:
    DELETE [FROM] [..]
    FROM ][WHERE ]
    语句功能:
    删除一个表中满足条件的所有行.
    语句举例:
    delete from 职工 where 年龄>45
    delete 职工 from 职工1 where 职工.职工号=职工1.职工号
    delete 职工
    4.4 视图的建立,修改和删除
    视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在.一个视图可以对应一个基本表,也可以对应多个基本表.视图是基本表的抽象和在逻辑意义上建立的新关系.
    在数据库三级模式结构中,基本表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表.视图的建立和删除只影响视图本身,不影响对应的基本表,而对视图内容的更新直接影响基本表(一般只允许对非主属性修改,不许做插入和删除的操作).
    4.4.1 建立视图
    语句格式:
    CREATE VIEW (,…)AS
    语句功能:
    在当前数据库中根据select子句的查询结果建立一个视图,包括视图的结构和内容.
    语句举例:
    create view 成绩视图 (学生号,姓名,课程号,课程名,成绩)
    as select 选课.学生号,姓名,选课.课程号,课程名,成绩
    from 学生,课程,选课
    where 学生.学生号=选课.学生号
    and 课程.课程号=选课.课程号
    and 专业='电子'
    4.4.2 修改视图内容
    语句格式:
    UPDATE [..]
    SET =,…
    [FROM ,…][WHERE ]
    语句功能:
    按照一定条件对当前或指定数据库中的一些列值进行修改.
    语句举例:
    update 成绩视图表 set 成绩=80
    where 学生号='0001' and 课程号='f001'
    4.4.3 修改视图定义
    语句格式:
    ALTER VIEW (,…) AS
    语句功能:
    在当前数据库中修改已知视图的列,它与select子句的查询结果相对应.
    语句举例:
    create view 学生视图表 (学生号,姓名)
    as select 学生号,姓名 from 学生
    alter view 学生视图(学生号,专业)
    as select 学生号,专业 from 学生
    4.4.4 删除视图
    语句格式:
    DROP VIEW
    语句功能:
    删除当前数据库中一个视图.
    语句举例:
    drop view 学生视图表
    4.5 SQL 查询
    SQL查询只对应一条语句,即select语句.该语句带有丰富的选项,每个选项由一个特定的关键字标识,后跟一些需要用户指定的参数.
    4.5.1 select语句格式
    SELECT [ALL|DISTINCT] { [ [AS]]
    [, [ [AS]]…| * | .* }
    [INTO ]
    FROM [ [AS]] [, [ [AS]]…]
    [WHERE ]
    [GROUP BY ] [, …]
    [HAVING ]
    [ORDER BY [asc/desc] [,[asc/desc]… ]
    语句功能:
    根据一个或多个表按条件进行查询,产生出一个新表(即查询结果),该新表被显示出来或者被命名保存起来.
    语句说明:
    Select选项给出在查询结果中每一行所包含的列.
    Into选项决定是否把查询结果以基本表的形式保存.
    From选项提供用于查询的基本表和视图,均可带表别名,
    这些表称为源表,查询结果称为目的表.
    Where选项用来指定不同源表之间记录的连接条件和每个源
    表中记录的筛选条件.
    Group by选项用于使查询结果只包含按指定列的值进行分组
    的统计信息.
    Having子句通常同group by选项一同使用,筛选出符合条件
    的分组统计信息.
    Order by选项用于将查询结果按指定列值的升序或降序排列.
    4.5.2 select选项
    在该选项中,all/distinct为任选项.All为允许结果出现重复,distinct在结果中不允许重复,系统默认all.
    select语句中使用的函数:
    count() 统计个数
    max() 求最大值
    min() 求最小值
    avg() 求平均数
    sum() 求和
    例:book page 88-92
    4.5.3 from选项
    该选项提供用于查询的基本表和视图,并可以为每个基本表起一个别名,此别名只限于该select语句使用,作为列名的前缀限定符.
    例:
    Select x.stu_no,x.stu_name from stu x
    4.5.4 where 选项
    该子句的功能是指定源表之间的连接条件和对记录的筛选条件.条件之间需用and运算符连接成一个逻辑表达式.

    例:book page 94
    在新版sql中,查询连接条件从where选项转移到from选项中,并且丰富了连接的功能.
    中间连接
    frominner join
    on . .
    左连接
    fromleft[outer] join
    on . .
    右连接
    fromright[outer] join
    on . .
    每一种连接都隐含着双重循环的执行过程.
    中间连接:
    外循环依次扫描第一个表中的每个元组,内循环依次扫描第二个表中的每个元组,当满足连接条件时就连接起来形成中间表中的一个新元组.
    左连接:
    按中间连接形成中间表的新元组外,还把第一个表中没有形成连接的所有元组也加入到中间表中,这些元组在第二个表上所对应的列值被自动置为空.
    右连接:
    按中间连接形成中间表的新元组外,还把第二个表中没有形成连接的所有元组也加入到中间表中,这些元组在第一个表上所对应的列值被自动置为空.
    用于查询语句中的专门比较式又称为判断式,它实现单值与集合数据之间的比较.常用的有六种格式.
    1,ALL()
    是一条完整的select子句,被嵌套在该比较式中使用.当的查询结果中的每一个值都满足所给的比较条件时,此比较式的值才为真,否则为假.
    例:
    Select * from stu where age>all (select age from stu)
    2,{ANY|SOME}()
    当的查询结果中的任一个值满足所给的比较条件时,此比较式的值才为真,否则为假.
    例:
    Select * from stu where age= some (select age from stu)
    3,NOT BETWEEN AND
    此格式中要小于等于.当由所指定列的当前值在(或不在,用NOT关键字)所指定的和之间(包括两个端点的值)时,此时比较式的值才为真,否则为假.
    例:
    Select * from stu where age between 18 and 20
    4,[NOT] EXIST ()
    当子查询结果中至少存在着一个元组时,表明查询结果非空,此时判断式的值才为真,否则为假;但是当判断式中带有NOT关键字时,情况刚好相反,即当查询结果为空时,判断式的值才为真,否则为假.
    例:
    Select * from stu where exist
    (select * from course where course.no=stu.no )
    5,[NOT] IN {()|()}
    当所指定列的当前值包含在由或的结果所给定的值之内时,此时判断式的值才为真,否则为假,出现NOT关键字则判断结果相反.
    Select * from stu where age in(18,19,20)
    6,[NOT] LIKE
    当的当前值与的值相匹配时,此时判断式的值才为真,否则为假,出现NOT关键字则判断结果相反.下划线_代表任一字符;百分号%代表任意多个字符.
    Select * from stu where name like '王%'
    4.5.5 GROUP BY选项
    语句执行时将按该选项中所给的分组列对连接和选择得到的所有元组进行分组,使得分组列值相同的元组为一组,形成结果表中的一个元组.当该选项含有多个分组时,则首先按第一个列值进行分组,若第一个列值相同再按第二个列值进行分组,依此类推.
    例:统计每一年龄选修课程的学生人数
    SELECT AGE,COUNT(DISTINCT S.S#)FROM S,SC
    WHERE S.S#=SC.S# GROUP BY AGE;
    4.5.6 HAVING选项
    该选项是一个筛选条件.通常跟在GROUP BY子句后面用来从分组统计中筛选出部分统计结果,因此该选项中的逻辑表达式通常带有字段函数.
    4.5.7 ORDER BY选项
    选项中的等是需要使查询结果按其进行排序的列,它们可以是源表中的列名,也可以是select选项中所给表达式的顺序号或定义的列名.当该选项含有多个分组时,则首先按第一个排序列名进行排序,若列值相同再按第二个排序列名进行排序,依此类推.ASC代表升序排序(默认);DESC代表降序排序.
    例:求基本表S中男同学的每一年龄组(超过50人)有多少人 要求查询结果按人数升序排列,人数相同按年龄降序排列.
    SELECT AGE,COUNT(S#)FROM S
    WHERE SEX='M'GROUP BY AGE HAVING COUNT(*)> 50
    ORDER BY 2,AGE DESC;
    4.5.8 INTO选项
    此选项根据查询结果自动建立一个基本表,通常作为临时表使用,可以根据需要任意建立和删除.#
    例:
    select stu_no,stu_name from stu into stu_no_name order by stu_no
    第五章 数据库应用系统设计
    学习目标
    了解数据库应用系统开发过程相继经过的六个阶段,以及每个阶段的任务和目标;
    能够对实际应用的简单系统进行需求分析,画出数据流图,得到各种数据表和对数据处理的各种要求;
    能够根据需求分析结果进行概念设计,画出相应的ER图;
    能够根据概念设计的结果进行逻辑设计和物理设计,给出相应的基本表和视图的定义;
    能够根据数据需求分析,概念设计,逻辑设计和物理设计的结果进行机器实现,按照处理要求编写出相应的应用程序(主要指查询语句).
    一个数据库应用系统的设计是十分复杂的过程.数据库应用系统开发的人员主要由以下人员组成:
    1,熟悉数据库设计理论的专家.
    2,熟悉某一种或几种数据库管理系统的专家.
    3,熟悉某一种或几种数据库应用系统开发工具的专家.
    4,熟悉面向数据库应用的具体业务管理专家.

    对于一些小型数据库应用系统以上角色往往由一个人承担.
    5.1 数据库应用系统开发过程概述
    一个数据库应用系统开发(设计)过程大致包括六个阶段:需求分析,概念设计,逻辑设计,物理设计,机器实现,运行维护.
    5.1.1 需求分析阶段
    需求分析阶段的主要任务是:了解和掌握数据库应用系统开发对象的工作业务流程和每个岗位,每个环节的职责,了解和掌握信息从开始产生或建立,到最后输出,存档或消亡所经历的传递和转换过程,了解和掌握各种人员在整个系统活动过程中的作用;通过同用户充分地交流和沟通,决定哪些工作应由计算机来做,哪些工作仍由手工来做,决定各种人员对信息和处理各有什么要求,对视屏操作界面和报表输出格式各有什么要求,对数据的安全性和完整性各有什么要求,等等.
    需求分析阶段的主要目标是画出数据流图,建立数据字典和编写需求说明书.
    数据流图(data flow diagram)是描述实际业务管理系统工作流程的一种图形表示法,它使用带箭头的连线表示数据的流动方向或者表示前者对后者的作用,用圆圈表示进行信息处理的一个环节,用双线段或开口矩形表示存档文件或实物,用矩形表示参与活动的人员或部门.
    例:book page 114
    数据字典(data dictionary)是对系统工作流程中数据和处理的描述.在数据库应用系统设计中,它是最原始的数据字典,以后在概念设计和逻辑设计中的数据字典都由它依次变换和修改得到.
    需求说明书是系统总体设计方案,它包括上述的数据流图和数据字典,包括系统设计总体目标,系统适宜采用的计算机系统和数据库管理系统及相应配置情况,包括系统开发人员组成,开发费用和时间,包括划分系统边界,即哪些数据和处理由计算机完成,哪些仍由人工完成,包括对用户使用系统烦人要求等许多方面的详细内容.
    需求说明书是开发单位与用户单位共同协商达成的文档,一般要经过有关方面的专家进行评审和通过.它是以后各阶段进行开发和设计的主要依据,也是最终进行系统鉴定和评价的依据.是以后所有工作的基础和凭证.
    5.1.2 概念设计阶段
    概念设计阶段的主要任务和目标是根据需求分析的结果找出所有数据实体,包括一般实体和联系实体,画出对应的ER图.对于较为复杂的系统,先画出各个局部ER图,然后把各个局部ER图综合起来进行整体设计和优化,形成统一的整体ER图.
    概念设计也要贯彻单一化原则,即一个实体只用来反映一个事实,一个实体中的所用属性都是用来描述码的,而不是用来描述其他非码属性,甚至其他实体中的属性的.若实体中存在部分依赖和传递依赖,则应进行分解,使之消除这些依赖.
    5.1.3 逻辑设计和物理设计阶段
    逻辑设计阶段的主要任务和目标是根据概念设计的结果设计出数据库的逻辑结构模式,包括全局模式和各个外模式.鉴于关系型数据库管理系统应用普遍,所以设计的数据库逻辑模式也就指关系型的逻辑结构模式.
    物理设计阶段的任务和目标是根据数据库的逻辑设计结果设计出相应的内模式.对于关系型数据库系统,它能够自动把用户设计好的数据库全局模式转换为相应的内模式,至多需要用户考虑是否建立索引,使用什么方式的索引等简单问题,所以一般不对数据库的物理设计进行专门的讨论.
    设计数据库的逻辑结构模式时,首先要设计好全局模式,然后再设计好各个外模式.
    关系数据库系统中的全局模式由若干个基本表组成,表与表的联系通过定义的主码和外码来实现,每个表都要根据需要达到一定的规范化程度,一般要达到第三范式.关系数据库中的各个外模式都是在基本表上,根据不同用户的不同要求而产生视图,它的定义和数据都来自基本表,通过访问视图能够浏览和更新基本表中的有关内容.
    在设计数据库的全局模式时,就是要确定该模式需要包含哪些基本表,每个基本表包含哪些属性,每个属性采用什么合适的名称,类型和长度,每个属性的完整性约束包含哪些方面,等等.
    在将概念设计的结果转换为逻辑设计的结果时,原来的实体被转换为对应的基本表或视图,原来1对1或1对多联系通常不需要专门转换为对应的基本表,因为这能够通过在表中使用主码和外码约束来实现;原来的多对多联系通常需要转换为对应的基本表,该表中的主码是两端实体的主码的联合体,在需要时还可以通过增加标识符属性得到单属性候选码,并可以随时被指定为主码.
    5.1.4 机器实现阶段
    机器实现阶段主要任务和目标是在设计的计算机系统中建立数据库应用系统.它包括建立数据库模式,通过装入数据建立真是的数据库,按照需求分析中规定的对数据的各种处理要求,结合特定的DBMS和开发环境编写出相应的应用程序和开发出相应的操作界面.也就是,在机器上得到一个满足设计要求的,功能完善和操作方便的数据库应用系统.本阶段还包括反复的调试和分析系统的运行情况,并要求专家和用户对系统按需求说明进行评价和测试,判定通过则正式交付使用.
    5.1.5 运行维护阶段
    本阶段主要靠数据库管理员DBA做日常的系统管理和维护工作,他需要经常听取用户意见,需要利用专门的系统测试和分析软件对系统运行状态进行检测,以便更好的维护系统.
    5.2 数据库应用系统设计应用举例
    Book page 119
    第六章 Access数据库管理系统的简单应用
    学习目标
    了解Access数据库系统的特点,操作界面和七个操作对象的基本概念;
    掌握Access数据库的建立和使用方法;
    掌握表对象的创建方法和有关操作;
    掌握查询对象的创建方法和有关操作;
    掌握窗体对象的创建方法和有关操作;
    了解报表对象的创建方法和有关操作.
    6.1 系统概述
    6.1.1 特点
    Access是微软Office办公套件中一个极为重要的组成部分.Access数据库管理系统是一种关系型数据库管理系统,利用Access系统开发数据库管理软件,一般不需要编写程序,只要根据任务提出的要求,通过键盘和鼠标,选择必需的命令,就能开发出简单,实用,美观大方的应用软件,有效处理日常数据.
    Access的主要特点:
    (1)存储文件单一(所以数据包含在以mdb为后缀的数据库文件中).
    (2)支持长文件名,便于标识和查找.
    (3)面向对象的开发方式.
    (4)处理多种数据信息.
    (5)界面友好,工作方式灵活.
    (6)强大的网络功能.
    6.1.2 Access用户操作界面
    通常Access的用户操作界面由无部分组成,即:标题栏,菜单栏,工具栏,状态栏和工作区.
    1,标题栏
    用来显示软件标题名称的地方.
    2,菜单栏
    它提供实现系统功能的各种菜单选项.
    3,工具栏
    它提供很多工具按钮,工具栏内容随窗口显示的不同而变化.
    4,工作区
    它用来显示数据库的窗口,各种工作窗口在这里打开.
    5,状态栏
    状态栏用于显示数据库管理系统的工作状态.
    6.1.3 操作对象
    Access数据库包含七个数据库操作对象:
    1,表:也称数据表,是数据库中用来存放数据的场所,是数据库的核心和基础.
    2,查询:是在数据库的一个和多个表中检索所需信息的手段.
    3,窗体:用于显示,输入,编辑数据和控制应用程序执行的操作界面.它使得数据的显示和输入更为灵活,方便.
    4,报表:用于控制显示或打印数据的输出格式.报表可以基于一个或多个表,也可以基于查询,报表可以包括图表,图形等,并可以对数据进行统计汇总等操作.
    5,页:也称为数据访问页,是特殊的Web页,用来查看和操作Internet上的数据.
    6,宏:是对若干Access操作命令系列的定义.执行宏实际是由系统自动执行宏定义的一系列命令.
    7,模块:是用Access提供的VBA语言编写的程序段.
    6.1.4 数据库的建立和打开
    1,数据库的建立
    Access提供了两种创建数据库的方法:
    一种是先创建空数据库,再添加对象.使用本方法前必须设计数据库中的每个对象(如数据库应该包含多少表,什么字段,表与表之间关系等).
    另一种方法是使用Access提供的各种数据库向导创建包含各种数据库对象的数据库,并可以同时建立各个对象,即通过对向导所提出的选项和不同选择来设计窗体,查询和报表等,从而建立一个完整的数据库.
    例:book page 132
    2,数据库的打开
    在Access中,如果要使用已经存在的数据库,必须首先确认它是否打开.
    打开步骤:
    1,启动Access,在"Microsoft Access"对话框中将最近打开过的数据库文件.
    2,选择"打开已有文件"单选项,在列表框中点击要打开的数据库文件名,然后点击"确定"即可.
    6.2 表操作
    6.2.1 表的创建
    表是Access数据库的操作对象之一,是数据库中用来存放数据的场所,是Access数据库中最基本,最重要的一部分.其他数据对象都在表的基础上建立和使用.
    1,表的结构
    定义字段就是确定表的结构.
    (1)字段名称
    字段是表的基本存储单元,是同类型数据的标识符,为字段命名可以方便地使用和识别字段.
    (2)字段的数据类型
    最长64000字符
    保存超级链接的字段
    超级链接
    与主关键字长度相同,该字段也是查阅字段,4字节
    使用组合框选择另一个表或列表中的值.从数据类型列表框中选择,打开向导进行定义.
    查阅向导
    最大1GB
    链接或嵌入的对象
    OlE对象
    1位
    逻辑值
    是/否
    4字节
    自增序号
    自动编号
    8字节
    货币数据
    货币
    8字节
    日期或时间值
    日期/时间
    1,2,4或8字节
    数值
    数字
    最长64000字符
    长文本或文本与数字组合
    备注
    最长255字符
    文本或文本与数字组合
    文本
    大小
    可存储数据
    数据类型
    (3)字段的属性
    字段的属性包括字节,整型,长整型,单精度型,双精度型,标题,默认值,有效性规则等.
    字段大小:定义字段的长度;
    格式:决定数据的打印格式和显示方式;
    小数位:决定小数位的位数;
    有效性规则:决定字段的取值范围;
    索引:加快检索的速度,且索引字段不允
    许重复值.
    (4)字段说明
    字段说明是字段的简要说明信息,它主要是便于以后的数据库系统维护.
    (5)主键的概念和作用
    在数据库中,常常有多个表,这些表之间不是相互独立的,在这些表的沟通过程中,就需要一个字段作为联系的'桥',通过这个字段中不同的值可以区别各条记录,该字段称为主键.每个表至少要有一个主键,主键是能使表中记录唯一的字段,它的作用是用于与其它表取得关联,是数据检索与排序的依据,具有唯一性.因此应根据数据库设计知识选择一个能够唯一标识记录的字段作为主键.
    2,创建表
    Book page 135
    3,主键和索引的创建
    Book page 137
    6.2.2 表中数据的输入和编辑
    Book page 138
    6.2.3 建立表间联系
    Book page 142
    6.3 查询操作
    Book page 143
    6.4 窗体操作
    Book page 152
    6.5 报表操作
    Book page 160

    第七章 Access数据库管理系统的高级应用
    学习目标
    了解宏,模块,数据访问页的概念;
    了解数据库的安全措施;
    掌握宏的创建和使用;
    了解模块的创建和使用方法;
    了解数据访问页的创建和使用方法;
    了解数据的导入和导出方法.
    7.1 宏操作
    7.1.1 宏的概念和功能
    1,宏的概念:我们把那些能自动执行某种操作的命令统称为'宏',其中每个操作能自动实现特定的功能,它是一个或多个操作命令的集合.宏是一种特殊的代码,也是一种操作命令,它和菜单操作命令类似,只是它们对数据库施加作用的时间有所不同,作用时的条件也有所不同.宏命令在数据库的执行过程中使用,并且可以自动运行.
    在access中,一共有53种基本宏操作,可以组合很多其他的'宏组'操作.实际使用中,常常将基本宏命令组成一组,按顺序执行,以完成一种特定任务.通过窗体中控件的某个事件操作来实现,或在数据库运行过程中自动实现.
    2,宏的功能:
    (1)打开,关闭表单或报表,打印报表,执行查询.
    (2)筛选,查找记录.
    (3)模拟键盘动作,为对话框或别的等待输入的任务提供字符串输入.
    (4)显示信息框和响铃警告.
    (5)移动窗口,改变窗口大小.
    (6)实现数据的导入和导出.
    (7)定制菜单.
    (8)执行任意的应用程序模块,甚至包括MS-DOS模块.
    (9)为控制的属性赋值.
    7.1.2 宏的建立
    Book page 168
    7.1.3 宏的编辑
    Book page 170
    7.1.4 宏的运行
    Book page 171
    7.2 模块操作
    7.2.1 模块的概念和功能
    1,模块的定义和作用
    模块是将visual basic语言的声明,语句和过程集合在一起,作为一个命名单位的程序.它通过嵌入在access中的程序设计语言编辑器和编译器实现了与access的结合.
    visual basic可以把模块理解为是装有visual basic程序代码的容器,它是由一个或多个过程组合的,每个过程可以实现一种或几种功能.
    模块克服宏的缺点(运行速度慢;不能直接运行很多windows程序;不能自定义一些函数),由VBA(visual basic application)语言实现,当某段VBA程序编译通过后,将这段程序保存在access中的一个模块里,并通过类似在窗体中激发宏的操作那样来启动这个'模块'.
    2,模块的类型
    (1)类模块
    类模块是可以定义新对象的模块.新建一个类模块,也就是创建了新的对象,如窗体,报表都是类模块,而且它们各自与某一个窗体或报表相关联.它可以独立存在,也可以与窗体和报表同时出现.
    (2)标准模块
    标准模块包含的是通用过程和常用过程,这些通用过程不与任何对象相关联,常用过程可以在数据库中的任何位置运行.
    7.2.2 模块的建立
    Book page 173
    7.3 数据访问页
    7.3.1 数据访问页的概念和功能
    access数据访问页是access数据库中的一个数据库对象.Access2000进一步增强与因特网的集成,用户可以通过因特网共享access数据库,可以方便的使用来自于网络的数据,也可以在网上发布自己的数据.界面采用IE浏览器的界面,发布内容来自数据库中的数据.这种链接是动态的,不需要创建很多的页面,一切繁琐的工作由access完成.
    7.3.2 数据访问页的建立和使用
    Book page 175
    7.3.3 编辑数据访问页
    Book page 177
    7.3.4 在IE中查看数据访问页
    Book page 178
    7.4 数据库的安全措施
    数据库的安全性是维护数据的重要前提,当建好一个数据库后,数据的安全是否能得到保证就是一个非常重要的问题.Access通过设置数据库密码,设置用户权限等来保护数据库的安全.
    7.4.1 用户密码的操作
    Book page 179
    7.4.2 用户管理
    Book page 181
    7.4.3 加密和解密数据库
    Book page 183
    7.5 数据的导入和导出
    7.5.1 数据导入和导出的概念
    在access中,可以用'获取外部数据'命令来获取数据库或其他格式文件的数据,对于不同的外部数据库可以用不同的获取方式.同时,access数据库中的数据也可被导出到其他数据库或其他格式的文件.
    7.5.2 数据导出
    Book page 184
    7.5.3 数据导入
    Book page 186
    7.6 综合应用举例
    教师教学信息管理系统
    Book page 192
    第八章 SQL Server数据库管理系统概述
    学习目标
    了解SQL Server数据库管理系统的全貌和基本使用方法;
    能够在所选定的操作系统上正确安装,配置,运行SQL Server数据库管理系统,并具备对安装过程中可能出现的一些常见问题的分析和解决能力;
    学会企业管理器,查询分析器这两种工具的使用;
    掌握SQL Server中的基本数据类型和Transact SQL语言的基本使用方法.
    8.1 SQL Server的发展历程及特点
    8.1.1 SQL Server的发展历程
    SQL Server是微软公司出品的关系型数据库管理系统(RDBMS)软件.
    1988年 微软与Sybase等公司开发基于OS/2操作系统的关系型数据库管理系统.
    1992年 微软与Sybase开发基于Windows NT操作系统的SQL Server4.2版本.
    1995年 微软单独开发基于Windows NT操作系统的SQL Server6.0版本.
    1996年 推出SQL Server6.5版本.
    1999年 推出SQL Server7.0版本
    2000年 推出SQL Server2000问世.
    8.1.2 SQL Server的主要特性
    随着用户数量的增加,SQL Server在易用性,可收缩性和可靠性,数据仓库等方面作了重大创新,它在RDBMS领域具有很多新颖和有创造性的特点,已经成为一种领先的数据库管理系统,但其只能运行在windows平台上,不能在UNIX等其他操作系统上运行,移植性较差.
    1,客户/服务器体系结构
    SQL Server采用客户/服务器计算模型,通过中央服务器来集中存储数据资源,该服务器可以被多台客户机访问,数据库应用的处理过程分布在客户机和服务器上.采用这种方式的好处有:
    (1)数据集中存储在服务器上,而不是分开存储在各客户机上,使所有用户都可以访问到相同的数据.这种方式一方面可以较方便地实现数据共享,另一方面所有客户机硬件不需要具备存储和处理大量数据的能力,而服务器不需要具备数据表示功能,这样极大节省了硬件的开销.最后,这种方式也较易实现数据备份和恢复工作.
    (2)业务逻辑和安全规则可以在服务器上定义一次,而后被所有的客户使用,便于安全和业务逻辑的统一规划管理.
    (3)关系数据库服务器仅返回应用程序所需要的数据,这样可以减少网络流量.
    2,易用的管理工具,动态的自我管理和配置
    SQL Server为数据库管理员提供了许多管理数据库系统的工具,比如:企业管理器(Enterprise Manager),查询分析器(SQL Qery Analyzer).这些都是基于图形的管理工具,从而大大简化了安装,管理和使用SQL Server数据库的过程,操作简单直观,交互性好. SQL Server还提供了动态的自我管理机制, 能够动态配置运行环境,优化和简化许多服务器配置选项.
    3,自动实现数据库的并发控制
    并发问题是在多个用户同时访问数据库时产生的问题.并发控制通常利用数据封锁机制完成. SQL Server对数据库实施的是行级封锁,它会根据不同的情况动态调整数据封锁的力度,以使数据封锁和数据共享达到最佳效果.例如SQL Server会根据查询操作的实际情况,自动加行级锁或页级锁.
    4,强大的编程接口和开发工具
    SQL结构化查询语言是关系数据库的重要组成部分. SQL Server采用的结构化查询语言成为Transact SQL,它与ANSI 92 SQL标准兼容,并对其进行了扩充.利用Transact SQL可以完成创建和管理数据库对象,访问和修改数据,数据集合,管理安全性和权限等操作.在程序开发阶段可以利用SQL Server提供的查询分析器作为编写Transact SQL脚本程序的开发工具,在脚本嵌入应用程序中,就可以完成几乎所有数据库管理和操纵任务.
    此外,SQL Server还 支持大多数常用的数据库应用编程接口(API),如ADO,OLE DB,ODBC等,这可以使应用程序直接与数据库进行交互,提高数据库应用程序开发的速度,降低难度.
    SQL Server包含诸如SQL DMO(分布式管理对象),SQL DTS(数据转换服务)和数据库复制组件等OLE自动对象. SQL Server提供的企业管理器就是为利用这些对象而开发的,用户可以利用这些对象编写类似的管理工具.
    5,与操作系统的高度集成特性
    SQL Server与Windows NT,Windows2000等操作系统完全集成.以Windows2000为例,可以使用Windows2000的用户和域账号作为SQL Server的注册账号,也就是Windows认证.
    集成特性是SQL Server的重要特性,包括:邮件集成,访问因特网集成.
    8.2 SQL Server的安装与启动
    Book Page 200
    8.3 SQL Server管理工具简介
    Book page 203
    8.4 SQL Server的系统结构
    8.4.1 存储结构
    SQL Server的数据存储在数据库中,数据被组织到用户可以看见的逻辑组件中,而在磁盘上则作为两个或更多的物理文件来实现.
    1,数据库对象:逻辑存储结构
    SQL Server数据库中的数据分别存储在几个不同的对象中,而这些对象是用户在操作数据库时,实际能够看到和接触到的,属于逻辑存储结构.
    2,数据库文件:物理存储结构
    在物理层面上, SQL Server数据库是由多个操作系统文件组成,所有数据,对象以及数据库操作日志均存储在这些操作系统文件中.根据文件的作用,分为三种:
    (1)主数据文件
    一个SQL Server数据库在磁盘上可以由一个或多个文件组成.当有多个数据库文件时,有一个被定义为主数据文件,扩展名为mdf.主文件是数据库的起点并指向数据库的其余文件,每个数据库只有一个主文件.
    (2)次数据文件
    次文件是主文件的辅助文件,扩展名为ndf,它包括主文件中不包含的所有数据.次文件不是必须的,它的意义在于不同的物理磁盘上创建辅助数据库文件并将数据存储其中,提高数据处理的效率,同时可以防止主文件过大.
    (3)事务日志文件
    每个数据库至少要有一个日志文件,扩展名为ldf,主要用于存储数据的更新情况等事务日志信息.所有对数据库的更新操作都会记录在此文件中.(很重要)
    3,数据库文件组
    为了便于分配和管理, SQL Server允许将多个数据文件归纳为一组,并赋予一个名称,这就是文件组.使用文件组可以提高数据库的查询性能. SQL Server文件组共有以下两种:
    (1)主文件组
    包含主数据文件和任何其他不属于另一个文件组的文件,数据库的系统表都包含在主文件组中.
    (2)用户定义文件组
    在CREATE DATABASE或ALTER DATABASE语句中使用FILEGROUP关键字指定的任何文件组.
    一个文件只能存在于一个文件组中,一个文件组也只能被一个数据库使用;日志文件是独立的,它不作为任何文件组的成员.文件组的使用可以大大提高查询效率.
    8.4.2 系统数据库
    SQL Server使用系统数据库来管理系统,每个SQL Server系统都拥有四个系统数据库以及一个或多个用户数据库.
    在安装SQL Server时,系统会自动建立Master,Model,Tempdb,Msdb四个系统数据库和Pubs,Northwind两个用户数据库(主要供用户学习使用).
    1,Master数据库
    Master数据库包含SQL Server系统中的所有系统级信息,主要包括:所有注册账户和密码,所有用户数据库的存储位置和初始化信息,系统配置参数,是否存在其他数据库以及是否存在其他的SQL Server等.
    2,Tempdb数据库
    Tempdb是一个临时数据库,它只是为临时表和其他临时存储需要提供一个工作空间,属于全局资源,没有专门的权限限制.Tempdb中的数据都是临时的,并在SQL Server重新启动时,按默认大小重建Tempdb.
    3,Model数据库
    Model数据库是用户建立新数据库的模板,它包含将复制到每个用户数据库中的系统表.每当用户创建数据库时,SQL Server服务器都会将Model数据库中的内容拷贝到新数据库中.
    4,Msdb数据库
    Msdb数据库主要用来进行复制,作业调度和管理报警等活动.
    与这四个系统数据库有关的主数据文件和事务日志文件,默认情况下存储在SQL Server安装目录的Data子目录下.
    主文件 日志文件
    Master: Master.mdf Masterlog.ldf
    Model: Model.mdf Modellog.ldf
    Msdb: Msdb.mdf Msdblog.ldf
    Tempdb:Tempdb.mdf Templog.ldf
    8.4.3 系统表
    在逻辑层次上,数据库使由表,视图,存储过程等一系列数据对象组成.每当创建数据库时, SQL Server都会自动创建一些数据对象,其中比较重要的是系统表.
    系统表记录了SQL Server数据库服务器信息,组成了SQL Server系统利用的数据字典.在应用中应防止对它们的损坏.
    只存储在Master中的系统表:book page 212
    存储每个数据库中的系统表:book page 213
    8.5 Transact SQL语言简介
    8.5.1 Transact SQL的主要功能简介
    Transact SQL语言是SQL Server对标准SQL的扩展,是SQL Server功能的核心,它扩展的主要功能是:
    (1)加入程序控制结构,如if…else;while语句等.
    (2)加入局部变量,全局变量等一些功能.
    用户可以籍此编写出复杂的查询语句,也可以建立驻留在SQL Server服务器上的数据库对象. Transact SQL不区分大小写,一般大写用于保留关键字.
    8.5.2 Transact SQL批处理及执行过程简介
    用户可以通过可视化界面完成数据库的管理工作,但最终必然提现为Transact SQL语言.所有通过企业管理器的操作结果均可自动生成对应的Transact SQL语句.各种语言编写数据库应用程序,最终都表现为向SQL Server服务器发送一组Transact SQL语句,由服务器根据要求完成相应的操作.一般通过查询分析器工具,编辑,执行Transact SQL语言.
    1,批处理的概念
    批处理是指从客户机传递到服务器上的一组完整的数据和SQL语句.在一个批处理中,可以只包含一条SQL语句,也可以包含多条SQL指令.
    在查询分析器中,当Transact SQL的编译器扫描到go语句时自动把前面的所有语句当作一个批处理送往服务器.
    2,客户端执行过程
    一个批处理是一次发送给服务器的一组SQL语句.每个应用程序都设有一种机制,用来告诉服务器一个批处理中的所有语句.
    3,服务器端的执行过程
    当SQL Server服务器收到一个SQL批处理语句后按照以下过程处理:
    分析过程-再优化过程-编译过程-执行过程
    8.6 SQL Server的主要数据类型
    在SQL Server中,数据类型通常是指字段列,存储过程参数和局部变量的数据特征.
    8.6.1 数值数据类型
    1,整数类类型
    (1)bigint:-263到263-1的整型数据.
    (2)int: -231到231-1的整型数据.
    (3)smallint: -215到215-1的整型数据.
    (4)tinyint: 0到255的整型数据.
    2,精确数值类型
    主要有decimal和numeric两种,用法基本相同.在数据表中,只有numeric才能带有IDENTITY关键字.使用这两种数据类型可以精确的指定总位数,即精度;小数位数,即刻度.最大精度可达38位.Decimal可以简写为dec.
    3,浮点数值类型
    浮点型也属于一种精确数值类型,只不过它的取值范围更大.
    (1)float:-1.79x10308到1.79x10308.
    (2)real: -3.04x10308到3.04x10308.
    4,货币类型
    货币类型是带有四位小数位的浮点型.
    (1)money:-263到263-1.精确万分之一.
    (2)smallmoney: -231到231-1.精确万分之一.
    8.6.2 字符型
    1,char类型
    长度固定.长度未达到定义长度时,字段尾部添加空格以达到固定的字符数.
    2,varchar类型
    长度可变.
    3,text类型
    可存储长度超过8000个字符,最大长度231-1个字符.
    8.6.3 日期时间型
    1,datetime类型
    范围从1753年1月1日到9999年12月31日,精确到千分之一秒,占8个字符.
    2,smalldatetime类型
    范围从1900年1月1日到2079年6月6日,精确到分,占4个字符.
    当用户没有指定时间数据时,SQL Server自动设置datetime和smalldateime数据的时间为00:00:00,此时它们仅代表日期数据.
    8.6.4 二进制数据类型
    主要用来存储二进制数据,如图形图像,word文档等.
    1,binary和varbinary类型
    最大长度8000字符,前者长度固定,后者长度可变.
    2,image类型
    长度超过8000字符时使用,最大长度2GB.
    8.6.5 位型bit
    用来存储1和0两种代码,一个字节.
    8.6.6 特殊数据类型
    1,双字节数据类型
    SQL Server提供nchar,nvarchar,ntext三种双字节数据类型,是一种unicode数据类型,以2个字节代表一个字符,其优点可以方便的处理多国语言.
    2,时间戳数据类型
    时间戳数据类型是SQL Server根据事件的发生次序自动生成的一种二进制数据.可以作为进行恢复工作的重要部分.利用时间戳数据还可以替代传统的数据库加锁技术.
    8.7 SQL Server函数
    SQL Server的Transact SQL提供了许多内部函数,大致可以分为数学函数,字符串函数,日期函数,系统函数,统计函数以及其他函数(如数据类型转换函数),用户自定义函数等几类.
    8.7.1 数学函数
    Book page 220
    8.7.2 字符串函数
    Book page 221
    8.7.3 日期函数
    Book page 221
    8.7.4 系统函数
    SQL Server所提供的系统函数主要供高级用户使用,通过调用这些系统函数可以获得有关服务器,用户,数据状态等系统信息,常见的系统函数有:user,system_user,host_id
    8.7.5 统计函数
    SQL Server中的统计函数主要用于对数据表的查询操作之中,使用方法几乎一样,即应首先执行一条select语句,最常见的统计函数有:SUM,AVG,MIN,MAX,COUNT等.
    8.7.6 其他常用函数
    (1)ISDATE(表达式)
    用来判断指定的表达式是否是一个合法的日期.1为真,0为否.
    (2)ISNULL(表达式1,表达式2)
    如果表达式1的值为null,则返回表达式2的值,否则返回表达式1的值,表达式1和表达式2的类型必须相同.
    (3)NULIF(表达式1,表达式2)
    当表达式1与表达式2相等时,返回null值,否则返回表达式1的值.
    (4)ISNUMERIC(表达式)
    表达式的值是合法的int,float,money等数字数据类型时,返回1,否则返回0.
    (5)COALESCE(表达式1,表达式2……)
    判断在给定的一系列表达式中是否有非null的值,如果有,则返回第一个不是null的表达式的值;如果所有的表达式都是null,则返回null值.
    (6)CAST(表达式AS数据类型)
    将表达式的值从一个数据类型变为另一个数据类型.
    (7)CONVER(数据类型[(length)],表达式[style])
    功能与CAST相同,但更全面一些.
    8.8 SQL Server的标识符及命名规则
    8.8.1 标识符分类
    SQL Server服务器,数据库以及表,视图,列,索引,触发器,存储过程,规则,默认值和约束等数据库对象都可以拥有一个标识符.对绝大多数对象来说,标识符是必不可少的,但某些对象,比如约束,是规定标识符是可选的.对象的标识符一般在创建对象时定义,并供用户作为引用该对象的工具使用.
    1,界定标识符
    界定标识符是那些使用双引号或者方括号等起界定作用的符号的标识符,使用了界定标识符,既可以遵守标识符的命名规则,也可以不遵守标识符命名规则.
    2,常规标识符
    常规标识符严格遵守标识符命名规则,所以在Transact SQL语句中凡是常规标识符都不必使用界定符.
    8.8.2 标识符格式规则
    (1)标识符的首字母必须是Unicode2.0所定义的字母,以及下划线,@,数字符号#.
    (2)标识符首字母以后的字符可以是Unicode2.0所定义的字母;来自基本拉丁字母或其他国家,地区脚本的十进制数字;@,¥,数字符号或下划线.
    (3)标识符不能是Transact SQL的保留字,保留字不区分大小写.
    (4)标识符内不允许有空格或特殊字符.
    @开头的标识符是局部变量或函数的参数.
    #开头的标识符是临时表或存储过程.
    8.8.3 对象命名规则
    SQL Server的数据库对象名可以由1~128个字符组成,不区分大小写.一个数据库对象的全名应该由服务器名,数据库名,拥有者名和对象名四个部分组成,基本格式如下:
    [[[server.][database].][owner_name].]object_name
    实际使用过程时,服务器名,数据库名,拥有者名可以省略,而使用默认值.在SQL Server中不允许存在四部分完全相同的数据库对象.
    第九章 SQL Server数据库简单应用
    学习目标
    能够运用SQL Server企业管理器和查询分析器两种工具管理数据库;
    能够在前五章学习的基础上,熟练掌握Transact SQL的具体应用方法;
    能够在SQL Server数据库管理系统的支持下编写出简单的批处理应用程序.
    9.1 数据库的创建与管理
    数据库是SQL Server存放数据和数据对象的容器,一般通过两种方法对它进行管理:一是通过企业管理器所提供的可视化界面进行管理;二是使用Transact SQL语句,通过查询分析器进行管理.
    9.1.1 创建数据库
    Book page 229
    9.1.2 查看数据库信息
    Book page 232
    9.1.3 修改数据库
    Book page 234
    9.1.4 删除数据库
    Book page 235
    9.1.5 备份和恢复数据库
    Book page 236
    9.2 表对象的创建和管理
    9.2.1 创建表
    Book page 238
    9.2.2 查看与修改表结构
    Book page 241
    9.2.3 查看与维护表数据
    Book page 242
    9.2.4 删除表
    Book page 243
    9.2.5 创建视图
    Book page 243
    9.3 索引的创建与管理
    索引是最为常用的改善数据库性能的技术.SQL Server引入索引主要是为了提高查询的效率,它能够加速ORDER BY和GROUP BY子句的操作,保证数据的唯一性,并加快表连接的速度.
    9.3.1 索引的概念和创建原则
    索引就是一个指向表中数据的指针,如果我们把书比作数据,那么各个章节就相对于数据库中的表,而书的目录就是索引了.

    索引是在基本表的列上建立的一种数据库对象,它和基本表分开存储,它的建立或撤销对数据的内容没有影响.当索引建立后,它便记录了被索引的每一个取值在表中的位置.当表中加入新数据时,索引也会增加相应的数据项.
    在对建立了索引的基本表进行查询时,首先在相应的索引中查找,如果找到就返回该数据在基本表中的位置,再从基本表中取出全部记录值.
    索引一经创建,就完全由系统自动选择和维护.因此,在创建索引时,务必注意下列问题:
    (1)基本表的记录数量越多,记录越长,越有必要创建索引,这对加快查询速度十分有效.
    (2)索引是为了加快查询速度而创建的,但同时会影响基本表的插入,删除或修改等更新活动的速度.因此只有那些对数据量大,查询频度高,实时性要求强的基本表才创建索引,且一张基本表上不要创建过多的索引.
    (3)索引是建立在基本表列上的对象,对哪个列进行索引,通常根据列在WHERE,ORDER BY,GROUP BY子句中出现的频率决定.
    不适合建索引的列的情况;
    包含太多重复值的列;
    查询中很少被引用的列;
    值特别长的列;
    具有很多null值的列;
    需要经常插入,删除,修改的列;
    记录较少的基本表;
    需要进行频繁的大批量数据更新的基本表.
    9.3.2 索引的类型
    从列的使用角度可将索引分为单列索引,惟一索引,复合索引三类;从是否改变基本表记录的物理位置角度可分为聚集索引和非聚集索引两类.实际的索引通常是这两大类五种方式的组合.
    (1)单列索引
    单列索引是对基本表的某一单独的列进行索引,是最简单和最常用的索引类型,通常对基本表的主关键字建立单列索引.
    (2)惟一索引
    惟一索引的建立,则不允许在表中相应的列插入任何相同的取值.这样不但提高查询性能,还维护了数据的完整性.
    (3)复合索引
    复合索引是针对基本表中的两个或两个以上列建立索引.
    (4)聚集索引
    聚集索引会改变基本表中记录的物理存储顺序.即表中记录的物理排序顺序不再按插入的先后排列,而是根据索引列重新排序.
    (5)非聚集索引
    非聚集索引的表中记录的物理顺序与索引顺序不同,即表中的记录仍按实际插入的先后顺序排列,不按索引列排序.
    9.3.3 聚集和非聚集索引的对比
    是否采用聚集方式进行索引应从以下几点考虑:
    (1)存取速度
    从建立了聚集索引的表中取出数据比建立了非聚集索引的表快,但相对而言,聚集索引会降低对表的插入,删除和修改数据的速度.
    (2)索引的数据
    对聚集索引的主要限制是每个表只能建立一个聚集索引,但是可以有多个非聚集索引(最多249个).一个表可以同时建立聚集和非聚集索引.
    (3)所需空间
    非聚集索引需要较多的硬盘空间和内存.
    9.3.4 创建和删除索引
    Book page 247
    9.4 Transact SQL编程基础
    Transact SQL与标准ANSI SQL-92最大的不同在于它提供了丰富的编程结构,用户可以实现任意复杂的应用规则,可以编写出任意复杂的查询.使用Transact SQL编写的程序可以通过查询分析器运行,也可以嵌入编程语言中.如果编写基于SQL Server数据库的应用程序,那么Transact SQL是最优选择,对于要在不同数据库平台上运行,那么SQL语句应符合ANSI标准.
    9.4.1 程序注释语句
    注释就是用一般人所熟悉的汉语,英语等自然语言,对程序语言进行说明.经常书写程序注释语句是一种良好的编程习惯.
    注释语句不是可执行语句,不参与程序的编译,只是一些说明性的文字,主要对程序代码的功能及实现方式进行简要的解释和说明,以帮助程序人员理解Transact SQL程序段.
    SQL Server使用/*……*/注释多行语句;
    使用--……注释单行语句.
    9.4.2 变量
    SQL Server支持两种形式的变量,即局部变量和全局变量.
    1,局部变量
    局部变量的作用域局限在一定的范围内的Transact SQL对象.一般来说局部变量在一个批处理内被声明,定义后,这个批处理内的SQL语句就可以设置,引用这个变量的值.可这个批处理结束后,这个局部变量的生命周期也随之结束.因此可以理解为:局部变量的使用范围局限于批处理内,即两个go语句之间的那一部分.
    (1)声明局部变量
    DECLARE {
    @变量名 数据类型 [,…n]
    }
    变量名必须以@打头;数据类型可以使用除了text,ntext和image类型以外的所有系统数据类型和用户定义数据类型.
    (2)为局部变量赋值
    两种方式:
    1)Select方式
    Select @变量名=表达式;
    Select @变量名=表达式 from 表名 […n]
    [where 条件表达式]
    2)Set方式
    一条set语句只能给一个变量赋值,set可以在update语句中使用.
    Delcare @nn int
    Set @nn=(select count(*) from stu)
    Update stu set @nn=stu_age
    2,全局变量
    全局变量用于记录SQL Server服务器活动状态的一组数据,在7.0版本以前,全局变量是系统提供且预先声明的变量,对用户只读.7.0版本以后,全局变量变成一种特殊形式的函数,以@@打头区别于局部变量.SQL Server一共提供30多个全局变量,例如:
    @@connections 返回启动SQL Server以来连接或试图连接的次数.
    @@error 返回Transact SQL语句的执行错误.
    9.4.3 程序结构
    Transact SQL语言为了提供程序设计功能,引入条件分支,循环,顺序等程序结构.
    1,IF… …ELSE条件结构
    常见的语法结构:
    IF 逻辑表达式
    单条语句 或 BEGIN…END语句组
    ELSE
    单条语句 或 BEGIN…END语句组
    常见的逻辑判断结构:
    IF [[NOT] EXISTS] (select 语句)
    Transact SQL 语句组
    ELSE
    Transact SQL语句组
    例:book page 253
    2,CASE多重分支结构
    CASE结构提供比IF…ELSE结构更多的选择和判断机会,避免编写多重IF…ELSE的嵌套语句.
    结构1:
    CASE
    WHEN: 逻辑表达式1 THEN 返回结果1
    WHEN: 逻辑表达式2 THEN 返回结果2
    …………
    ELSE 返回结果n
    END

    结构2:
    CASE 表达式
    WHEN: 表达式值1 THEN 返回结果1
    WHEN: 表达式值2 THEN 返回结果2
    …………
    ELSE 返回结果n
    END
    例:book page 255
    3,WHILE循环结构
    语法结构:
    WHILE 逻辑表达式
    BEGIN
    Transact SQL语句组
    [BREAK]
    [CONTINUE]
    END
    当逻辑表达式为'真'时,SQL Server服务器重复执行Transact SQL语句组.Break作用是在某些情况下,无条件跳出循环;continue作用是在某些情况下,跳出本次循环,开始执行下一次循环.
    例:book page 256
    4,RETURN返回语句
    在批处理,语句块或存储过程中,使用RETURN语句可以立即从当前程序结构中退出,RETURN后面的语句也不会被执行.RETURN语句在进行复杂逻辑编程时才会使用到.语句结构:
    RETURN [整数表达式]
    注意:所有系统存储过程返回0表示成功,返回非0表示失败.RETURN用于存储过程时,不能返回空值.
    9.4.4 游标
    1,游标的概念及用途
    在多数情况下,Transact SQL命令都是面向集合的,但是当有用户需要对这些数据集合中的每一行进行'个性化'的操作时,就需要使用游标(Cursor).
    游标提供了一种在服务器内部处理结果集的方法,具有类似于C语言指针一样的结构,可以识别一个数据集合内指定的行,从而可以有选择的按行操作.
    2,声明游标
    在使用游标之前首先要声明它,用法如下:
    DELCARE 游标名 [INSENSITIVE][SCROLL] CURSOR
    FOR select 语句
    [FOR|READ ONLY|UPDATE[OF 列名1,列名2[…N]]|]
    主要参数意义:
    游标名:应遵守SQL Server标识符命名规则.
    INSENSITIVE:使用这个参数定义游标会把提取出来的记录集放在一个在Tempdb数据库里创建的临时表里.任何通过这个游标进行的操作,都在临时表里进行.因此,在对该游标进行提取操作时返回的数据不反映对基表的所做的修改,并且该游标不允许修改.
    SCROLL:使用该参数定义的游标,可以包括以下所有的取数功能:
    FIRST:取第一个记录;
    LAST:取最后一个记录;
    PRIOR:取前一个记录;
    NEXT:取下一个记录;
    RELATIVE:按相对位置取记录;
    ABSOLUTE:按绝对位置取记录.
    如果没有使用SCROLL关键字,则对游标只能使用NEXT取数功能.
    Select语句:是定义游标结果集的标准select语句.
    在游标声明的select_statment内不允许使用关键字COMPUTE,COMPUTE BY,FOR BROWSE和INTO.
    READ ONLY:声明只读游标,不允许通过只读游标进行数据的更新操作.
    UPDATE:定义游标内可更新的列.如果指定OF column_name[,…n]参数,则只允许修改所列出的列.如果在UPDATE中未指定列的列表,则可以更新所有的列.
    例:book page 260
    3,打开游标
    在使用游标前,必须打开.语法如下:
    OPEN 游标名
    当执行打开语句时,SQL Server服务器实际上是执行了声明游标时的SELECT语句.当声明时使用了INSENSITIVE关键字,那么服务器会在Tempdb中建立一张临时表,作为该游标使用的实际的临时复本.
    4,关闭游标
    当不使用游标时,一定要关闭它,以通知服务器释放所占用的资源.语法如下:
    CLOSE 游标名
    5,释放游标
    游标结构本身也会占用一定的资源,所以在使用完游标后,应该将其释放,以回收资源.用法如下:
    DEALLOCATE 游标名
    6,使用游标取数
    游标打开后就可以利用它一次一个记录地提取数据了.用法如下:
    FETCH
    [[NEXT|PRIOR|FIRST|LAST|ABSOLUTE {n|@nvar} |RELATIVE {n|@nvar}] FROM ]
    [INTO @局部变量1…@局部变量n]
    INTO:允许将提取的列数据放到局部变量中.列表中的各个变量从左到右与游标结果集中的相应列相关联.类型必须匹配或支持隐性转换.变量数目必须与游标选择列表中的列的数目一致.
    n或@nvar:表示游标相对于作为基准记录的偏离位置.n必须为整型常量且@nvar必须为smallint,tinyint或int型的局部变量.
    7,两种与游标有关的系统全局变量
    @@FETCH_STATUS返回被FETCH语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态.返回0表示FETCH语句成功;-1表示FETCH语句失败或此行不在结果集中;-2表示被提取的行不存在.
    @@CURSOR_ROWS返回本次服务器连接中,打开游标取回的数据行的数目.
    8,利用游标修改数据
    要使用游标进行数据修改,必须将该游标声明为更新的游标,即在声明时不要使用READ ONLY关键字.同时使用'FOR UPDATE OF'关键字指明要更新的列.
    (1)更新操作
    UPDATE 表名 {SET 列名=表达式}[,…n]
    WHERE CURRENT OF 游标名
    (2)删除操作
    DELETE FROM 表名WHERE CURRENT OF 游标名

    其中CURRENT OF游标名表示要对当前的游标数据行进行操作.
    9.4.5 事务
    1,事务的作用
    事务是并发控制的基本单位,它反映了现实世界中需要以一个完整的单位提交一项工作.SQL Server通过事务机制,将逻辑相关的一组操作捆绑在一起,以便服务器保持数据的完整性.它是Transact SQL复杂程序设计必不可少的内容.
    要么全部处理;要么一行也不处理,恢复操作前状态.这就是事务处理的作用.
    2,事务处理的控制语句
    SQL Server可以通过三个语句完成事务控制:
    (1)开始一个事务:BEGIN TRAN[SACTION] 事务名
    (2)提交一个事务:COMMIT [TRAN[SACTION]] 事务名
    (3)回滚一个事务:ROLLBACK [TRAN[SACTION]] 事务名
    在数据库应用程序设计中,事务控制语句的一般用法是:
    第一步:BEGIN TRAN 事务名;
    第二步:对数据库进行增,删,改等操作;
    第三步:提交事务或回滚.
    基本逻辑是:如果没有发生异常情况,则通过COMMIT语句提交事务,确认第二步的操作;否则执行ROLLBACK回滚命令,撤销第二步的所有操作.
    9.5 存储过程
    9.5.1 存储过程的作用
    存储过程是一组预先编译好的Transact SQL代码,可以作为一个独立的数据库对象被用户使用,被应用程序直接调用.由于存储过程是已经编译好的代码,执行时不必再次进行编译,所以使用存储过程可以使基于SQL Server的数据库应用程序更有效率.
    SQL Server的存储过程可以接收参数,并以输出参数的形式返回多个参数给调用它的过程或批处理.使用存储过程的好处是:
    (1)执行速度快:存储过程在创建时就经过语法检查和性能优化,因此在执行时不必再重复以上步骤.存储过程在经历一次调用后,就驻留内存中,不必再经过编译和优化,所以速度很快.
    (2)模块化的程序设计:存储过程经过一次创建后,可以被无数次调用.用户可以独立于应用程序对存储过程进行修改,增加数据库应用程序的易修改性.
    (3)减少网络流量:存储过程可以包含大量Transact SQL语句,但进行调用时客户端只需要使用一个语句就可以实现,所以大大减少了网络上的数据流量.
    (4)保证系统的安全性:存储过程的语句组存放在数据库服务器端.对于某些关键数据,可以设置成只通过存储过程来访问,不允许用户直接使用Transact SQL语句或企业管理器对数据进行访问.
    9.5.2 创建存储过程
    在Master数据库中存储了一些SQL Server事先定义好的系统存储过程,通常以sp_xxx作为存储过程的名字.用户创建数据库时,也会自动生成一些事先定义好的存储过程,通常以dt_xxxx作为名字.
    (1)简单语法
    CREATE PROC[EDURE] 存储过程名
    [WITH
    {RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]
    AS sql语句[…n]
    RECOMPILE:该过程运行时将重新编译.
    ENCRYPTION:对访问这些数据的入口进行加密.
    Sql语句:利用Transact SQL编写的程序.
    Book page 266
    9.5.3 执行存储过程
    如果对存储过程的调用是批处理的第一条语句,则直接使用存储过程的名字调用该存储过程.否则用EXECUTE或EXEC关键字完成调用.语法如下:EXEC user_proc1.
    9.5.4 修改存储过程
    语法如下:
    ALTER PROC[EDURE] 存储过程名
    [WITH
    {RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]
    AS sql语句[…n]
    Book page 268
    9.5.5 删除存储过程
    语法如下:
    DROP PROC[EDURE] 存储过程名1[,存储过程名2]…
    9.5 触发器
    触发器是一种特殊的存储过程,它基于一个表的创建,但可以针对多个表进行操作,与表紧密相连,可以看作是表定义的一部分,主要用来保证数据的完整性.
    在SQL Server中一张表可以有多个触发器,用户可以针对UPDATE,DELETE,INSERT语句分别设置触发器,那么当用户进行UPDATE,DELETE,INSERT等数据维护操作执行后,这些事先定义好的触发器对象就会被'触发',并按事先定义好的规则自动执行.
    9.6.1 创建触发器
    语法如下:
    CREATE TRIGGER 触发器名
    ON 表名 [WITH ENCRYPTION]
    FOR{[DELETE][,] [INSERT][,] [UPDATE][,]}
    [NOT FOR REPLICATION] AS sql 语句
    [RETURN]
    主要参数含义:
    WITH ENCRYPTION:
    使用该参数对访问syscomments表的入口进行加密.
    NOT FOR REPLICATION:
    表示复制进程更改触发器所涉及的表时,不执行该触发器.
    例:book page 269
    9.6.2 删除和修改触发器
    语法如下:
    删除触发器:
    DROP TRIGGER {触发器名} [,…n].
    当用户删除某个表格时,所有建立在该表上的触发器都将被删除.
    修改触发器:
    其语法与参数的含义与CREATE TRIGGER相同.
    9.7 数据库完整性管理
    数据的完整性是指存储在数据库中的数据的正确性和相容性.设计数据库完整性的目的是为了防止数据库在不符合语义的数据,防止错误信息的输入输出.SQL Server提供的用来实施数据完整性的途径主要是约束(Constraint),标识列(Identity Column),默认(Default),规则(Rule),触发器(Trigger),数据类型(Data Type),索引(Index)和存储过程(Stored Procedure)等.
    SQL Server实施完整性的主要途径
    Rule
    Trigger
    Stored Procedure
    用户定义完整性
    Foreign Key
    Check
    Trigger(触发器)
    Stored Procedure(存储过程)
    参照完整性
    Default(默认)
    Check(核查)
    Foreign Key(外键)
    Data Type(数据类型)
    Rule(规则)
    值域完整性
    Priamry key(主键)
    Unique key(惟一键)
    Unique Index(惟一索引)
    Identity Column(标识列)
    实体完整性
    实施途径
    数据完整性类型
    9.7.1 使用约束实施数据的完整性
    约束的用途是限制用户输入到表中的数据的值的范围,一般分为列级约束和表级约束.列级约束是行定义的一部分,只能应用在某个列上;表级约束的定义独立于列的定义,可以应用到一个表中的多个列上.SQL Server提供包括主键约束,外键约束,惟一性约束,检查约束等.
    存储过程:sp_helpconstraint 表名
    可以浏览某张表格上的所有约束信息.
    1,Primary Key约束(主键约束)
    特征:
    (1)创建主键约束时,SQL Server会自动创建一个惟一的聚集索引.
    (2)定义了主键约束的字段的取值不能重复,并且不能取null值.
    (3)每个表只能定义一个主键约束.
    (4)如果表中已经有了聚集索引,那么在创建主键约束之前,要么指定所创建的是非聚集索引,要么删除已有的聚集索引.
    例:book page 272
    2,Foreign Key约束(外键约束)
    某列的取值必须参照另一个表的主码值,在创建表时通过外键关键字完成定义.
    特征如下:
    (1)一旦外键约束定义了某个字段,则该字段的取值必须参照同一个表或另一个表中的主键约束或惟一约束.
    (2)外键约束不能自动建立索引.
    例:Book page 273
    3,Default 约束(默认约束)
    当用户没有为定义了默认约束的字段输入数据时,有默认约束提供默认数据.
    特征如下:
    (1)每一个字段只能有一个默认约束.
    (2)默认约束不能放在Identity字段上或timestamp字段上.因为这两种字段都能够自动插入数据.
    例:book page 273
    4,Unique 约束(惟一约束)
    惟一约束的字段的值不能重复.
    特征如下:
    (1)一个表可以有多个惟一约束.
    (2)按照惟一约束的要求,在一个表中不允许任意两处在被约束的字段上有相同的null值,因此最好将被定义了惟一约束的列定义为非空.
    (3)创建惟一约束时,系统自动创建了非聚集索引.
    例:Book page 274
    5,check 约束(核查约束)
    核查约束限制了字段的取值范围.
    特征如下:
    (1)限制了向特定的字段列输入数据的类型.
    (2)表级定义的核查约束可以对多个字段列进行核查.
    例:book page 274
    6,删除约束
    如果需要将某个约束删除,可以使用以下语句.
    语法格式:
    Alter table 表名 drop constraint 约束名
    9.7.2 使用规则实施数据的完整性
    规则(Rule)是单独存储的数据库对象,它提供了一种加强列约束的机制,对列的值进行规定和限制.当用户向绑定有规则的数据列中INSERT和UPDATE数据时,规则会检测修改值的完整性.
    使用规则保证数据完整性的一般步骤是:首先创建规则,其次将该规则与某个数据列绑定在一起,最后当不再使用时删除它.
    1,使用Transact SQL创建和删除规则
    语法结构如下:
    CREATE RULE 规则名 AS 条件表达式
    条件表达式可以是SELECT查询语句中的WHERE子句中的任何有效的表达式,可以包含诸如算数运算符,关系运算符和IN,LIKE,BETWEEN之类的关键字.但规则中不能引用表中的数据列以及别的数据库对象,同时在条件表达式中包含有一个局部变量,该变量必须以字母@开头.
    删除规则的语法:
    DROP 规则名
    例:book page 275
    2,使用Transact SQL绑定规则
    绑定规则操作需要使用SQL Server提供的系统存储sp_bindrule.语法如下:
    sp_bindrule 规则名,'表名.列名'
    解除绑定语法:
    sp_unbindrule '表名.列名'
    例:book page 276
    3,使用企业管理器管理规则
    操作界面使用简单,自行练习.
    9.7.3 使用默认实施数据完整性管理
    1,使用Transact SQL创建和删除默认
    语法如下:
    CREATE DEFAULT 默认名 AS 默认值
    默认值可以是任意数据类型的常量.
    2,使用Transact SQL语句绑定默认
    语法结构:
    sp_binddefault '默认名','表名.列名'
    解除绑定语法:sp_unbinddefault '表名.列名'
    3,使用企业管理器管理默认
    操作界面使用简单,自行练习.
    例:book page 276
    9.8 SQL Server数据库安全性管理
    作为一个企业级的关系数据库管理系统,SQL Server提供了内置的安全性和数据保护机制,并且这种管理有效而操作简单,归纳起来主要有以下四个等级:客户端操作系统的安全,数据库的登录安全,数据库使用安全和数据库对象的使用安全.
    无论安全管理问题多么复杂,均可归结为对'锁'和'钥匙' 的管理问题,这就是所谓的账户管理问题.SQL Server的安全管理主要是围绕账户管理展开的.
    9.8.1 数据库登录账号的管理
    SQL Server的服务器级安全性是建立在登录账号和口令的基础上的.在SQL Server中可以采用标准SQL Server登录账号和集成Windows NT登录账号两种方式,前者由SQL Server自身负责验证登录账号的合法性,后者由Windows 2000/NT操作系统管理和验证.无论哪种,用户要访问SQL Server的数据库服务器都必须提供正确的登录账号和口令.
    当采用SQL Server身份验证方式完成SQL Server安装工作后, SQL Server就建立一个特殊账号sa,它拥有对服务器和所有数据库的管理权限,可执行服务器范围内的所有操作.
    利用企业管理器管理登录账号:book page 278
    9.8.2 数据库用户账号的管理
    在实现了数据库的安全登录后,检验用户权限的下一道门就是数据库的访问权限.数据库的访问权限是通过映射数据库的用户账号和登录账号之间的关系来实现的.
    SQL Server中的数据库级别上有两个内置的特殊用户,即dbo和guest.
    dbo是数据库的拥有者,它在每个数据库中都存在,并拥有对数据库的最高权利,可以在数据库范围内执行一切操作.dbo用户对应于创建该数据库的登录账号,所以当采用sa为登录账号进行安装时,所以系统数据库的dbo都对应于sa账号.
    guest用户可以使任何已经登录到SQL Server服务器的用户都可以访问数据库,所有的系统数据库除了Model以外都有guest用户.所有新建数据库没有这个用户.
    使用企业管理器管理数据库用户
    book page 279
    9.8.3 用户许可管理
    当用户以某一登录账号登录SQL Server服务器,并作为某一数据库用户创建了表,视图等数据库对象后,他就拥有了对该数据库对象的访问权限.但其他用户要想访问该对象必须首先获得拥有者的许可,对表,视图等拥有者可以授予INSERT,UPDATE,DELETE,SELECT等权限.
    1,使用企业管理器进行许可管理
    Book page 280
    2,使用Transact SQL语言进行许可管理
    (1)授权
    语法如下:
    语句授权:GRANT {ALL|语句命令[,…n]} [ON 表名]
    TO 数据库用户
    对象授权: GRANT {ALL[PRIVILEGES]|权限许可[,…n]} {[(列名 [,…n])] ON {表名|视图名}} TO 数据库用户[,…n]
    TO 数据库用户 [,…n] [WITH GRANT OPTION]
    [AS{组|角色}]
    说明:
    WITH GRANT OPTION表示可以将指定的对象权限授予其他角色.
    例:book page 281
    (2)权限的收回
    撤销以前所授予的权限语法如下:
    REVOKE [GRANT OPTION FOR]
    {ALL[PRIVILEGES]|权限[,…n]}
    {[(列名 [,…n])] ON {表名|视图名}}
    FROM 数据库用户[,…n]
    撤销以前被授予的权限语法如下:
    REVOKE {ALL|语句命令[,…n]} [ON 表名]
    FROM 数据库用户[,…n]
    例:book page 282
    (3)拒绝访问
    拒绝用户访问数据库对象语法如下:
    DENY {ALL[PRIVILEGES]|权限[,…n]}
    {[(列名 [,…n])] ON {表名|视图名}}
    TO 数据库用户[,…n]
    撤销以前被授予语句许可的用户的访问语法如下:
    DENY {ALL|语句命令[,…n]} [ON 表名]
    TO 数据库用户[,…n]
    例:book page 282
    第十章 其他数据库系统与相关技术简介
    学习目标
    掌握这几个数据库管理系统软件的主要功能,特点以及基本使用方法.
    了解面向对象数据库提出的背景,它与传统的关系数据库的不同之处.
    了解面向对象数据库模型中的类,对象与继承的概念.
    了解常用数据库开发工具的特点.
    10.1 Microsoft Visual FoxPro数据库管理系统简介
    Visual FoxPro数据库是一个关系型数据库.它是由微软公司根据FoxBase发展起来的,主要用于Windows环境.由于不需要用户编程就可以建立一个面向对象的数据库应用程序,所以Visual FoxPro很快成为一种通用的数据库软件.1998年微软推出6.0版本,无论在组织信息,运行查询,创建集成的关系型数据库系统,还是为最终用户编写功能全面的数据库管理应用程序,都可以提供管理数据所必须的开发环境和工具.
    10.1.1 Visual FoxPro的发展过程
    1,dbase阶段
    产生于20世纪80年代的dbase,具有简单,易操作,功能较强,交互性好等特点.此后形成了dbsae2,dbase3,dbase3+,dbase4系列产品,功能也逐渐加强.Dbase系列产品同时也存在运行速度慢,界面不友好,早期版本不能解释执行等缺点.
    2,Foxbase和FoxPro阶段
    Book page 287
    3,Visual FoxPro阶段
    引入可视化编程技术的FoxPro.1995年推出3.0版本,成为Xbase发展史上的又一个里程碑.它第一次把Xbase产品数据库的概念和关系数据库理论接轨.1996年推出5.0版本,在项目和数据库管理,表,查询,视图设计等多方面进一步改进和增强,此外还为用户提供了更多和更好的向导.1998年推出6.0版本,在5.0版本的基础上加重了项目管理器,向导,生成器,查询与视图,OLE连接,ActiveX集成,帮助系统制作,数据的导入和导出以及面向对象的程序设计等方面的技术力度.
    10.1.2 Visual FoxPro6.0的功能和特点
    1, Visual FoxPro6.0de 基本功能
    (1)可以为每一种类型的信息创建一个表,利用表存储相应的信息.
    (2)可以定义各个表之间的关系,从而很容易地将各个表的数据有机的联系在一起.
    (3)可以创建查询搜索那些满足条件的记录,也可以根据需要对这些记录排序和分组,并根据查询结果创建报表,表及图形.
    (4)使用视图可以从一个或多个相关联的表中按一定条件抽取一系列数据,并可以通过视图更新这些表中的数据;还可以使用视图从网上取得数据,从而收集或修改远程数据.
    (5)可以创建表单来直接查看和管理表中的数据.
    (6)可以创建一个报表来分析数据或将数据以特定的方式打印出来.
    2,Visual FoxPro的特点
    (1)易于使用
    (2)可视化开发
    (3)事件驱动
    通过与用户的交互实现程序的运行.
    (4)面向对象编程
    3,Visual FoxPro6.0的新特性
    (1)Visual FoxPro基类和组件集
    Visual FoxPro6.0带有Visual FoxPro基类,100多个未编译,可重用类(满足许多应用程序的需要),开发人员可以把它们方便地加到应用程序中去,大大节省了开发人员的时间.
    组件集通过可视化的方法组织和应用类来动态简化类库管理.开发人员可以组织类库,将其分成若干组,称为目录,从而易于实现对类的分组,定位,以及在应用程序开发中使用类.组件集带有许多缺省目录,覆盖所有的基本功能.开发人员也可以创建自己的目录,把类和其他组件加进去.
    (2)应用程序向导和生成器
    (3)严格的日期检测
    (4)表面显示器
    (5)访问方法与赋值方法
    (6)项目挂钩
    (7)在应用程序之间进行拖放
    (8)活动文档
    (9)微软传输服务器支持
    (10)企业应用程序开发
    10.2 IBM DB2数据库管理系统简介
    Book page 292
    10.3 Oracle数据库系统简介
    Book page 302
    10.4 面向对象数据库系统简介
    Book page 311
    10.5 应用开发开具简介
    Book page 318
  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 PPT格式下载
  • 您可能感兴趣的
  • 数据库三大范式  数据库设计三范式  数据库三范式  数据库中的范式  利用范式设计数据库  数据库中的范式举例  数据库第二范式  关系型数据库范式  数据库bc范式