关系数据库——关系操作&&关系模型的完整性

本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。

关系数据库

关系操作

数据模型的三个方面:

  • 数据结构
  • 数据操作
  • 完整性约束

基本关系操作

  • 常用的关系操作
    👊查询:选择、投影、连接、除、并、交、差
    👊数据更新:插入、删除、修改
    👊查询的表达能力是其中最主要的部分
    👊选择、投影、并、差、笛卡尔积是5种基本操作

  • 关系操作的特点
    集合操做方式:操作的对象和结果都是集合,一次一集合的方式

关系数据库语言的分类

  • 关系代数语言
    用对关系的运算来表达查询要求
    代表:ISBL
  • 关系演算语言:用谓词来表达查询要求
    元组关系演算语言:
    🔸 谓词变元的基本对象是元组变量
    🔸 代表:APLHA,QUEL
    域关系演算语言:
    🔸 谓词变元的基本对象是域变量
    🔸 代表:QBE
  • 具有关系代数和关系演算双重特点的语言
    代表:SQL(Structured Query Language)
    🔹 SQL不仅具有丰富的查询功能,而且具有数据定义和数据控制功能,是集查询、DDL(data definition language)、DML(data manipulation language)和DCL(Data Control Language)于一体的关系数据语言。它充分体现了关系数据语言的特点和优点,是关系数据库的标准语言
    🔹 SQL特点:完备的表达能力、非过程化的集合操作、功能强、能嵌入高级语言使用
    在这里插入图片描述
    关系代数、元组关系演算和域关系演算三种语言在表达能力上是完全等价的

关系模型的完整性

为了维护数据库中数据与现实世界的一致性,对关系数据库的插入、删除和修改操作必须有一定的约束条件,这就是关系模型的三类完整性:

  • 实体完整性
  • 参照完整性
  • 用户定义的完整性

实体完整性(Entity Integrity)

  • 实体完整性是指主键的值不能为空或者部分为空
  • 关系模型中的一个元组对应一个实体,一个关系则对应一个实体集
    例如,一条学生记录对应着一个学生,学生关系对应着学生的集合
  • 现实世界中的实体是可区分的,即它们具有某种唯一性标识。与此相对应,关系模型中以主关系键来唯一标识元组
    例如,学生关系中的属性“学号”可以唯一标识一个元组,也可以唯一标识学生实体
  • 如果主键中的值为空或部分为空,即主属性为空,则不符合键的定义条件,不能唯一标识元组及其相对应的实体。这就说明存在不可区分的实体,从而与现实世界中的实体是可以区分的事实相矛盾。因此主键的值不能为空或部分为空
    例如,学生关系中的主键“学号”不能为空;选课关系中的主键“学号+课程号”不能部分为空,即“学号”和“课程号”两个属性都不能为空

参照完整性(Referential Integrity)

现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的。这样就自然存在着关系与关系间的引用。

例1: 学生(学号,姓名,性别,专业号,年龄)
专业(专业号,专业名)

例2: 学生(学号,姓名,性别,专业号,年龄)
课程(课程号,课程名,学分)
选课(学号,课程号,成绩)

  • 定义:设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码(Foreign Key),并称基本关系R为参照关系(Referencing Relation),基本关系S为被参照关系(Referenced Relation)或目标关系(Target Relation)

  • 关系R和S不一定是不同的关系

  • 参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
    ①或者取空值(F的每个属性值均为空值);
    ②或者等于S中某个元组的主码值。

  • 如下图,学生关系中某个学生(如s1或s2)“系别”的取值,必须在参照的系别关系中主关系键“系别”的值中能够找到,否则表示把该学生分配到一个不存在的部门中,显然不符合语义。
    如果某个学生(如s11)“系别”取空值,则表示该学生尚未分配到任何一个系。否则,它只能取专业关系中某个元组的专业号值
    在这里插入图片描述

  • 例如:
    学生(学号,姓名,性别,专业号,年龄)
    课程(课程号,课程名,学分)
    选课(学号,课程号,成绩)

    如果按照参照完整性规则,选课关系中的外部关系键“学号”和“课程号”可以取空值或者取被参照关系中已经存在的值。但由于“学号”和“课程号”是选课关系中主属性,根据实体完整性规则,两个属性都不能为空。所以选课关系中的外部关系键“学号”和“课程号”中只能取被参照关系中已经存在的值

  • 实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作关系的两个不变性。任何关系数据库系统都应该支持这两类完整性

  • 除此之外,不同的关系数据库系统由于应用环境的不同,往往还需要一些特殊的约束条件,这就是用户定义完整性

