数据库原理与应用 第 1 章 · 第五节
课程第 1 章第五节 字段与记录文件与关键字术语对应层次模型层次的限制网状模型网状的代价关系模型关系的操作面向对象模型的定位
第 1 章 数据库系统概述 · 第五节

计算机世界与数据模型

字段、记录、文件,以及层次、网状、关系、面向对象四种模型
本 节 知 识 点
  1. 39字段与记录
  2. 40文件与关键字
  3. 41三个世界中各术语的对应关系
  4. 42层次模型
  5. 43层次模型的数据操纵与优缺点
  6. 44网状模型
  7. 45网状模型的数据操纵与优缺点
  8. 46关系模型
  9. 47关系模型的数据操纵与优缺点
  10. 48面向对象模型
  11. 49面向对象模型的优缺点
39
第 1 章 · 第五节

字段与记录

到了计算机世界,属性叫字段,一个实体的全部字段按固定顺序排在一起叫记录。

第 39 页课件

关键术语

字段Field
标记实体属性的命名单位,也叫数据项,对应信息世界的属性。
记录Record
字段的有序集合,对应信息世界的一个实体。

重 点“有序”两个字

课件的例子(c7,高等数学,60)括号里的顺序不能乱,第一个位置永远是课程号,第二个永远是课程名。有了固定顺序,计算机才知道每个位置上的值是什么意思,这也是为什么记录能只存值不存字段名。

打个比方

记录像一张填好的表单,字段是表单上的一个个空。空的位置印死在纸上,所以填的时候只需要写内容,不必再写一遍“姓名”“学号”。

想一想

手机通讯录里的一个联系人,包含哪几个字段?

40
第 1 章 · 第五节

文件与关键字

同一类记录放在一起叫文件,能唯一认出一条记录的字段叫关键字。

第 40 页课件

关键术语

文件File
同一类记录的集合,对应信息世界的实体集。
关键字Key
能唯一标识文件中每个记录的字段或字段集,也简称键或码。

重 点

这里的“文件”是逻辑意义上的一堆同类记录,不一定是磁盘上的某一个 .txt 或 .xlsx,一张表在这个意义上也是一个文件。关键字对应信息世界的码,到了第 2 章关系模型里叫主键,三个名字说的是同一件事:靠它认出一条记录。

打个比方

全校学生的记录堆在一起是一个文件,学号是关键字。查一个人,报学号一次就中,报姓名可能查出三个。

想一想

课程文件里,课程名能不能当关键字?

41
第 1 章 · 第五节

三个世界中各术语的对应关系

一张对应表:事物总体、实体集、文件是一行,事物个体、实体、记录是一行,特征、属性、字段是一行。

第 41 页课件

重 点这张表怎么记

三列说的是同一件事的三种叫法,横着读:一堆学生在现实世界叫事物总体,在信息世界叫实体集,在计算机世界叫文件。一个学生叫事物个体、实体、记录。学号这种特征叫特征、属性、字段。最后一行“事物之间的联系、实体模型、数据模型”是下一部分的入口,数据模型就是计算机世界里描述实体和联系的方法。

打个比方

同一个人,在家叫小名,在学校叫学名,在公司叫工号。名字换了三次,人没有变。

练一练

信息世界的“属性”,到了计算机世界叫什么?
  1. A记录
  2. B文件
  3. C字段
  4. D关键字
答案 C

属性描述实体的一个特征,对应计算机世界的字段。记录对应实体,文件对应实体集,关键字对应码。

想一想

“2023 级全体学生”,在三个世界里分别叫什么?

42
第 1 章 · 第五节

层次模型

层次模型把数据组织成一棵有向树,只有一个根,每个结点只有一个双亲,父子之间是一对多。

第 42 页课件

关键术语

层次模型Hierarchical Model
用树形结构表示记录型之间联系的数据模型,最早出现的数据模型。

重 点三条规则合起来就是一棵树

有且仅有一个结点没有双亲,它是根,图上是 A。其余结点有且仅有一个双亲,B 和 C 的双亲都是 A。父子之间是一对多,A 可以有多个子女,但 B 不能同时有两个双亲。满足这三条的结构在数学上就叫树。

知道更多最早的层次数据库

IBM 的 IMS 是最早投入使用的层次数据库,二十世纪六十年代末为阿波罗登月计划管理火箭零部件清单而开发,至今仍在一些银行的核心系统里运行。

打个比方

电脑里的文件夹就是层次结构:一个盘符是根,每个文件夹只在一个上级文件夹里,一个文件夹可以装很多子文件夹。

想一想

你电脑的文件夹结构,符合层次模型的哪几条规定?

43
第 1 章 · 第五节

层次模型的数据操纵与优缺点

树的规矩带来了它的局限:没有双亲插不进去,删了双亲子女跟着没,多对多表示不了。

第 43 页课件

试一试试着删一个结点

这是课件上那棵树。试试删一个结点,或者插一个新结点。

重 点优缺点各归一句

三条优点都来自结构简单:层次分明所以查得快,规矩严所以完整性好。三条缺点都来自“必须经过双亲”:一个学生要选多门课,一门课又有多个学生,谁做谁的双亲都不对,所以多对多表示不了,插入删除处处受限,查子女还得先找到双亲。

想一想

要在层次模型里表示学生和课程的多对多关系,会遇到什么麻烦?

44
第 1 章 · 第五节

网状模型

网状模型放宽了树的限制:可以有多个根,一个结点可以有多个双亲,两个结点之间可以有多种联系。

