数据库基本概念

数据库基本概念

1 - 什么是数据库?

数据库是在计算机上组织、存储和共享数据的方法。

数据库的应用举例:

  • 门户网站中的账户信息管理

  • 电子商务中的客户信息记录

  • 企业管理信息系统

  • 学校的学籍管理、档案管理

对用户来说,数据库是模拟现实世界中某些企业活动的信息集合。数据库中所存储的数据,来源于现实世界的信息流,都是用来描述现实世界中一些事物的某些方面的特征及其相互联系的。

2 - 数据的常用术语

  1. 属性

    属性为事物的某一方面特征的抽象描述。如学生这个事物,可以通过学生的“姓名”、“学号”、“性别”、“年龄”和“政治面貌”等特征来描述,这些特征称为属性。

  2. 属性值

    属性值为属性的具体取值。例如学生丁力,其“姓名”为丁力,“学号”为79201,“性别”为男,“年龄”为21,“政治面貌”为党员,这些具体值称为属性值。

  3. 域为属性的取值范围,称之为属性的域。例如学生的“年龄”为16~30范围内的正整数,其域为(16,30)。

  4. 实体

    若干个属性的属性值组成的集合,用来表征一个实体(也叫记录)。例如(丁力、79201、男、21、党员)表示学生丁力。

    同类实体的集合组成了实体集,例如描述全部学生的实体就构成了实体集,反映了一个学校全部学生的情况。

  5. 关键字

    关键字为唯一标识实体的属性或属性组合。

    例如在学生实体集中,学号可以唯一地标识每个学生实体,所以学号为关键字。在有些实体集中,可以有多个关键字。

    例如学生实体集,假设学生姓名没有第一名,那么属性“姓名”也可以作为关键字。我们通常选定其中一个,被选的那一个关键字称为主关键字,其他的关键字为候选关键字。

  6. 次关键字

    次关键字,在实体集中经常选择一些不能唯一标识实体的属性来标识实体,这样的属性叫次关键字。

    例如 “年龄”、“政治面貌” 这些属性都可以充当次关键字。

3 - 数据库构成

数据库系统有3个主要的组成部分:

  1. 数据库(Database System)

    用于存储数据的地方

  2. 数据库管理系统(DataBase Management System,简称 DBMS)

    用于用户创建,管理和维护数据库时所使用的软件。 DBMS能定义数据存储结构,提供数据的操作机制,维护数据库的安全性,完整性和可靠性。

  3. 数据库应用程序(DataBase Application)

    为了提高数据库系统的处理能力,作为所使用的管理数据库的软件补充,数据库应用程序负责与 DBMS 进行通信

4 - 数据库系统的主要特征

数据库技术之所以能够在近20年内如此快速的发展,受到计算机科学界普遍的重视,成为引人注目的一门新兴学科,是因为它具有独特的特征。

它主要有如下的特征:

  • 实现数据共享

    这是促成数据库技术发展的一个重要原因,也正是数据库技术先进性的一个重要体现。

    数据共享性包括三个方面:

    1. 所有用户可以同时存取数据库的数据。

    2. 未来的新用户与当前用户可以同时存取数据库中的数据。

    3. 用户可以通过多种程序设计语言或命令语言与数据库接口来使用数据库

  • 减少数据的冗余度

    在数据库技术产生以前的文件系统中,用户根据各自的应用建立文件,即使不同的应用程序需要使用的数据中有许多是相同的,也必须建立各自的文件,其原因就在于文件系统中数据不能充分共享(文件系统中只提供文件一级的共享,不提供记录级的共享)。因此使得存储的数据存在着大量的重复,这种现象称为数据的冗余。

    下面我们通过一个例子来说明这个问题。 假设现在要管理的对象是一个学校,它由从事子系统、业务子系统、总务子系统组成,各子系统根据自己的特点及需要选择相应的数据格式,存放自己感兴趣的数据。它由这样三种记录组成,如图所示

     

     

  • 维护数据的独立性

    所谓数据的独立性,就是应用程序不必因为数据的存储结构的变化而修改,即应用程序与数据的结构之间不存在依赖关系,这是数据库系统所努力追求实现的一个目标。数据库系统结构之所以复杂,这是一个重要原因。

    数据库系统的数据独立性分为两级:

    1. 物理独立性

      数据库的物理结构的变化(如物理设备的更换、物理位置的变化、存取方法的改变等等),不影响数据库的逻辑结构,从而也就影响不到应用程序,不会导致应用程序的修改。

    2. 逻辑独立性

      数据库逻辑结构的变化(如数据定义的修改、新数据类型的增加、数据间联系的变更等等),不致影响到用户原有应用程序的修改。

    这两种独立性统称为数据独立性,数据独立性的目的,就是应用程序尽可能不受数据的影响。这两种数据独立性是靠数据库管理系统来实现的,从而大大减轻了程序员的负担。

  • 保密性

  • 集中控制

