3、关系数据模型

0、关系

从用户的角度看,关系的逻辑结构就是一张展平的二维表
表的每一列的分量是属性,表的第一行是表头,除表头外每行对应一个元组,每个元组代表一个实体或联系。
关系的这种直观表示允许我们对关系附加一些语义,以此定义关系的码,定义关系的完整性约束

一、关系的数据结构

1、关系、关系模式

  1. 关系的型:关系模式看作“类型”,关系的型用用关系模式刻画
  2. 关系的值:关系就是具有特定类型的“变量”,关系的值即在某一时刻的快照,又称关系实例
    在这里插入图片描述
    关系模式的概念对应于程序设计语言中的类型概念,是对关系型的描述,R(U, D, DOM, F),U是诸属性,D是属性对应域,DOM为U到D的映射,D和DOM是定义表时考虑的,F是属性间的数据依赖集定义,简记为R(U),常把关系模式看作关系数据库的结构,把关系看作关系模式的实例

2、关系数据库
关系数据库也有型、值之分

二、从ER模型到关系模型,关系的码

ER图向关系模式转换

  1. 属性处理:忽略派生属性、忽略复合属性本身考虑其组分、为每个多值属性M创建关系RM(1.对实体集E,则RM包含实体集属性M和主码K;2.对联系集R,则R包含实体集属性M和涉及的主码K1,…,Kn)
  2. 实体集处理:强、弱实体集各用一个关系表示,关系名用实体集名,关系的属性用实体集属性及标识实体集的主码在这里插入图片描述
  3. 联系集处理(1):联系是一对一或多对多的,则所有实体集的码组合成关系的码;一对多,则多端实体集的码组合成关系的码(一个院系对应多个老师,确定不了一个实体不是码)
  4. 联系集处理(2):一对一,和任意一端实体集转换得到的关系模式合并;一对多,和多端实体集转换得到的关系模式合并;多对多,则该联系集转换成独立的关系模式

三、关系操作

关系语言的分类:关系代数,关系演算,SQL语言
关系操作的特点:集合操作方式
关系操作可以分为查询和更新,操作对象都是关系

四、关系的完整性约束

空值意为缺失的值
1.实体完整性
所有元组在主码上的值唯一,其属性都不能取空值
R1 foreignKey comment ‘不是R1的码’
R2 primaryKey
称外码FK参照R2主码K
2.参照完整性
外码的值等于所参照的主码值,或者为空值
3.用户自定义完整性
语义约束

五、关系代数:是数据库查询语言的基础,运算的对象和结果都是关系

1.基本运算
①选择{t | t∈R ∩ F(t)}
得到关系R中逻辑表达式值为真的元组t的集合
在这里插入图片描述
②投影
在这里插入图片描述
选择和投影都是一元运算,选择是行运算行减少列不减少;投影是列运算随着列减少出现重复行,投影运算删除重复行故行也减少
③并
④差
并差运算的运算对象具有相同属性的关系
⑤笛卡尔积:是除的逆运算
在这里插入图片描述
关系代数表达式的结果是一个关系,但它没有名字可供引用,引进更名运算是方便的
2.附加的关系运算:可以被基本的运算符表示
①交
R∩S=R-(R-S)
在这里插入图片描述
②除
R(X,Y,Z)÷S(Y)=P(X,Z),筛选出R中有属性Y的全部取值的元组
③连接(θ连接)
本质是R与S先做笛卡尔积再从中选择满足R.A(<、<=、>、>=、=、!=)S.B条件的元组,当运算符是等号时,称之为等值连接
④自然连接:特殊的等值连接,且是唯一依赖属性名的连接
在R、S的相同属性上做等值连接,然后投影去重,无相同属性退化为笛卡尔积
在这里插入图片描述
看起来是得到一个实体在不同表中的所有属性
Students和SC表做自然连接,假设Students表有100个元组,SC表有1000个元组,则自然连接后有多少个元组?
对于SC表来说每一条元组都可以连接到Students表,也就是选课联系中,每个同学都选了课,相当于对S表中每个学生都有大于0条记录与之对应

六、用关系代数表达式表达查询

在这里插入图片描述
单个关系只有选择、投影
涉及多个表(关系)可以先将多个表进行自然连接,成为一个大表
扩展的关系运算
关系数据库的更新

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值