用户定义完整性(User-defined Integrity)

  • 用户定义完整性是针对某一具体关系数据库的约束条件
  • 它反映某一具体应用所涉及的数据必须满足的语义要求
    例如,属性值根据实际需要,要具备一些约束条件,如选课关系中成绩不能为负数;某些数据的输入格式要有一些限制等;工资不能低于“地区最低工资”
  • 关系模型应该提供定义和检验这类完整性的机制,以便使用统一的、系统的方法处理它们,而不要由应用程序承担这一功能

E-R图向关系模型的转换

  • E-R图向关系模型的转换要解决的问题
    ①如何将实体型和实体间的联系转换为关系模式
    ②如何确定这些关系模式的属性和码

  • 转换内容
    将E-R图转换为关系模型:将实体、实体属性和实体之间的联系转换为关系模式。

    实体型间的联系有以下不同情况:
    (1)一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并
    (2)一个1:n联系可以转换为一个独立的关系模型,也可以与n端对应的关系模式合并
    (3)一个m:n联系转换为一个关系模型。例如:“选修”联系是一个m:n联系,可以将它转换为如下关系模式,其中学号与课程号为关系的组合码 👉选修(学号课程号,成绩)
    (4)三个或三个以上实体间的一个多元联系转换为一个关系模式。例如:“讲授”联系是一个三元联系,,可以将它转换为如下关系模式,其中课程号、教工号和书号为关系的组合码👉讲授(课程号教工号书号

综合练习 E-R图

用E-R图表示某个工厂物资管理的概念模型

  • 实体
    仓库:仓库号、面积、电话号码
    零件:零件号、名称、规格、单价、描述
    供应商:供应商号、姓名、地址、电话号码、账号
    项目:项目号、预算、开工日期
    职工:职工号、姓名、年龄、职称
  • 实体之间的联系如下:
    (1)一个仓库可以存放多种零件,一种零件可以存放在多个仓库中。仓库和零件具有多对多的联系。用库存量来表示某种零件在某个仓库中的数量;
    (2)一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作,仓库和职工之间是一对多的联系。职工实体型中具有一对多的联系;
    (3)职工之间具有领导与被领导关系。及仓库主任领导若干保管员;
    (4)供应商、项目和零件三者之间具有多对多的联系
    在这里插入图片描述
    将E-R图转换为关系模式,并说明外键和主键的对应关系
    供应(供应商号,项目号,零件号,…)
    🔹 (供应商号,项目号,零件号)为主键
    🔹 供应商号是外键与供应商的供应商号对应
    🔹 项目号是外键与项目的主键项目号对应
    🔹 零件号是外键与零件的主键零件号对应
    库存(仓库号,零件号,…)
    🔹 (仓库号,零件号)为主键
    🔹 仓库号是外键与仓库的主键仓库号对应
    🔹 零件号是外键与零件的主键零件号对应
    工作(仓库号,职工号,领导职工号,…)
    🔹 (仓库号,职工号,领导职工号)为主键
    🔹 仓库号是外键与仓库的主键仓库号对应
    🔹 职工号是外键与职工的主键职工号对应
    🔹 领导职工号是外键与职工的主键职工号对应

关系数据库——关系数据结构及形式化定义
关系数据库——关系代数


在这里插入图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

从善若水

原创不易,感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值