以下课程来源于MOOC学习—原课程请见:数据库原理与应用
考研复习
前言:
抽象与模型
1.对数据不同抽象层次中的对象采用不同的模型进行描述
人的姓名、性别—>概念模型---->DBMS支持的数据模型---->物理模型
2.概念模型:按用户观点对信息建模
可以采用实体联系模型E-R图描述
3.数据模型:
- 逻辑数据模型:提供表示和组织数据的方法
- 物理数据模型:对最底层数据的抽象;描述数据在系统内部的表示方式和存储方法
概念模型
- 实体
显示世界客观存在并能相互区分的事物,经过加工,抽象成为信息世界的实体;
信息世界基本单位;可以具体也可以抽象;需要命名
- 属性:现实世界的事物所具有的特征反映在其对应实体上;一个实体可以有若干属性
- 实体型:属性名 的集合来抽象,刻画同类实体【学生(学号,姓名)】
- 实体集:同一类型实体的集合,有相同的属性集
概念模型是现实世界的第一层抽象,数据库技术中常用的概念模型是( 实体-联系模型 )
ER图的关键词
- 属性
- 关键字:唯一标识实体的最小属性集
- 联系:形式【实体集内和集间】元数【一元1-1 二元1-n 多元m-n 】
补充:IS-A联系
实体A和实体B存在IS-A联系,实体B 通过IS-A联系 继承A中所有属性和与A相关的联系,同时拥有自己特有的属性
补充:弱实体:某个实体的存在依赖于其他实体(常规或者强实体),被称为弱实体
比如家庭成员 依赖于 学生;家庭成员是弱实体(用双线矩形框和双菱形表示)
数据模型
严格定义一组概念的集合—精确描述系统的静态特性,动态特性和完整性约束条件
组成要素:数据结构+数据操作+完整性约束
数据结构:描述数据库模式【描述对象类型的集合】
数据操作:必须定义操作的符号,确切含义,操作规则和实现的语言
完整性约束:保证数据的正确,有效,相容,必须满足的基本通用的原则
数据库模型 的演变
演变过程是数据库技术发展的一条主线
层次模型
基于树的结构,按照有序树的结构来组织,只能表示1:N的联系
网状模型
采用网状结构,描述M:N;编程复杂;代表DBTG系统
关系模型【广泛】
1970年提出, ACM图灵奖,建立在集合论中“关系”概念的基础之上;操作都是集合的操作
数据结构单一—关系可以表示实体也可以用描述实体之间的联系
只要用单一的关系结构就可以表示实体和实体间的联系
半结构化数据模型
面向对象模型
基本概念是对象和类
现实世界的任意实体都是对象
- 一个对象可以包含多个属性
- 对象可以包含若干方法
- 对象是封装的
- 对象之间通信通过消息传递实现
共享同一属性的集合 和方法集合的所有对象 组合在一起构成一个对象类(类),一个对象是某一个类的实例
- 类可以有嵌套结构,直接、间接从祖先继承所有的属性和方法
过:对象关系模型
关系、关系模式、关系模型的区别
-
关系:一个关系对应通常说的一张表
-
关系模式:关系的描述
-
关系模型:关系模型由关系数据结构,关系操作集合,关系完整性约束三部分组成.
-
关系和关系模式的区别
-
关系模式是型,关系是值,关系模式是对关系的描述
-
关系是关系模式在某一个时刻的状态或者内容,关系模式是静态的,稳定的,
-
关系是动态的,随时间不断变化的,因为关系操作在不断地更新着数据库中的数据
-
类似于面向对象程序设计中”类“与”对象“的区别。”关系“是”关系模式“的一个实例,
可以把**”关系”理解为一张带数据的表,而“关系模式”是这张数据表的表结构。**
-
-
关系模型和关系的区别
- 关系模型包含关系,关系是关系模型的数据结构,在关系模型中,
- 现实世界的实体以及实体间的各级联系均用单一的结构类型,即关系来表示
网上搜索文章,补充上述:三者之间的区别
mySQL 为什么叫“关系”模型
关系的定义
关系数据库采用的数据模型是关系模型——反过来说可能更合适,
即数据库采用了关系模型,因此才被称为关系数据库。
那么,这里所说的“关系”指的是什么呢?深入思考的话会发现,其实这个词很抽象,不太容易理解,而且很容易与我们日常生活中用的“人际关系”“关系紧张”等词中的“关系”混淆。既然如此,从一开始就不使用“关系”这样的抽象词语,叫它“表”模型不是也行吗?所谓关系,说到底不还是二维表吗?像这样不无道理的疑问,从关系模型诞生之日起已经被提出过很多次了。“总说关系、关系的到底是什么意思?”
关系和表的区别:
-
关系中不允许存在重复的元组(tuple),而表中可以存在。即,关系是通常说的不允许存在重复元素的集合,而表是多重集合
-
关系中的元组没有从上往下的顺序,而表中的行有从上往下的顺序
-
关系中的属性没有从左往右的顺序,而表中的列有从左往右的顺序
-
关系中所有的属性的值都是不可分割的,而表中列的值是可以分割的。换句话说,关系中的属性满足第一范式,而表中的列不满足第一范式
仅从列的这几条就能看出,关系和表之间的区别还是很大。与关系相比,表的定义不太严谨,不明确。在前文中我们用了很多次“元组”和“属性”这样的词,大家有没有觉得“元组≈行”“属性≈列”呢?
实际工作中把“列”称为“属性”,把“行数”称为“势”也并没有特别的好处。
关系模型是以数学中的集合论为基础的,因此沿用了集合论的一些术语,我们了解了这一点就可以了。不过,阅读一些偏理论的比较严谨的书时,可能会发现作者习惯使用“属性”代替“列”,使用“元组”代替“行”,所以知道它们的对应关系还是有好处的。
关系的定义可以用下面这样一个公式来给出。R ⊆ (D1×D2×D3 ··· ×Dn)
(关系用符号 R 表示,属性用符号 Ai 表示,属性的定义域用符号 Di 表示)
这个公式读作“关系 R 是定义域 D1, D2, …, Dn 的笛卡儿积的子集”。
,使用“元组”代替“行”,所以知道它们的对应关系还是有好处的。
关系的定义可以用下面这样一个公式来给出。R ⊆ (D1×D2×D3 ··· ×Dn)
(关系用符号 R 表示,属性用符号 Ai 表示,属性的定义域用符号 Di 表示)
这个公式读作“关系 R 是定义域 D1, D2, …, Dn 的笛卡儿积的子集”。
其实笛卡儿积是指“使用各个属性的定义域生成的组合数最多的集合”。