5 - 数据模型

现实世界中的事物是彼此关联的,任何一个实体都不是孤立存在的,因此描述实体的数据也是相互联系的。数据系统的一个核心问题,就是研究如何表示和处理实体之间的联系。

表示实体及其实体之间联系的数据库的数据结构称为数据模型

我们把数据库系统中所包含的所有记录类型,按照它们之间的联系组合在一起,构成一个整体。这个整体的结构就称为数据库的数据模型,它是数据库中数据全局逻辑结构的描述。

通常,数据模型可以表示成由这样两个集合组成:

DM = (R,L)
其中,R表示记录的集合,L表示记录之间联系的集合。

如果按照记录间联系的表示方式,对数据模型加以分类的话,那么数据模型可以大致分成下列三种:

  1. 层次模型

  2. 网状模型

  3. 关系模型

前两种又称为格式化数据模型。

数据模型的好坏,直接影响数据库的性能。数据模型的选择,是设计数据库的一项首要任务。

格式化数据模型

在数据库中,把可以用图(这里用有向图)来表示的数据模型,称为格式化数据模型。而格式化数据模型又按照图的特点分为层次模型和网状模型两种。这两种模型都是以记录型做为图中的结点,而图中的边则用来表示记录型之间的联系。

层次模型

以记录型为结点的有向树。在树中,把无双亲的记录称为根记录,其他记录称为从属记录。除根记录外,任何记录只有一个父记录。一个父记录可以有多个子记录。人根记录开始,一直到最底下一层的记录为止,所具有的层次称为该数据模型的层次。

如下图就是一个层次模型的例子:

 

在层次模型中,每个记录(除根记录外)只有一个双亲,记录之间的联系可以唯一地用双亲表示。在层次模型中,总是从双亲记录指向子女记录。所以说,记录之间的联系可以不用命名,只要指出其双亲,就可以找到其子女。在层次模型中,从根记录开始,按照双亲 - 子女联系,依次连接的记录序列称为层次路径。在层次模型中,数据是按层次路径读取的。

网状模型

是以记录型为结点的网状结构。这种结构必须满足如下条件: (1)可以有一个以上的结点无双亲 (2)至少有一个结点有多于一个的双亲

以下是学生的网状模型:

 

网状模型和层次模型的差别是:

  • 一个子结点可以有两个或多个父结点

  • 在两个结点之间可以有两种或多种联系

关系模型

层次模型和网状模型的数据系统被开发出来之后,在继续开发新型数据库系统的工作中,人们发现层次模型和网状模型缺乏充实的理论基础,难以开展深入的理论研究。于是人们就开始寻求具有较充实的理论基础的数据模型。在这个基调下,IBM 公司的 E·F·Codd 从1970年~1974年发表了一系列有关关系模型的论文,从而奠定了关系数据库的设计基础

用表格数据来表示实体和实体之间联系的模型,叫关系模型

在关系模型中,描述各个实体之间联系的信息也隐含在关系中,所以在关系中应存放两类数据:

  1. 实体本身的数据

  2. 实体间的联系

这些关系组合在一起,构成了一个数据库。这些关系不是孤立的,而是互相有联系的(即隐含着实体之间的联系)。各个关系建立联系的方法,通常有以下二种:

  1. 两个关系通过定义相同的属性名,反映它们之间的联系

  2. 定义第三个关系,把两个关系建立起来

例如:

教师情况表

学生情况表

 学生学习情况表

教师任课情况表

课程情况表

关系 “教师任课情况表” 中的属性职工号,取自关系“教师情况表”;而属性课程号,取自关系“课程情况表”
通过“教师任课表”这个关系,就使得关系“教师情况表”和关系“课程情况表”建立了联系。
所以关系“教师任课情况表”,就相当于在这两个关系中架起了一座桥梁。

关系模型是通过关系中的数据来表示实体间的联系的。 关系是元组的集合。如果表格有n列,则称该关系为n元关系。关系模型中的关系应有如下特点:

  • 关系中的每一列属性,都是不能再分的基本字段

  • 各列被指定一个相异的名字

  • 各行相异,不允许重复

  • 行、列次序无关紧要

6 - 关系数据库

一个真正的数据库系统由硬件和软件两个方面构成。比如我们要使用Oracle数据库,需要安装Oracle公司提供的数据库服务器软件和一台用于安装数据库管理系统的高性能的计算机服务器。

当今应用最普遍的是关系型数据库管理系统。目前,市场上流行的几种大型数据库,如Oracle、DB2、Sybase、MS SQL Server等都是关系型数据库管理系统。

