跳到主要内容

数据库基本概念

数据库系统

数据是数据库中存储的基本对象,是描述事物的符号记录。

数据的种类分为文本、图形、图像、音频、视频、学生的档案记录、货物的运输情况等。

数据库 DB

数据库 DB 是长期存储在计算机内、有组织的、可共享的大量数据的集合。

数据库的基本特征:

  • 数据按一定的数据模型组织、描述和存储
  • 可为各种用户共享
  • 冗余度较小
  • 数据独立性较高
  • 易扩展

数据库系统 DBS

DBS 是一个采用了数据库技术,有组织地、动态地存储大量相关数据,方便多用户访问的计算机系统。其由下面四个部分组成:

  • 数据库(统一管理、长期存储在计算机内的,有组织的相关数据的集合)
  • 硬件(构成计算机系统包括存储数据所需的外部设备)
  • 软件(操作系统、数据库管理系统及应用程序)
  • 人员(系统分析及数据库设计人员、应用程序员、最终用户、数据库管理员 DBA)

数据库管理系统 DBMS

实现对共享数据的组织、管理和存取。

包括数据定义、数据库操作、数据库运行管理、数据的存储管理、数据库的建立和维护等。

三级模式-两级映像

内模式:管理如何存储物理的数据,对应物理存储文件,优化、存放等。

模式:又称为概念模式,就是我们通常使用的基本表,根据应用、需求将物理表划分成一张张表。

外模式:对应数据库中的视图这个级别,将表进行一定的处理后再提供给用户使用。例如,将用户表中的用户名和密码组成视图提供给登录模块使用,而用户名中的其它列则不对该模块开放,增加了安全性。

提示

表是一个完整的模型,视图是表里面的一部分,正好是应用程序需要的那一部分,是一张假表,对视图进行修改,是不会影响真正的表的。

外模式-模式映像:是表和视图之间的映射,存在于概念级和外部级之间,若表中的数据发生了修改,只需要修改此映射,而无需修改应用程序。

模式-内模式映像:是表和数据的物理存储之间的映射,存在于概念级和内部级之间,若修改了数据存储方式,只需要修改此映射,而不需要去修改应用程序。

以上的数据库系统实际上是一个分层次的设计,从底至上称为物理级数据库(实际上为一个数据库文件)、概念级数据库、用户级数据库。

数据库设计

需要记住四个流程,每个流程要做什么以及产出物。

  1. 需求分析:即分析数据存储的要求,产出物有数据流图、数据字典、需求说明书。

  2. 概念结构设计:就是设计 E-R 图,也即实体-联系图,与物理实现无关,说明有哪些实体,实体有那些属性。

  3. 逻辑结构设计:将 E-R 图,转换成关系模式,也即转换成实际的表和表中的列属性,这里要考虑很多规范化的东西。

  4. 物理设计:根据生成的表等概念,生成物理数据库

数据模型

关系模型是二维表的形式表示的实体-联系模型,是由实体-联系模型转换而来的,经过开发人员设计的;

概念模型是从用户的角度进行建模的,是现实世界到信息世界的第一抽象,是真正的实体-联系模型。

网状模型表示实体类型及其实体之间的联系,一个事物和另外几个都有联系,形成一张网。

面型对象模型是采用面向对象的方法设计数据库,以对象为单位,每个对象包括属性和方法,具有类和继承等特点。

数据模型的三要素:数据结构(所研究的对象类型的集合)、数据操作(对数据库中的各种对象允许执行的操作的集合)、数据的约束条件(一组完整性规则的集合)

E-R 模型

用 E-R 图来描述概念数据模型,世界是由一组称为实体的基本对象和这些对象之间的联系构成的。

在 E-R 模型中,使用椭圆表示属性(一般没有)、矩形表示实体、双边矩形表示弱实体、菱形表示联系,联系的两端要填写联系类型,示例如下图:

