Chinaunix首页 | 论坛 | 博客
  • 博客访问: 582146
  • 博文数量: 107
  • 博客积分: 5065
  • 博客等级: 大校
  • 技术积分: 1362
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-29 16:01
文章存档

2009年(84)

2008年(23)

我的朋友

分类: Mysql/postgreSQL

2009-01-04 10:52:17

 

 

数据库及其应用
 


   数据库是一门研究数据管理的技术,它开始于本世纪60年代,经过了30多年的发展,已形成理论体系,成为计算机软件的一个重要分支。这里我们把这门课程分成两部分来学习:
   部分一:数据库的原理篇

 


   这一章我们主要是学习数据库管理系统的基本概念及一些有关的概念。

信息、数据和数据处理概念


信息与数据
   数据:数据库系统研究和处理的对象,本质上是对信息的一种符号化表示。
   信息:现实世界各种事物的存在特征、运动形态以及不同事物间的相互联系等因素在人脑中的抽
         象反映、进而形成概念。
   注意:数据与信息是分不开的,二者既有联系又有区别,因此我们在学习的时候要弄清二者之间
         的联系与区别。

数据是信息的载体,信息是数据的内涵

数据处理
   数据处理:就是数据的收集、整理、组织、存储、查询、维护和传送等各种操作,这些是数据处理的基本环节,是任何数据处理任务必有的共性部分。
 下面我们扼要的介绍一下数据管理技术的发展
   数据管理技术发展大体上可分为三个阶段:
      自由管理阶段(50年代)
      文件系统阶段(60年代)
      数据库阶段(60年代后期)

 
数据库系统的组成
   数据库系统由数据库、支持数据库运行的软硬件、数据库管理系统和应用程序等部分组成。
   数据库:是一个结构化的数据集合。主要是通过综合各个用户的文件,除去不必要的冗余,使之相互联系所形成的数据结构。
   硬件与软件:硬件是数据库赖以存在的物理设备,软件主要是指"数据库管理系统",数据库管理系统简称DBMS(Data Base Management System),是数据库中专门用于数据管理的软件。
   由上面我们可以知道数据库系统是以硬件为基础,在硬件之上套上各种软件。我们可以用图示来表示数据库系统中各部分之间的关系:如下所示。

数据库系统体系结构
   数据库系统有着严谨的体系结构。现在世界上有很多的数据库在运行,其类型和规模可能相差很大,但是它们的体系结构是大体相同的。
   美国国家标准委员会所属标准计划和要求委员会(Standards Planning And Requirements Commitee)在1975年公布了一个关于数据库标准报告.提出了数据库的三级结构组织,也就是SPARC分级结构。三级结构对数据库的组织从内到外分三个层次描述,分别称为内模式、概念模式和外模式。其中概念模式又称为模式。
   事实上,三级模式中,只有内模式才是真正存储数据的,而模式和外模式仅是一种逻辑表示数据的方法,但却可以放心大胆地使用它们,这是靠DBMS的映射功能实现的。这三中模式之间存在两种映射:
 外模式----模式之间的映射,它把用户数据库与概念数据库联系起来了。
 模式----内模式之间的映射,它把概念数据库与物理数据库联系起来了。
   数据库有两类用户,一是应用程序员,二是终端用户。其中终端用户只能对UWA(User Work Area)中的数据进行处理,其数据是DBMS根据用户的请求装进去的。

   DBMS是数据库系统的关键组成部分。任何数据操作,包括数据库定义、数据查询、数据维护、数据库运行控制等都是在DBMS管理下进行的。DBMS是用户与数据库的接口,应用程序只有通过DBMS才能和数据建立联系。
   下面我们来学习一下DBMS的功能和作用:
数据库的定义功能
   DBMS提供有数据描述语言DDL(Data Description Language),来定义内模式、外模式和模式,并将各种模式翻译成相应的目标代码。
数据库的映射功能
   实现外模式----模式和模式----内模式之间的映射。
数据库操作功能
   DBMS提供有数据操纵语言DML实现对数据库的操作。有四种基本操作命令:检索、插入、删除和修改。
数据库运行控制功能
   DBMS对数据库运行的控制主要是通过数据的安全性、完整性、故障恢复和并发操作四方面实现的。
   数据安全性:就是防止未被授权者非法存取数据库。
   数据完整性:就是数据的正确性和相容性。
数据库的维护功能
   这部分包括数据库数据初始装入、数据库转储、数据库重组及记载系统工作日志等功能。

数据模型是数据库的框架,它形式化地描述了数据库的数据组织形式,它还是定义数据库的依据。这一章,我们主要学习数据模型,然后学习模型化的方法

 

数据模型
   问题:
