0 前言
本文通过一个实例,来讲解数据模型的基础概念。
要求设计一个数据库的数据模型,统计出你的宿舍每个人(4个人)的信息,要求包括
- 个人信息:学号、姓名、班级、年级、学院
- 选课情况:学号、课程号、课程名称、学分
- 获奖情况:学号、获奖内容、颁发单位
1 抽象:人类世界与计算机世界之间的“中转站”
所谓抽象,就是将现实问题,转换为抽象模型,然后据此,翻译为计算机语言,抽象模型众多,抽象方法众多,不具体展开,只需有一个抽象的概念即可,在不同领域会有不同的抽象方法。
2 众多抽象模型之一:数据模型
数据模型,是对现实世界的数据,进行抽象,我们举个例子,就用开篇中的一个问题。
个人信息:学号、姓名、班级、年级、学院
我们把这个问题,进行抽象,得到的结果如下(答案不唯一,这只是其中一种结果,事实上,对于抽象结果,是没用答案的,只要好用就行)
是的,我们将文字,抽象成了一个二维的表格。
这种模型,就是数据库最重要的模型:关系模型,这个过程,就是关系模型的构建。
该模型的数据结构,就是关系结构,它包含的操作,有增、删、改、查等,同时还会有一些约束,这里不展开。
关系模型,只是数据模型的一种,其他的还有
- 网状模型:本质就是图
- 层次模型:本质就是树
- 面向对象数据模型
- 对象关系数据模型
- 半结构化数据模型
有各种各种的数据模型,只需要了解即可,重点关注关系模型。
3 关系模型的细节
关系模型,可以分成列和行两个重要的属性。
列包含了实体的属性名称及其数据类型:
行(row)是数据行,包含了各种各样,符合列(column)要求的数据。
4 将数据模型进一步抽象:概念模型
这里,我们对之前谈及的几种关系模型(网状、层次、关系模型……),进行进一步的抽象,让你理解概念模型。
将几种具体的关系模型,抽离出它们的共性,组合为一个类,这就是抽象过程,得到的结果就是概念模型,它有以下重要的概念。
- 实体:现实世界的东西,客观存在并且可以相互区别的事物,比如我们刚才说的,学生个人信息就是一个实体,基本来说,几乎你能够知道的现实世界的所有东西,都可以作为实体,甚至看不见的但是客观存在的,也是实体,比如“我和学校的关系”(我在学校学习)。
- 属性:实体所具备的特性,比如学生个人信息有学号、姓名、班级……,这些就是实体的属性
- key:被称为 “码”或者“键” ,它是能够唯一标识实体的属性,比如学号就是key
- 实体型
- 实体集
- 联系
5 抽象过程
之前是为了讲述知识,但这并不是实际的操作过程。
我们将概念模型称为第一层抽象,将各种数据模型称为第二层抽象,正确的操作顺序应该是这样的。
6 学习过程
对于初学者来说,学习过程与正常开发设计过程是不一样的
学习过程应该是:
- 先会使用基本的SQL语句进行简单数据的创建
- 再结合关系模型,以及关系模型的理论,进行进一步研究
- 理解关系模型的数学观念,比如笛卡尔积等等
- 结合概念模型,完善之前学会的内容
- 新的实战,继续重复上面的步骤
- 如果你足够熟悉了,那么,可以按照正常的开发顺序进行了