数据库原理及应用(东南大学)笔记——第二章 数据模型
第二章 数据模型(data model)
2.1 层次数据模型
2.1.1 基本思路:
现实世界中很多事物之间本就存在层次关系,该模型尝试用树状结构描述这种关系。
2.1.2 基本概念:
记录record:现实世界一个实体(Entity)表示为一条记录;
域field:一个记录由若干域表示(属性??)
PCR(Parent-Child Relation):表达1:N关系
2.1.3 层次数据模式
一个层次模型由多个PCRs构成
每个PCR关系表示1:N关系
每个记录只有一个父节点
2.1.4 虚记录
解决问题:现实世界中常有非层次关系的数据,很难用PCR来表示。例如:
贡献:(1)引入指针,虚记录指向真实记录,避免数据冗余;(2)保持树状结构
2.2 网状数据模型
2.2.1 基本思路:
使用set(形如链表)表示现实世界中的1:N关系。一个记录可以为一个set的主记录,也可以为其他多个set的属记录。
2.2.2基本概念:
记录record:表示现实实体
data item:一个记录由若干item表示。与域相似,但域/属性必须是原子的,item可以是向量(复合类型)。
LINK记录类型:可以表示自连接关系、M:N关系、多元关系
e.g.:
【例1】定义LINK记录为员工的“替身”
员工(雇主)与LINK记录类型系型为1:1的系s1;
LINK记录类型与员工(雇员)建立系型为1:N的系s2。
使用s1、s2可以表示员工集合中的实体与实体间的自连接。
【例2】表示M:N关系。定义LINK记录为学生-课程匹配“替身”(实际并包含如图所示信息)
使用LINK记录将M:N分解成1:N关系。
注:由于LINK并不包含如上图所示信息,在查询“学生S1选了哪些课程”时,遍历链表LS1:第一条记录L1,在链表LC1上遍历直至找到C1;第二条记录L2,在链表LC2上遍历直至找到C2。
而不能在遍历LS1找到L1时直接确定C1。
2.3 关系数据模型
2.3.1相比于层次、网状的区别:
1.使用表作为数据结构,具有更高的抽象级别,屏蔽了计算机底层实现的细节(树、链表、指针)。
2.概念简单易于理解。建立新的代数系统——关系代数,使用数学中集合论方法研究数据库模型。
3.定义非过程化的查询语言SQL。(层次:遍历树、网状:遍历链表)。
4.软连接:关系型数据库中表达实体间联系的方法。(层次、网状数据库中的连接称为硬连接)
e.g.:关系型数据库处理多对多关系时,重建一张表。实现了实体间的联系,但没有用到指针。
2.3.2 基本术语和概念:
属性attribute:一个列称为一个属性。(每一个属性必须是原子的)
域domain:每一个属性的取值范围。
关系relation:一个表。现实中的一个实体,实体间的联系,在数据库中用关系表达。
元组tuple:表中的一行(一个关系的实例是m个元组的集合)。
主键primary key:
候选键candidate key:满足:①这个关系中任意两个元组这组属性的值都不同;②这组属性的任意一个子集没有特性①。
超键super key:只满足①。
候选键可能有多个,可以人工选择一个作为主键primary key,其余的称之为候补键alternate key。
如果主键由关系中所有属性组成,则主键称之为全键all key。
外键foreign key:一张表中,有一组属性用来引用另一张表内的元组,且该组属性必须是另一张表的主键。
完整性约束:
引用完整性约束:外键指向的不能为空,(即外键必须指向一个元组)
域完整性约束:每条元组每个属性的值必须符合域的范围。
实体完整性约束:主键不允许为空。
2.3.3 关系代数
2.3.3.1 基本操作
并(∪\cup∪):在关系1和关系2中的元组。
并、交、差操作需要两个关系满足 并兼容条件:两个关系模式相同。
差(−-−):在关系1且不在关系2中的元组。
笛卡尔积(×\times×):关系1和关系2中所有元组集合的拼接。
e.g.:假设集合A={a, b},集合B={0, 1, 2},
两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。
选择Selection(σ\sigmaσ):从关系中选择出符合条件的元组。
投影Projection(π\piπ):从关系中选择出某些列。
注:投影后可能导致出现所有属性列完全重复的行,投影自动去掉重复行
2.3.3.2 其他操作
连接Join:从两个关系的笛卡尔积中选取属性间满足一定条件的元组。
- 条件连接Condition Join/θ\thetaθ连接:R⋈θ=σθ(R×S)R\Join_\theta=\sigma_\theta(R\times S)R⋈θ=σθ(R×S)。从两个关系中分别选择属性a、b,选取a、b满足关系θ\thetaθ(可以为>、<、=>、<、=>、<、=等等)的元组。
- 等值连接Equi Join:R⋈S1.sid<R1.sidSR\Join_{S1.sid<R1.sid}SR⋈S1.sid<R1.sidS。θ\thetaθ为=的条件连接,是一种特殊的条件连接。
- 自然连接Natrual Join:两个关系中比较的分量是相同的属性组,并在结果中去掉重复的属性列。是一种特殊的等值连接。
除Division:在关系A中所有与关系B中每一条元组都有联系的关系A中的元组。且结果的每一元组由关系A中有而B中没有的属性列组成。
除法可用基本操作表示为:π供应商(A)−π供应商(π供应商(A)×B−A)\pi_{供应商}(A)-\pi_{供应商}(\pi_{供应商}(A)\times B-A)π供应商(A)−π供应商(π供应商(A)×B−A)
外连接Outer Joins:将自然连接中不匹配的元组保留下来。
- 左外连接:S1∗⋈R1S1^*\Join R1S1∗⋈R1。连接运算符左边的元组全部保留,找不到匹配的依然保留,在右边补空值。
- 右外连接:S1⋈∗R1S1\Join^*R1S1⋈∗R1。右边元组全部保留,左侧不匹配的补空值。
- 全外连接:S1∗⋈∗R1S1^*\Join^*R1S1∗⋈∗R1。能连接的全部连接,左右找不到的元组依然保留,不匹配的地方补空值。
外并Outer Union:不满足并兼容条件的关系强行并。结果的模式与×\times×相同,两种关系中缺失的属性都补零。
2.3.4 关系演算
关系演算以谓词逻辑为基础,是一种非过程化表达。
元组关系演算
域关系演算
2.1-2.3 传统数据模型的评价
优点:适用于OLTP应用,擅长表达以记录为主的结构型数据。
缺点:无法自然地表达实体之间的联系;缺乏语义信息;数据类型少,难以满足应用需求。
2.4 ER数据模型
2.4.1 基本概念
实体Entity:现实世界中可区分的事物都表达为实体。在DB中用一组属性来描述。
联系Relation:两个或多个实体间的关系。联系也可以有属性。
实体集:相似实体的集合。一个实体集中所有实体具有相同的属性集。
每个实体集都有一个key
每个属性都有一个域
允许存在组合或多值属性
联系集:相似关系的集合。
一个n元关系集R关联n个实体;R中每个关系都与n个实体有关
同一实体集可以参与不同的关系集,或同一关系集不同角色
2.4.2 扩展的ER模型
弱实体Weaky entity:不能单独存在。
e.g.:职工 & 职工家属。职工家属是弱实体,不能单独存在。
特殊化与普遍化:类似于面向对象中的继承。
e.g.:学生 & 研究生
聚集Aggregation:允许联系(将联系视为实体)与别的实体再建立联系。
e.g.:医院-医生 & 患者。
医院与医生关联作为一个实体,该实体与患者关联。现实世界中,患者求医永远不会只访问医院或只访问医生,而是同时访问两者。
范畴Category:一个实体集可以包含不同类型的实体。
e.g.:银行账户:包含企业账户、个人账户
2.5 面向对象数据模型
突破了一范式的限制。
2.6 其他数据模型
基于逻辑的数据模型:目的:①扩展DBMS查询能力(e.g.递归查询);②:提升DBMS推理能力(得到在数据库中不直接存储的信息)。e.g.演绎数据库
时态数据模型:在一般模型基础上扩展描述时态信息的机制。
空间数据模型:
XML数据模型:
2.7 总结
1.每个DBMS系统必须实现某中数据模型。/数据模型是DBMS的核心。
2.数据模型是一种在数据库中模拟现实世界的方法。
参考:
【合集】数据库原理及应用 东南大学 徐立臻 共72讲
数据结构-网状模型
数据库原理及应用(东南大学)笔记——第二章 数据模型相关推荐
- Web前端开发笔记——第二章 HTML语言 第四节 超链接标签
目录 前言 一.超链接标签 (一)链接其它子网页 (二)链接其它站点 (三)虚拟超链接 二.从当前页面链接到指定位置 三.链接的访问情况 四.在新窗口中打开链接 例题 结语 前言 本节介绍超链接标签即 ...
- 【王道考研】操作系统 笔记 第二章上 进程调度
本文内容,1.进程和线程 2.进程调度 特此鸣谢王道考研 本文参考王道考研的相关课程 若有侵权请联系,立删 其余笔记链接: [王道考研]操作系统笔记 第一章_才疏学浅743的博客-CSDN博客 [王道 ...
- [go学习笔记.第二章] 2.go语言的开发工具以及安装和配置SDK
一.工具介绍: 1.Visual Studio Code 一个运行于Mac,Windows,和linux上的,默认提供Go语言的语法高亮的IED,可以安装Go语言插件,还可以支持智能提示,编译运行等功 ...
- java网络编程 个人笔记 第二章 流
java网络编程 个人笔记 第二章 流 流 I/O介绍 java流式输入/输出原理 输入输出流分类 节点流和处理流 节点流的类型 处理流的类型 InputStream(输入流) InputStream ...
- 深入理解 C 指针阅读笔记 -- 第二章
Chapter2.h #ifndef __CHAPTER_2_ #define __CHAPTER_2_/*<深入理解C指针>学习笔记 -- 第二章*//*内存泄露的两种形式1.忘记回收内 ...
- 《Go语言圣经》学习笔记 第二章 程序结构
Go语言圣经学习笔记 第二章 程序结构 目录 命名 声明 变量 赋值 类型 包和文件 作用域 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记,几乎是书上的内 ...
- 《计算传播学导论》读书笔记——第二章文本分析简介
<计算传播学导论>读书笔记--第二章文本分析简介 第一节 文本分析研究现状 常用文本挖掘技术 第二节 文本分析与传播学研究 (一)为什么文本挖掘技术逐渐受到传播学者的关注 (二)不同文本分 ...
- Computational Optimal Transport 笔记——第二章(2)
Computational Optimal Transport 笔记--第二章(2) 符号说明 2. 理论基础 2.3 Kantorovich Relaxation SUM 2.4 Optimal T ...
- PhalAPI学习笔记 ——— 第二章接口服务请求
PhalAPI学习笔记 --- 第二章接口服务请求 前言 接口服务请求 接口服务请求案例 自定义接口路由 开启匹配路由 配置路由规则 nginx apache 服务请求 结束语 前言 公司业务需要转学 ...
最新文章
- 【总结】DIV+CSS有可能遇到的问题
- linux上的项目可以在windows,新建的django项目,在linux系统可以跑,在windows上跑老是报错...
- linux修改磁盘盘符,debian下修改磁盘阵列盘符
- SAP Spartacus里解析route参数的逻辑
- Golang 检查元素在slice中是否存在 模仿Php实现arrary_In
- chrome浏览器开发者工具F12中某网站的sources下的源码如何批量保存?
- 《机器学习实战》学习总结(六)PCA算法原理
- IDEA中导入Mysql驱动包
- Hybrid APP介绍
- Android Studio的适配器Adapter以及Adapterview的使用
- 信息系统项目管理师——进度管理论文
- FEMTransfer软件实现Patran/Nastran/Abaqus/Ansys/Sesam(Genie)/Workbench/Femap/盈建科/PKPM仿真分析软件的有限元模型相互转换导入
- COMSOL 固体力学 第一主应力、第二主应力、第三主应力、径向应力、环向应力、切向应力 截面一维曲线
- RT-Thread学习笔记【ADC与DAC设备】
- wfp网络过滤框架总结(一)
- AD域内禁用所有计算机445端口,勒索病毒“永恒之蓝”变种再来,该如何关闭445端口(收藏)(示例代码)...
- oracle-ORA的原理
- 使用Auto.js庖丁对Pro Snapshot快照加密的解密打包教程
- leetcode 栈739. 每日温度
- 【开发常用工具】MAC(M1)下安装Windows虚拟机