什么是数据模型呢?它又具有什么功能呢?
   答案:数据模型是客观事物及其联系的数据描述。 数据模型应具有描述数据和数据联系两方面功能。
   数据的描述就是指出:模型中包含那些记录类型,并对记录类型进行命名;指明各个记录类型由那些数据构成,并对数据项进行命名,每个数据项均需指明其数据类型和取值范围。
   数据间联系的描述就是指明:各个不同记录间所存在的联系和联系方式。
实体联系模型
   问题:什么是实体模型呢?
   答案:数据模型本质上是"信息模型"的数据化表示。信息模型又称"实体联系模型",是客观事物及其自然联系在人脑中所形成的概念。
   问题:实体模型和数据模型的关系是什么呢?
   答案:从实体模型到数据模型要经历三个领域的演变过程:

现实世界→信息世界→数据世界

   在这三个世界领域中,人们沿用不同的名词术语,下面我们来学习一些常用的术语。
实体与属性
  
这是信息世界中广泛使用的两个术语。
   实体:现实世界任何可相互区别的事物,不论是实际存在的东西,还是概念性的东西,或是事物与事物之间的联系,一律统称为实体。  
   属性:实体所具有的性质,统称为属性。实体是靠属性来描述的。
   实体与属性的型与值
   实体和属性都有"型"与"值"之分。型是概念的内涵,值是概念的实例。
   实体集
   同一类型的实体集合称为实体集。
  
   实体中的每个属性,都有一个取值范围,这叫作属性的"域"。域可以是整数、实数、字符串等
   键(key)
   又称为关键字,它是指在实体属性中,可用于区别实体集中不同个体的那个属性或几个属性的组合。
   各个实体间存在联系吗?要是有的话,它们的联系方式是怎样的呢?我们在下一节来解决这个问题。

实体间的联系方式
   实体之间的联系实际上反映了实体之间的语义关系。联系也是实体,因此它也可以有属性。
   实体间联系情况比较复杂,就其联系方式来说,我们可把它分为以下三种:
      1):一对一联系(简记为1:1)
      2):一对多联系(简记为1:n)
      3):多对多联系(简记为m:n)

  • 一对一联系
    若两个同型实体集中,一方的一个实体唯一与另一方的一个实体相对应,则称为1:1联系。
       如下图所示的婚姻关系
                           

  • 一对多联系
    若两个不同型的实体集中,一方一个实体对应另一方多个实体;反之另一方一个实体最多只与本方一个实体相对应,称1:n联系.
       如下图所示的父子关系
                            

  • 多对多关系
    若两不同型实体集中,任何方一个实体都与对方一个或多个实体相对应,称m:n联系
       如下图学生与课程的关系
                             

  •   实体联系表示法简称E--R方法(Entity--Relationship Approach)。这种方法是通过所谓E--R图表示实体及其联系,是P.P.Chen1976年提出的。
       下面我们就来学习E--R图的话画法及怎样设计E--R图。
    E--R图的画法
       E--R图中包括:实体、属性和联系三种基本图素。习惯上实体用"方框"表示,实体的属性用"椭圆框"表示,联系用"菱形框"表示。如下图所示:


    实体


    属性



    联系

       由于实体集中的个体有很多,我们不可能也没有必要一一指出个体间的对应关系,因此E--R图中只需指出实体"型"间的联系,注明联系方式,这样即简单又能表达清楚概念。
       E--R图的具体画法:把有联系的实体(方框)通过联系(菱形框)连接起来,注明联系方式,再把实体的属性(椭圆框)连到相应的实体上。
       例:下面我给出一个简单的E--R图,如下:

  • 怎样用E--R图准确反映信息模型,设计方法虽然没有一定的规则,但我们要大体遵循以下原则
    E--R的设计原则
       (1)针对每一用户作出该用户信息的局部E--R图,确定该用户视图的实体、属性和联系。
          注意:能作为属性的就不要作为实体,这样有利于简化E--R图。
      
    (2)综合局部E--R图,产生出总体E--R图。
         
    注意:在综合的过程中,同名实体只能出现一次,还要去掉不必要的联系,以便消除冗余。
       最后我们还要说明一点:
          
    一个系统的E--R图不是唯一的,强调不同的侧面作出的E--R图可能有很大的不同。

       例:设某企业信息系统有下列用户:人事科处理职工档案;供应科处理采购业务;总务科处理仓库业务;生产科处理产品业务。
          试根据上述要求设计出能反映所有用户信息视图的总体E--R图。
       根据E--R图的设计原则我们可知:
      
    步骤一:先作出局部的E--R图,如下:

              
    人事科视图

            
    供应科视图

                   
    生产科视图

                   
    总务科视图

       步骤二:综合局部E--R图,产生出总体E--R图。


    综合后的E--R图

       从上面综合后的E--R图中我们发现去掉了一些联系,又增添了一些新联系,这是允许的。

