chapter-2数据库基本知识

以下课程来源于MOOC学习—原课程请见:数据库原理与应用
考研复习

前言:

抽象与模型

1.对数据不同抽象层次中的对象采用不同的模型进行描述

人的姓名、性别—>概念模型---->DBMS支持的数据模型---->物理模型

2.概念模型:按用户观点对信息建模

​ 可以采用实体联系模型E-R图描述

3.数据模型:

  • 逻辑数据模型:提供表示和组织数据的方法
  • 物理数据模型:对最底层数据的抽象;描述数据在系统内部的表示方式和存储方法

image-20210115153543659

概念模型

  1. 实体

显示世界客观存在并能相互区分的事物,经过加工,抽象成为信息世界的实体;

信息世界基本单位;可以具体也可以抽象;需要命名

  1. 属性:现实世界的事物所具有的特征反映在其对应实体上;一个实体可以有若干属性
  2. 实体型:属性名 的集合来抽象,刻画同类实体【学生(学号,姓名)】
  3. 实体集:同一类型实体的集合,有相同的属性集

概念模型是现实世界的第一层抽象,数据库技术中常用的概念模型是( 实体-联系模型 )

image-20210115154002565

ER图的关键词

  • 属性
  • 关键字:唯一标识实体的最小属性集
  • 联系:形式【实体集内和集间】元数【一元1-1 二元1-n 多元m-n 】

image-20210115154223723

补充:IS-A联系

实体A和实体B存在IS-A联系,实体B 通过IS-A联系 继承A中所有属性和与A相关的联系,同时拥有自己特有的属性

image-20210115154443021

补充:弱实体:某个实体的存在依赖于其他实体(常规或者强实体),被称为弱实体

比如家庭成员 依赖于 学生;家庭成员是弱实体(用双线矩形框和双菱形表示)

数据模型

严格定义一组概念的集合—精确描述系统的静态特性,动态特性和完整性约束条件

组成要素:数据结构+数据操作+完整性约束

数据结构:描述数据库模式【描述对象类型的集合】

数据操作:必须定义操作的符号,确切含义,操作规则和实现的语言

完整性约束:保证数据的正确,有效,相容,必须满足的基本通用的原则

数据库模型 的演变

演变过程是数据库技术发展的一条主线

层次模型

基于树的结构,按照有序树的结构来组织,只能表示1:N的联系

网状模型

采用网状结构描述M:N;编程复杂;代表DBTG系统

关系模型【广泛】

1970年提出, ACM图灵奖,建立在集合论中“关系”概念的基础之上;操作都是集合的操作

数据结构单一—关系可以表示实体也可以用描述实体之间的联系

只要用单一的关系结构就可以表示实体和实体间的联系

半结构化数据模型

image-20210115230832280

image-20210115230920781

面向对象模型

基本概念是对象和类

现实世界的任意实体都是对象

  • 一个对象可以包含多个属性
  • 对象可以包含若干方法
  • 对象是封装的
  • 对象之间通信通过消息传递实现

共享同一属性的集合 和方法集合的所有对象 组合在一起构成一个对象类(类),一个对象是某一个类的实例

  • 类可以有嵌套结构,直接、间接从祖先继承所有的属性和方法

过:对象关系模型

关系、关系模式、关系模型的区别

  1. 关系:一个关系对应通常说的一张表

  2. 关系模式:关系的描述

  3. 关系模型:关系模型由关系数据结构,关系操作集合,关系完整性约束三部分组成.

  4. 关系和关系模式的区别

    • 关系模式是型,关系是值,关系模式是对关系的描述

    • 关系是关系模式在某一个时刻的状态或者内容,关系模式是静态的,稳定的,

    • 关系是动态的,随时间不断变化的,因为关系操作在不断地更新着数据库中的数据

    • 类似于面向对象程序设计中”类“与”对象“的区别。”关系“是”关系模式“的一个实例,

    可以把**”关系”理解为一张带数据的表,而“关系模式”是这张数据表的表结构。**

  5. 关系模型和关系的区别

    • 关系模型包含关系,关系是关系模型的数据结构,在关系模型中,
    • 现实世界的实体以及实体间的各级联系均用单一的结构类型,即关系来表示

网上搜索文章,补充上述:三者之间的区别

mySQL 为什么叫“关系”模型

关系的定义

关系数据库采用的数据模型是关系模型——反过来说可能更合适,

​ 即数据库采用了关系模型,因此才被称为关系数据库。

​ 那么,这里所说的“关系”指的是什么呢?深入思考的话会发现,其实这个词很抽象,不太容易理解,而且很容易与我们日常生活中用的“人际关系”“关系紧张”等词中的“关系”混淆。既然如此,从一开始就不使用“关系”这样的抽象词语,叫它“表”模型不是也行吗?所谓关系,说到底不还是二维表吗?像这样不无道理的疑问,从关系模型诞生之日起已经被提出过很多次了。“总说关系、关系的到底是什么意思?”

关系和表的区别:

  1. 关系中不允许存在重复的元组(tuple),而表中可以存在。即,关系是通常说的不允许存在重复元素的集合,而表是多重集合

  2. 关系中的元组没有从上往下的顺序,而表中的行有从上往下的顺序

  3. 关系中的属性没有从左往右的顺序,而表中的列有从左往右的顺序

  4. 关系中所有的属性的值都是不可分割的,而表中列的值是可以分割的。换句话说,关系中的属性满足第一范式,而表中的列不满足第一范式

仅从列的这几条就能看出,关系和表之间的区别还是很大。与关系相比,表的定义不太严谨,不明确。在前文中我们用了很多次“元组”和“属性”这样的词,大家有没有觉得“元组≈行”“属性≈列”呢?

img

​ 实际工作中把“列”称为“属性”,把“行数”称为“势”也并没有特别的好处。

​ 关系模型是以数学中的集合论为基础的,因此沿用了集合论的一些术语,我们了解了这一点就可以了。不过,阅读一些偏理论的比较严谨的书时,可能会发现作者习惯使用“属性”代替“列”,使用“元组”代替“行”,所以知道它们的对应关系还是有好处的。

关系的定义可以用下面这样一个公式来给出。R ⊆ (D1×D2×D3 ··· ×Dn)

(关系用符号 R 表示,属性用符号 Ai 表示,属性的定义域用符号 Di 表示)

这个公式读作“关系 R 是定义域 D1, D2, …, Dn 的笛卡儿积的子集”。

,使用“元组”代替“行”,所以知道它们的对应关系还是有好处的。

关系的定义可以用下面这样一个公式来给出。R ⊆ (D1×D2×D3 ··· ×Dn)

(关系用符号 R 表示,属性用符号 Ai 表示,属性的定义域用符号 Di 表示)

这个公式读作“关系 R 是定义域 D1, D2, …, Dn 的笛卡儿积的子集”。

其实笛卡儿积是指“使用各个属性的定义域生成的组合数最多的集合”。

猜你喜欢

转载自blog.csdn.net/qq_38758371/article/details/130093982