开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天,点击查看活动详情
数据库
第一章
第二节数据模型
是对现实世界数据特征的抽象。
例如沙盘是对现实世界地形的抽象,房地产里面的房子模型是对现实世界房子的抽象。因此,数据模型就是对现实数据的抽象。例如表现一个人的特征,有姓名,学号等,这些数据特征就是一个数据模型。
数据模型要满足三个要求:
- 能比较真实地模拟现实世界。(模型要能很好的表现现实世界中的事物,例如学生的学籍管理,要有学号,姓名,身份证号等表现一个学生的学籍)
- 容易为人理解。
- 便于在计算机上实现。
数据模型分为两类:
- 概念模型:也叫信息模型。它是按用户的观点对数据和信息建模,主要用于数据库设计。(根据用户对数据的理解,设计出这样一个具体的模型。)
- 逻辑模型和物理模型:
- 逻辑模型:包括层次模型(例如按照树状结构设计一个数据模型,父亲下面有一个儿子和女儿,而儿子和女儿下面还有儿子和女儿,这样的层级关系就是层次模型。)、网状模型、关系模型(以二维表设计的模型)、面向对象模型和对象关系模型等。它是按计算机系统的观点和数据建模,主要用于DBMS的实现。
- 物理模型:是对数据最底层的抽象,数据在系统内部的表示方式和存取方式,在磁盘或磁带的存储方式和存取方法。(也就是数据是怎么存储的,用什么方式读取)。
概念模型和逻辑模型以及物理模型基本上完整的描述了数据库系统的实现。例如从第一个概念模型对数据库的一个设计和建立,到逻辑模型对于数据的组织结构方式(是关系还是网状等),再到物理模型对于数据的录入存储等。
概念模型
概念模型是现实世界与信息世界的一个中间层次,以现实世界而言,概念模型是描述现实世界的数据特征,以计算机世界而言,能让计算机识别并且存储起来。
信息世界中的基本概念
- 实体(entity):客观存在并且能相互区分的事物。
- 属性(attribute):实体所具有的某一项特征就是属性。(例如:小明身高170,那么这个身高就是一个特征)
- 码(key):唯一标识实体的属性集就是码。(例如身份证号就是标识一个人唯一身份的码)
- 实体型(entity type):用实体名以及属性名集合来抽象和刻画同类实体。(例如:学生(姓名,学号,性别,身份证号,住址)就是一个实体型)
- 域(domain):一组具有相同类型的值的集合。属性的取值来自于某个域。(例如数学科目的成绩范围是0-100,那么0-100就是一个域)
- 实体集(entity set):相同类型的实体集合。(例如全体学生就是实体集)
- 联系(relationship):实体与实体之间的关系。实体内部的联系是指的组成实体的各属性之间的联系。实体之间的联系通常是不同实体集之间的联系。(例如老师和学生之间的联系是老师教学生,课程和学生之间的联系是学生选择课程。)
-
实体之间的联系有一对多,多对一,多对多。学生和老师之间就是多对多,一个老师可以教多个学生,一个学生也可以有多个老师
-
两个实体之间的联系
一对一
对于实体集A中的每一个实体,实体集B中有且至多有一个实体与之联系,反之亦然。记作 1:1
一对多
对于实体集A中的每一个实体,实体集B中有且有多个实体与之联系,反之,实体集B中的每一个实体,实体集A中只有一个实体与之联系。记作 1:n
多对多
对于实体集A中的每一个实体,实体集B中有且有多个实体与之联系,反之亦然。记作 n:m。
两个实体以上的联系
一对多
若实体型E1,E2,....,En之间存在联系,对于Ei中给定的实体,最多只和Ei中的一个实体相联系,则说Ei与E1....之间是一对多。(从Ei中取出多个实体,但只能和Ei中一个实体联系,称为一对多)
单个实体型内部的联系
概念模型的一种表示方法:实体——联系图(E-R图)
- 实体型:用矩形表示。框内写明实体名。
- 属性:用椭圆表示。框内写明实体属性,并用无向边将实体与属性相连接。
- 联系:用棱形表示,框内写明实体之间的联系。并用无向边将实体之间连接起来,并在无向边边上标注联系的类型(1:1,1:n,m:n),如果一个联系也有属性,也需要使用无向边连接属性和联系。
数据模型的组成要素
数据模型通常由数据结构、数据操作和完整性约束组成。
- 数据结构:描述数据库的组成对象以及对象之间的关系。
(就是数据的组成方式,是关系结构还是网状等)。
- 数据操作:数据库主要有查询和更新(包括插入、删除等);
(就是对数据的各种更新查询操作,我想根据身份证号码知道他的姓名,可以利用查询实现。)
- 完整性约束条件:是一组完整性规则。
(规定一个科目的成绩最高是100,那么就不能超过100。例如在关系模型中,任何关系都必须满足实体完整性和参照完整性两个条件。实体完整性:每条记录都需要使用一个例如编号等的属性去代表这条数据的唯一性,例如学籍系统里的小明,通过身份证号就可以唯一确定小明身份。参照完整性:例如学号001的学生表里代表的是张三,在成绩表中,学号001所代表的也应该是张三)。