6.1 实体关系模型

在数据库的设计阶段,需要创建逻辑模型。关系数据库的逻辑模型叫做实体—关系模型。

实体模型化最常用的工具是实体关系图,简称E–R(Entity–Relationship)图,它是一种简单的图形技术,用来定义数据库中需要的表、字段和关系。它用于数据库设计的第一步,与我们使用的具体的数据库管理系统无关。

典型的实体关系模型有以下三个要素:

  • 实体

    客观存在并可以相互区分的事物称为实体,包括有意义的人、地方或事物,如学生、教师、课程、成绩等。

  • 属性

    实体所具有的特性称为属性,一个实体可以用若干属性来刻画,如学生实体具有学号、姓名、性别等属性。

  • 关系

    两个实体之间的相关性,如学生与课程之间的关系,教师与课程之间的关系。

    实体与实体之间的关系分为三种:

    • 一对一(1:1):表示一个实体中的一种情况只与另一个实体中的一种情况有关系。

      比如:学生与学生证,一个学生只对应一个学生证,一个学生证只对应一个学生

    • 一对多(1:N):表示一个实体中的一种情况与另一个实体中的多种情况有关系。

      比如:班级与学生,一个班级可有多个学生,而一个学生只能属于某一个班级

    • 多对多(M:N):表示一个实体中的一种情况与另一个实体中的多种情况有关系,而第二个实体中的一种情况也与第一个实体中的多种情况有关系。

      比如:教师与学生,一个学生有多个教师为其上课,一个教师要为多个学生上课

    以上三种关系可用图表示

6.2 ER 图

在E–R模型图中,用实线表示实体之间必须有关系,用虚线表示实体之间是可选的关系,用三角表示一对多关系。

  • 在实体的属性中,在属性前用 * 表示必须有的属性,用 # 表示惟一属性,小写字母 o 代表可选属性

  • 在每一实体上,要定义一个惟一表示该实体的标识符,称为UID(UNIQUE IDENTIFIER)

下图表示了三个实体之间关系的E–R图,其中系部ID、专业ID和教师ID分别是三个实体的UID。

 

7 - 规范化

7.1 第一范式(1NF)

数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。

符合第一范式: 学号, 姓名, 年龄,地址 不符合第一范式: 学号, 姓名年龄,地址

7.2 第二范式(2NF)

数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。

示例

学生选课表(学号, 姓名, 年龄, 课程名称, 成绩, 学分)
   1   zhangsan  20   语文   80    5
   1   zhangsan  20   数学   85    2
  • 不符合第二范式: 学号和课程名称共同组成主键,学生信息只依赖于学号,就是部分函数依赖,课程学分只依赖于课程名称,也是部分函数依赖

  • 引起的问题:

    1. 数据冗余

      • 同一门课程由 n 个学生选修,“学分” 就重复n-1次

      • 同一个学生选修了门课程,姓名和年龄就重复了n-1次。

    2. 更新异常

      • 若调整了某门课程的学分,数据表中所有行的“学分”值都要更新

    3. 插入异常

      • 假设要开设一门新的课程,暂时还没有人选修,课程名称和学分也无法记录入数据库。

    4. 删除异常

      • 假设一批学生已经完成课程的选修,应该从数据库表中删除,但是课程名称和学分信息也被删除了

  • 把选课关系表Ss改为如下三个表:

    学生:Sn(学号, 姓名, 年龄)
    课程:s(课程名称, 学分)
    选课关系:Ss(学号, 课程名称, 成绩)

    这样的数据库表是符合第二范式的,消除了数据冗余、更新异常、插入异常和删除异常。另外,所有单关键字的数据库表都符合第二范式,因为不可能存在组合关键字。

7.3 第三范式(3NF)

在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖。

所谓传递函数依赖,指的是如果存在"A → → "的决定关系,则传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系:关键字段 → 非关键字段x → 非关键字段y

示例:

学生关系表为Sn(学号, 姓名, 年龄, 所在学院, 学院地点, 学院电话)
​
关键字为单一关键字"学号"
  • 这个数据库是符合2NF的,但是不符合3NF

    存在非关键字段 “学院地点”、“学院电话” 对关键字段 “学号” 的传递函数依赖:(学号) → (所在学院) → (学院地点,学院电话)

  • 把学生关系表分为如下两个表:

    学生:(学号, 姓名, 年龄, 所在学院)
    学院:(学院, 地点, 电话)

    这样的数据库表是符合第三范式的,消除了数据冗余、更新异常、插入异常和删除异常。

注意:满足第一范式、第二范式、第三范式的数据库结构不一定是最优的数据库设计。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论

打赏作者

James_Kevin

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值