第 44 页课件

关键术语

网状模型Network Model
用有向图结构表示记录型之间联系的数据模型。

重 点三个特点正对着层次模型的三条规则

层次模型说只有一个结点没有双亲,网状模型说可以有多个。层次模型说每个结点只有一个双亲,网状模型说可以有多个。层次模型父子之间只有一种联系,网状模型允许两个结点之间有多种联系。树是图的特例,去掉这些限制之后树就成了图。

知道更多

网状模型的标准由 CODASYL 组织的数据库任务组在 1969 年前后提出,代表产品是 IDMS。它和层次模型一样属于早期的非关系模型,现在很少有新系统采用。

打个比方

层次模型像家谱,只认一条父系线。网状模型像社交网络,一个人可以同时属于班级、社团、老乡群,谁都可以和谁有联系。

想一想

学生同时属于班级和社团,这种关系层次模型能表示吗,网状模型呢?

45
第 1 章 · 第五节

网状模型的数据操纵与优缺点

网状模型操作灵活、性能好,代价是结构和语言都复杂,用户还得了解它的实现细节。

第 45 页课件

重 点三条操作规则与层次模型逐条对照

层次模型没有双亲就插不进去,网状模型允许先插子女。层次模型删双亲会连带删子女,网状模型允许只删双亲。层次模型修改要改所有相应记录,网状模型只改指定的一条。缺点里“用户需要了解网状模型的实现细节”最要紧,它意味着找数据的路线要由用户自己指出,这跟前面讲的数据独立性正好相反。

打个比方

网状模型像一座路很多但没有导航的城市,去哪都有路,可每条路都得自己记。关系模型的做法是把导航交给系统,用户只报目的地。

想一想

“用户需要了解实现细节”,这跟数据独立性矛盾吗?

46
第 1 章 · 第五节

关系模型

关系模型用规范化的二维表表示数据,一张表就是一个关系,由表名、表头、表体三部分构成。

第 46 页课件

关键术语

关系模型Relational Model
用二维表表示实体和实体间联系的数据模型,今天绝大多数数据库采用的模型。
关系Relation
一张规范化的二维表,第 2 章会给出它的严格定义。

试一试表名、表头、表体各是哪一块

课程表 c
课程号课程名课时
c1数据库原理48
c7高等数学60
c3程序设计64
点一个部分,看它在表里是哪一块。

知道更多

关系模型由 IBM 的科德(E. F. Codd)在 1970 年提出,MySQL、Oracle、SQL Server 都是关系数据库。课件提到的教材表 1-1 到 1-5 是教学数据库 teaching 的五张表:教师 t、学生 s、课程 c、选课 sc、授课 tc,后面所有章节的例子都建立在这五张表上。

想一想

一张 Excel 表算不算一个关系?

47
第 1 章 · 第五节

关系模型的数据操纵与优缺点

关系模型的操作对象和结果都是表,用户只说要什么,不说怎么找,这正是它独立性高的原因。

第 47 页课件

重 点集合操作与“干什么”

一条查询进去的是一张表,出来的还是一张表,所以结果可以接着再查,这叫集合操作。用户只要指出“干什么”,例如找出所有选了数据库课的学生,怎么在磁盘上找是 DBMS 的事,这一点和网状模型正相反。缺点“查询效率不如非关系模型”是 1970 年代的说法,今天靠优化器和索引已经大大弥补。

打个比方

关系模型像点外卖只报菜名,网状模型像自己去菜市场买菜还要规划路线。报菜名的人不需要知道厨房在哪,厨房搬了家也照样能吃上饭。

想一想

“找出所有选了数据库课的学生”,用关系模型的说法你只需要说出什么?

48
第 1 章 · 第五节

面向对象模型

面向对象模型把实体看成对象,对象既有属性也有方法,类和类之间可以继承。

第 48 页课件

关键术语

面向对象模型Object-Oriented Model
把现实世界的实体模型化为对象,用类、属性、方法和继承来描述数据的模型。
继承Inheritance
子类自动拥有超类的属性和方法,再加上自己特有的部分。

重 点和关系模型差在哪

关系模型的表只存静态的属性,面向对象模型的对象还带着行为,也就是方法。课件的例子是机动车既有高度、重量这样的属性,也有加速、减速这样的方法。继承形成层次:机动车是超类,轿车和货车是子类,子类不用重新定义高度和重量。

打个比方

学过程序设计的可以直接对照类与对象的概念。没学过的把类当模具,对象当成品,继承当作在旧模具基础上刻出的新模具。

想一想

“学生”和“研究生”,谁是超类,谁是子类?

49
第 1 章 · 第五节

面向对象模型的优缺点

表达能力强,代价是模型复杂、需要的知识多,所以它没有取代关系模型。

第 49 页课件

重 点四种模型各自的位置

层次模型和网状模型是历史,关系模型是主流,面向对象模型是补充。今天的做法多半是在关系模型上加一些对象特性,MySQL 支持 JSON 类型的列,PostgreSQL 干脆叫自己对象关系数据库。学关系模型是这门课的主线,另外三种知道它们解决什么问题、为什么被替代就够了。

知道更多课件之外还有哪些模型

近十几年出现的文档模型、键值模型、图模型统称 NoSQL,1.5 节的大数据部分会碰到它们。这些不在本章范围,考试也不涉及。

想一想

四种数据模型里,你猜今天用得最多的是哪一种?

保山学院·人工智能教研室·曹鼎鼎