数据库原理及应用(东南大学)笔记——第二章 数据模型

第二章 数据模型(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 ⋈ S 1. s i d < R 1. s i d S R\Join_{S1.sid<R1.sid}S RS1.sid<R1.sidS θ \theta θ为=的条件连接,是一种特殊的条件连接。
  • 自然连接Natrual Join:两个关系中比较的分量是相同的属性组,并在结果中去掉重复的属性列。是一种特殊的等值连接。

除Division:在关系A中所有与关系B中每一条元组都有联系的关系A中的元组。且结果的每一元组由关系A中有而B中没有的属性列组成。
例子:A/B结果为关系A中能生产B中零件的供应商的表
除法可用基本操作表示为: π 供 应 商 ( A ) − π 供 应 商 ( π 供 应 商 ( A ) × B − A ) \pi_{供应商}(A)-\pi_{供应商}(\pi_{供应商}(A)\times B-A) π(A)π(π(A)×BA)

外连接Outer Joins:将自然连接中不匹配的元组保留下来。

  • 左外连接: S 1 ∗ ⋈ R 1 S1^*\Join R1 S1R1。连接运算符左边的元组全部保留,找不到匹配的依然保留,在右边补空值。
  • 右外连接: S 1 ⋈ ∗ R 1 S1\Join^*R1 S1R1。右边元组全部保留,左侧不匹配的补空值。
  • 全外连接: S 1 ∗ ⋈ ∗ R 1 S1^*\Join^*R1 S1R1。能连接的全部连接,左右找不到的元组依然保留,不匹配的地方补空值。
    在这里插入图片描述

外并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讲
数据结构-网状模型

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值