超市管理系统 E-R 图示例
  • 实体:客观存在并可相互区别的事物。可以是具体的人、事、物或抽象概念。如 人、汽车、图书、账户、贷款。

  • 弱实体和强实体:弱实体依赖于强实体的存在而存在,用双边矩形表示。上图中的经理、部门经理、业务员都是弱实体,依赖于员工这个强实体。

  • 实体集: 具有相同类型和共享相同属性的实体的集合,如学生、课程。

  • 属性:实体所具有的特性

  • 属性分类:简单属性和复合属性(多个简单属性组成,比如家庭住址);单值属性和多值属性(可以取多个值的属性,比如电话号码);NULL 属性(无意义);派生属性(由其它的属性计算生成)。

  • 域:属性的取值范围称为该属性的域。

  • 码(Key):唯一标识实体的属性集。

  • 联系:现实世界中事物内部以及事物之间的联系,在 E-R 图中反映为实体内部的联系和实体之间的联系。

  • 联系类型:一对一 1:1,一对多 1:N、多对多 N:N

两个以上实体型的联系

两个以上实体型的联系

关系模型

关系模型中数据的逻辑结构是一张二维表,由行列组成。用表格结构表达实体集,用外键标识实体间的联系。如下图。

行叫做元组或水平记录,列叫做属性。

  • 优点:建立在严格的数学概念基础上;概念单一、结构简单、清晰,用户易懂易用;存取路径对用户透明,从而数据独立性好、安全性好,简化数据库开发工作。
  • 缺点:由于存取路径透明,查询效率往往不如非关系数据模型。

E-R 模型转换为关系模型

提示

需求分析之后就是概念结构设计,概念结构设计就是设计出 E-R 图,然后就是逻辑结构设计,即将 E-R 图转换成关系模型(是我们真正需要的),物理设计就是根据关系模型创建出物理的表结构。

每个实体都对应一个关系模式,不包含弱实体(比如员工和经理,可以用一个属性标识);联系分为三类:

  • 1:1 联系中,联系可以放到任意的两端实体中,作为一个属性,(要保证1:1两端的关联),也可以转换为一个单独的关系模式。
  • 1:N 联系中,联系可以单独作为一个关系模式,也可以在 N 端加入 1 端实体的主键
  • M:N 联系中,联系必须作为一个单独的关系模式,其主键是 M 和 N 端的联合主键。

关系代数

关系代数就是指表(关系模型)之间的逻辑运算。

基础运算

  • 并:结果是两张表中所有记录数合并,相同记录只显示一次。
  • 交:结果是两张表中相同的记录。
  • 差:S1S2S_1-S_2 ,结果是 S1S_1 表中有而 S2S_2 表中没有的那些记录。

笛卡尔积

S1×S2S_1 \times S_2,产生的结果包括 S1S_1S2S_2 的所有的属性列,并且 S1S_1 中每条记录依次和 S2S_2 中所有记录组合成一条记录,最终属性列为 S1+S2S_1+S_2 属性列,记录数为 S1×S2S_1 \times S_2 记录数。

提示

并关系重复的记录只会显示一次,而笛卡尔积重复的也会重复显示。

笛卡尔积的列是两张表的列。

  • 投影(Π\Pi):实际是按条件选择某关系模式中的某列,列也可以用数字表示
  • 选择(σ\sigma):实际是按条件选择某关系模式中的某条记录

自然连接

自然连接的符号是 \Join, 自然连接的结果 显示全部的属性列,但是相同属性列只显示一次,显示两个关系模式中属性相同且值相同的记录。

设有关系 R、S 如下左图所示,自然连接结果如下右图所示:

提示

笛卡尔积转自然连接,使用投影运算从笛卡尔积中挑选出不重复的列,然后使用选择运算把行相同的也筛选出来。

效率问题:关系代数运算的效率,归根结底是看参数运算的两张表格的属性列数和记录数,属性列和和记录数越少,参与运算的次数自然越少,效率就越高。因此,效率高的运算一般都是在两张表格参与运算之前就将条件判断完。