数据库有类型之分,是根据数据模型划分的。目前成熟地应用在数据库系统中的数据模型有:层次模型、网壮模型和关系模型。下面我们分别学习以下这三种模型。
层次模型
   层次模型是用树结构表示记录类型及其联系的。
   树结构的基本特点是:
      1、有且仅有一个结点无父结点;
      2、其它结点有且有一个父结点。
  
在层次模型中,树的结点是记录型。上一层记录型和下一层记录型的联系是1:n的。
   层次模型就象下面我们给出的一棵倒立的树。如下所示:
                                
  
注意:在层次式数据库中查找记录,必须指定存取路径。这种关系模型不支持m:n联系。
   

网状模型
   网状模型中结点间的联系不受层次限制,可以任意发生联系,所以她的结构是结点的连通图。
   网状模型结构的特点是:
     
1、有一个以上结点无父结点;
      2、至少有一个结点有多于一个父结点。
  
如下我们给出一个网状模型的例子:
                                
   注意:虽然网状模型能反映各种复杂的关系,但网状模型在具体实现上,只支持1:n联系,对
         于m:n联系可将其转化为1:n联系。
关系模型

   关系模型的本质就是用若干个二维表来表示实体及其联系。
   关系是通过关系名和属性名定义的。一个关系可形式化表示为:
      R(A1,A2,A3,…,Ai,…)
   其中:R为关系名,Ai为关系的属性名。
   这里我们对此不做过多的学习,在以后的章节中我们会详细的学习之。

我们知道E--R图仅是现实世界的纯粹反映,与数据库具体实现毫无关系,但它是构造数据模型的依据。下面我们给出从E--R图出发导出关系模型的原则。
E--R图导出关系模型的原则
   原则一:对于E--R图中每个实体,都应转换为一个关系,该关系应包括对应实体的全部属性,
           并应根据关系所表达的语义确定哪个属性作为"主键"。

     注意:键在关系模型中是实现联系的主要手段。
  
原则二:对于E--R图中的联系,情况比较复杂,要根据实体联系方式的不同,采取不同的手段
           加以实现。
   下面我们给出一些常见的关系模型:

  • 两实体间1:n联系
    这种联系是可将"1"方实体的"主键"纳入"n"方实体对应的关系中作为"外部键",同时把联系的属性也一并纳入"n"方对应的关系中。

  • 同一实体内部个体间1:n联系
    这种联系可在这个实体所对应的关系中多设一个属性,用来作为与该个体相联系的另一个体的"主键"。

  • 两实体间m:n联系
    对于两实体间m:n联系,必须对"联系"单独建立一个关系,用来联系双方实体。
    注意:该关系的属性中至少要包括被它所联系的双方实体的"主键",并且如果联系有属性,也要归入这个关系中。

  • 同一实体内部个体间m:n联系
    如果同一实体内存在m:n联系,也需为这个联系单独建立一个关系。该关系中至少应包括被它联系的双方个体的"主键",如果联系有属性,也要归入这个关系中。

  • 两个以上实体m:n多元联系
    这种多元联系,必须为联系单独建立一个关系,该关系中最少应包括被它联系的各个实体的"主键",若是联系有属性,也要归入这个关系中。

  • 两实体间1:1联系
    这种联系可将一方的主键作为另一方的外键而将两者间的联系实体省略。

在学习关系的数学定义之前,我们要先来学习一些概念。

   是值的集合。
   如:{男,女},{1,2},{A,B,C}等都可以是域。
   注意:域要命名。
   如:令:
        D1={男,女},表示性别的集合;
        D2={10,13,18},表示年龄的集合。
   域中数据的个数叫域的基数。因此上面D1的基数是2,D2的基数是3。
笛卡儿积
   给定一组域D1,D2,…,Dn(其中允许有相同的),则笛卡儿积定义为:
              D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n)}
  
其中每个(d1,d2,…,dn)叫作元组
  
元组中的每个di叫作分量,di必是Di中的一个值;当n=1时称单元组,n=2时,称二元组,…。
  
因此,笛卡儿积的基数等于构成该积所有域的基数累乘积。
关系的定义
   当且仅当R是D1×D2×…×Dn的一个子集,则称R是D1×D2×…×Dn上的一个关系
   记为:R(D1,D2,…,Dn)
   其中R为
关系名,n为关系的度,Di为第i个域名
   在关系对应的二维表中,行对应元组,列对应域。

   注意:由于笛卡儿积允许有相同的域,故当不同列取自相同域情况下,列就无法根据域名来区分。

由于关系可以表现为二维表,因此我们可以通过二维表来理解关系的性质。
关系的性质一:
   关系中每个属性值是不可分解的。也就是表中元组分量必须是原子的。
   例:
                          
   上面这张表就不是关系,因为表中的元组分量不是原子。
   也就是说不允许“表中套表”。
关系的性质二
   表中各列取自同一各域,故一列中的各个分量具有相同性质。
关系的性质三
   列的次序可以任意交换,不改变关系的实际意义。
关系的性质四
   表中的行叫元组,代表一个实体,因此表中不允许出现相同的两行。
   注意:在实际中有的把元组称为记录
关系的性质五
   行的次序无关紧要,可以任意交换,不会改变关系的意义。

对关系的描述为定义关系模式。关系模式是指用关系数据描述语言描述后的关系,必须逐个对关系模型中的关系进行描述才能生成数据库概念模式。
   不同关系型DBMS的数据描述语言不尽相同,采用的方式也不一样,下面我们介绍几种常见的。
问答式
   问答式通过人机对话,有系统提问关系名,各个属性及其类型和长度。对话完毕,关系模式也就生成了。每个关系均需通过问答,脱离应用程序单独进行,最终生成数据库概念模式。
   例如:FoxPro就是一种问答式DBMS。
语言描述式
   语言描述式有专门的描述语言定义关系模型,包括:关系名,组成该关系的各各域名、数据类型、长度和取值范围。下面我们介绍一种非正式的数据描述语言。
   域描述语句
   域描述语句的形式如下:
        DOMAIN<域名>PIC IS<类型(长度)>[RANGE IS<数1>THRU<数2>]
   该语句式通过DOMAIN定义域名;PIC定义数据类型和长度;RANGE定义取值范围。
   关系描述语句
   关系描述语句形式如下:
        RELATION<关系名>(<域名1,域名2,…>)KEY=(<域名i,域名j,…>)
   该语句用RELATION对关系命名、定义关系中的属性和指定关系的"主键"。
关系模型的三类完整型规则
   通过关系数据描述语言定义的关系是稳定的,但是关系数据库则是随时变化的。为了维护数据库中的数据与现实世界的一致性,关系数据库必须遵循以下三类完整性约束规则:

  • 实体完整性约束规则
    这个约束规则也就是指关系中的"主键"不允许取空值

  • 引用完整性约束规则
    这条规则是限制引用不存在的记录

  • 用户定义的完整性约束规则

 

数据库设计的内容
   数据库设计包含两方面的内容:结构特性设计和行为特性设计。下面我们来具体说一下这两方面特性的设计。
   结构特性设计:指数据库总体概念的设计,它应该是具有最小数据冗余的、能反映不同用户数据要求的、能实现数据共享的系统。结构性设计是静态的
   行为特性设计:指数据库用户的业务活动,它体现在应用程序中。
   下面我们再来说一下这两方面设计联系与区别:
   两者之间的联系:数据库设计要考虑结构特性和行为特性两方面,因此这两者之间要相互参照。
   两者之间的区别:建立数据模型的方法没有给行为特性设计提供任何依据,故导致结构设计和程序设计分离进行。结构特性是在模式和子模式中定义的,行为特性通过应用程序去实现的。
   有了上面这些,我们可以知道在进行数据库设计时,不能一蹴而就,要本着“反复探寻,逐步求精”的思想进行数据库设计。
   下面我们按数据库系统的逻辑设计、物理设计、应用程序设计等介绍设计的全过程。

数据库物理设计
   物理设计主要任务是:确定存储结构、数据存取方法、分配存储空间。
   严格说来:数据库物理设计是系统程序员的事情。故这里我只需要知道物理设计的任务是什么就行了,别的不做太多要求。
  
经过从"概念设计->逻辑设计->物理设计",标志着数据库的框架搭设成功,下面任务就是设计应用程序并投入运行和维护。
应用程序设计
 
应用程序设计与一般的程序设计没有什么大的差别,因此一般程序设计的方法也适合于应用程序设计,其方法一般有:

  • 自定向下,或结合由下而上灵活运用;

  • 程序按功能模块化;

  • 使模块便于组装和调用;

  • 追求程序可读性,不过多采用难以理解的技巧。

   有了设计方法后,就要进行程序编码(也就是具体程序设计),编码是用到语言取决于DBMS语言系统。编码完成后就是调试程序。
  
上面的工作完成之后,数据库也就设计好了,下面的事情就是投入运行和进行维护了,下面我来学习也下数据库维护的工作有什么方面。
数据库维护
   数据库维护的工作一般包含三个方面:

  • 日常维护:就是对数据库中的数据随时按需要进行增、删、插入、修改或更新等

  • 定期维护:重构重组数据库

  • 故障维护:当数据库遭到意外破坏时,把它恢复到破坏前的状态

下面我们再用图表把数据库系统设计的流程总结一下:

   掌握了以上步骤,以后我们就可以有条不紊的进行数据库应用系统设计了。

   到这里数据库的原理篇,我们已经学习完了,您都掌握了吗?下面我们就要学习数据库的应用篇了,祝您在以后的学习过程能一帆风顺!(^-^)

 

源地址:

阅读(2895) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~