数据库第二章关系模型xjtu

2023-10-26

关系模式

关系模式的构成要素:
数据结构,数据操作,完整性约束

一些定义

examples在这里插入图片描述
定义2.1:域(domain)是一组值的集合,同一个域中的所有值均应具有相同的数据类型

例2-1:
D1={袁玲,吴丹,刘杰}姓名域
D2={男,女}性别域
D3={18,19}年龄域
其中:D1(姓名)、D2(性别)和D3(年龄)为域名,分别表示“人员”关系中姓名、性别和年龄的可取值范围
D1的基数m1=3,D2的基数m2=2,D3的基数m3=2
域名中元素数量为域名的基数,plus域中元素无排列顺序
域中元素一般无排列次序,如:D2={男,女}={女,男}

定义2.2:域D1,D2,…,Dn上的笛卡儿积(Cartesian product)是一个集合:
D1×D2×…×Dn={(d1,d2,…dn) | di∈Di,1≤i≤n}
其中允许Di=Dj且i≠j,将该集合中的每一个元素(d1,d2,…dn)称为一个元组(tuple),元组中的每一个值di称为一个分量(component),有n个分量的元组称为n元组

域的笛卡尔乘积被称为一个集合,该集合中的元素(d1,d2,…dn)称为一个元组(tuple),元组中的di称为分量,n个分量的元组称为n元组

例2-2:已知三个域: D1={袁玲,吴丹,刘杰} D2={男,女} D3={18,19}
该笛卡尔积的基数为3×2×2=12,即共有12个元组,(袁玲、男、18)和(吴丹、女、19)就是元组,“袁玲”、“女”、“吴丹”、“19”就是分量。
有时一个元组也被称为一条记录
在这里插入图片描述
定义2.3:D1×D2×…×Dn上的任意一个子集均是定义在域D1,D2,…Dn上的一个关系(relation),记为R
由n个域构成的关系通常称为n元关系,关系中的每个元素即是这个关系的元组

即:关系是笛卡尔乘积的子集,元组是笛卡尔乘积的元素,元组也是关系的元素,分量是元组中的某一个域的值

由于域可以相同,为了加以区分,必须为每列起一个名字,称为属性(Attribute)
定义2.4:为关系的每个列所起的名字称为关系的属性,一般可表示为A,B,C…
n元关系必有n个属性,表的任意一列对应一个属性,属性的名称称为“属性名”,具体元组的属性取值称为“属性值”
例:学生关系有学号、姓名、性别、系名、年龄等属性

即:分量是某个关系上属性的值,属性名,属性值 注意区分 域可以相同

定义2.5:如果一个关系中的某个属性或属性集能够唯一的确定一个元组,则称该属性(集)是这个关系上的超键(super key,SK);如果将超键中的任一属性去掉后剩余的属性集不能唯一标识一个元组,则称该属性集是关系上的候选键(candidate key,CK);通常从候选键中选择一个使用,这个候选键称为关系的主键(primary key,PK)

一般情况下,如不加特别说明,键即指主键。如果关系R1中的某个属性集是另外一个关系R2的候选键,那么该属性集对于关系R1而言是它的外键(foreign key,FK)

1、超键:在关系中能唯一标识元组的属性集称为关系模式的超键
2、候选键:不含有多余属性的超键称为候选键。也就是在候选键中,若再删除属性,就不是键了!
3、主键:用户选作元组标识的一个候选键程序主键。
4、外键:如果关系模式R中属性K是其它模式的主键,那么k在模式R中称为外键。

主键为候选键的子集,候选键为超键的子集,而外键的确定是相对于主键的

定义2.6:关系模式(relation schema)是对关系的型的描述,可以表示为:
R(U,D,DOM,I,F)
其中,U是R的属性集合{A1,A2,…,An},D是属性的取值范围,即域的集合{D1,D2,…,Dn},DOM是U到D的映射集合{A1→D1,A2→D2,…,An→Dn},I是完整性约束规则集,F是函数依赖集合
习惯上将关系模式简记为R(A1/D1,A2/D2,…,An/Dn)或者R(A1,A2,…,An)

关系与关系模式的区别

关系可看作是关系模式在某一时刻的状态或内容,也就是说,关系模式是型,关系是值
关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据

关系的要点

(1) 关系中不允许出现相同的元组(元组不重复)
(2) 关系中各个属性必须有不同的名字,不同的属性可来自同一个域,即他们的分量可以取自同一个域(属性不重复)
(3) 关系中元组的顺序(即行序)是无关紧要的,在一个关系中可以任意交换两行的次序(元组间无序)
(4) 关系中属性的顺序是无关紧要的,即属性的顺序可以任意交换(属性间无序)
(5) 同一属性名下的各个属性值必须来自同一个域,是同一类型的数据。
(6) 关系中每个分量必须是不可分的数据项,或者说所有属性值都是原子的,是一个确定的值,而不是值的集合,即不可“表中有表” 。属性值可以为空值,表示“未知”或“不可使用”。

关系的类型

在关系数据库中,关系有以下三种类型:
(1) 基本表:实际存在的表,对应实际存储数据的逻辑表示
(2) 查询表:对基表查询得到的结果表
(3) 视图:从基本表或其他视图中导出的表

关系数据库的型与值

关系数据库的型: 关系数据库模式
对关系数据库的描述。
关系数据库模式包括:
1若干域的定义
2在这些域上定义的若干关系模式
关系数据库的值: 关系模式在某一时刻对应的关系的集合,简称为关系数据库

关系模型的完整性

关系模型的完整性(integrity)规则是为了保证数据的正确性和相容性而在关系上施加的约束条件
(1)域完整性约束
元组分量在某个属性上的取值应在其值域之内;元组是否能在某个属性上取空值null,由该属性的语义决定
(2)实体完整性约束
元组在键上的取值不可重复,且不能为null
按照键的定义,如果不同的元组在键上取相同值或空值,则将无法区分两个不同的元组

关系代数

关系运算是关系数据库的数学基础,分为关系代数和关系演算两大类
关系代数中运算对象是关系,运算结果也是关系,运算符包括四类:

(1) 集合运算符:∪(并),-(差),∩(交),×(广义笛卡尔积)
(2) 专门的关系运算符:σ(选择),π(投影),⋈(连接),÷(除)
(3) 算术比较符:>(大于),≥(大于等于),<(小于),≤(小于等于),=(等于),≠(不等于)
(4) 逻辑运算符:∧(与),∨(或),┐(非)

(1)并(union)

R、S都是n元关系,且各自的对应属性具有相同的域,则关系R和S并的结果R∪S仍为n元关系,表示为:
R∪S={t| t∈R∨t∈S}
满足并运算要求的两个关系是“并兼容”的
在这里插入图片描述

(2)差(difference)
R和S是并兼容的n元关系,R与S的差R-S仍为n元关系,表示为:R-S={t| t∈R∧t S}
即R-S由那些仅出现在R中且不出现在S中的元组构成
在这里插入图片描述

(3)交(intersection)
R和S是并兼容的n元关系,R与S的交R∩S仍为n元关系,表示为:R∩S={t| t∈R∧t∈S}
即R∩S由那些既在R中出现又在S中出现的元组构成
在这里插入图片描述

(4)笛卡儿积(Cartesian product)
m元关系R与n元关系S的笛卡儿积是(m+n)元关系,且每个元组的前m个分量是R的一个元组,后n个分量是S的一个元组,可以表示为:
R×S={t(m+n) | t(m)∈R∧t(n)∈S}
如果R中共有i个元组,S中共有j个元组,则R×S一定有i×j个元组
在这里插入图片描述

examples

在这里插入图片描述
在这里插入图片描述

专门的关系运算

(1)选择(selection)
σF®={t| t∈R∧F(t)=true}
其中σ是选择算符,表示进行选择运算,F是选择条件,最简单的选择条件形如XθY或者Xθc,X,Y是属性名,c是常量,θ是算术比较运算符,包括>,≥,<,≤,=,≠等。可以由简单的选择条件通过逻辑运算符构成更为复杂的条件,逻辑运算符包括∧,∨和﹁。
examples:
在这里插入图片描述
在这里插入图片描述

(2)投影(projection)
ΠX®={t[X]| t∈R}
其中,X是关系R的一个属性子集,t[X]表示关系R上的元组t在属性子集X上的分量
由于关系的属性间是无序的,因此X中的属性顺序可以和它们在R中的出现顺序不一致。此外,需要注意的是因为关系中不允许有重复元组,因此在投影后需要将可能出现的重复元组进行合并

*****注意投影完后的合并
examples:
在这里插入图片描述
在这里插入图片描述

(3)连接(join)
θ连接 :
连接是笛卡儿积和选择的复合运算,可以表示为:
R⋈AθBS={rs| r∈R∧s∈S∧r[A]θs[B]}=σAθB(R×S)
其中,⋈是连接运算符,AθB是连接条件,θ是算术比较运算符。R⋈AθBS表示将关系R和S在各自的属性A,B上满足θ条件的元组连接起来。θ条件可以有多个,它们之间用逻辑算符连接。这样的连接一般被称为“θ连接”。特别的,如果θ是“等于”比较,称这样的连接运算是“等连接”或“等值连接”
****本质上可以看作笛卡尔乘积后做选择运算
example:
在这里插入图片描述

自然连接:
消除了重复属性的等值连接,称为“自然连接”。表示如下:
R⋈S=πAttr®∪(Attr(S)-A)(σR.A=S.A(R×S))
其中Attr®是关系R的属性全集
examples:
在这里插入图片描述

外连接:
外连接将不满足连接条件的元组仍然保留在结果关系中,并在缺失属性上取null。
根据保留元组的不同,外连接又分为左外连接,右外连接,全外连接
examples:
在这里插入图片描述

半连接:
R和S的半连接是将其自然连接的结果在R的属性集上投影,可以表示为:
R S=πR (R S),S R=πS (R S)
半连接不具有交换率

(4)除(Divison)
给定两个关系R(X,Y),S(Y),其中X,Y均是属性的集合。设T(X)=R(X,Y)÷S(Y)表示R与S除运算的结果,÷是除运算的算符,结果关系T的属性集由X构成,则T与S的笛卡儿积必定是R的一个子集。R÷S可表示如下:

T=R÷S={t[X]| t∈R∧ s∈S,t[X]s∈R}=πX®- πX((πX®×S)-R)
式中t[X]s表示由元组t在属性子集X上的分量同关系S的元组s构成的新元组

T与S的笛卡尔乘积必是R的子集

examples:
在这里插入图片描述

总结

  1. 关系模式的三个构成要素是什么,并做简要说明。
    数据结构,数据操作,完整性约束

  2. 解释一下概念,域,关系,关系模式,属性,超键,候选键,主键,外键
    域(domain)是一组值的集合,同一个域中的所有值均应具有相同的数据类型
    域的笛卡尔乘积的子集是关系
    关系模式是对关系的型的描述
    属性是关系每个列的名字
    超键,是属性或者属性集,这个能唯一确定一个元组
    候选键,去掉超键中不必要的属性,还能够唯一标识一个元组
    主键就是候选键的子集
    外键,比如R1中的某个属性集是另一个R2的候选键,则改属性集合称为R1的外键

  3. 关系运算
    交,并,补集,选择,投影,连接(笛卡尔乘积后做选择)包括自然连接,外连接,左外连接,右外连接(可以含NULL),除法(T = R/S,最后,T和S的笛卡尔乘积是R的子集)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库第二章关系模型xjtu 的相关文章

  • 数据聚合和缓存:如何按时间间隔快速绘制大型时间序列数据集的图表

    我有一个巨大的时间序列数据集 我想绘制图表 时间序列可以追溯到 5 年前 从后端的角度来看 以各种分辨率 间隔 显示这些数据的常用方法是什么 本质上我想绘制这样的数据图表 https bitcoinwisdom com markets bi
  • 如何在Word 2010中从SQL数据库检索数据?

    我想用 MS SQL 数据库中的数据填充 Word 文档 这可能吗 如果可能的话 如何实现 我过去曾通过多种方式做到这一点 这取决于用户是从 Microsoft Word 外部还是从 Microsoft Word 内部启动操作 From I
  • MySQL 中的创建/写入权限

    我的设备遇到一些权限问题SELECT INTO OUTFILE陈述 当我登录数据库并执行简单的导出命令时 例如 mysql gt select from XYZ into outfile home mropa Photos Desktop
  • 触发器与非规范化存储过程的优缺点

    当涉及到对事务数据库中的数据进行非规范化以提高性能时 至少 有三种不同的方法 通过存储过程推送更新 更新规范化交易数据和非规范化报告 分析数据 在事务表上实现更新辅助表的触发器 这几乎总是维护历史时所采取的路线 将处理推迟到夜间批处理 可能
  • 要做或不做:将图像存储在数据库中[重复]

    这个问题在这里已经有答案了 在 Web 应用程序的上下文中 我的前老板总是说在数据库中放置对图像的引用 而不是图像本身 我倾向于同意在数据库中存储 url 与图像本身是一个好主意 但在我现在工作的地方 我们在数据库中存储大量图像 我能想到的
  • 主键默认可以为NULL吗?为什么这样描述呢?

    我有一张桌子 当我describe这是 mysql gt DESC my table Field Type Null Key Default Extra contact id int 11 NO PRI NULL auto incremen
  • 在 Android 中获取联系方式需要花费大量时间?

    您好 目前正在做一个与联系人相关的项目 我正在从联系人中获取详细信息 电子邮件 电话号码和联系人姓名 效果很好 但问题是获取联系方式需要很长时间 超过 1000 个联系人 包括从社交网站同步的联系人 这样我就放了一个Asynchronous
  • using 块会关闭数据库连接吗?

    using DbConnection conn new DbConnection do stuff with database 会不会using块调用conn Close 是的 它会 实施DbConnection Dispose calls
  • 如何按关系的数量或成员对 Doctrine DQL 查询进行排序?

    我正在尝试创建一个查询 用于从 Doctrine 数据库中检索对象 并按特定一对多关系的成员数量排序 更具体地说 我有两个实体 Person 和 Federation 一个人可以是一个联盟的成员 人具有 联盟 关系 并且一个联盟可以有n人
  • PDO获取最后插入的ID

    我有一个查询 我想获取插入的最后一个 ID 字段ID是主键并且自动递增 我知道我必须使用这个声明 LAST INSERT ID 该语句适用于如下查询 query INSERT INTO cell place ID VALUES LAST I
  • 为什么要为字符变化类型指定长度

    参考 Postgres 文档字符类型 http www postgresql org docs current static datatype character html 我不清楚指定字符变化 varchar 类型的长度 假设 字符串的长
  • JPA中如何连接多个数据库?

    我有一个 Spring Boot 应用程序 当前使用 JPA 连接到单个数据库 application properties 文件中的连接详细信息 spring datasource url jdbc oracle thin localho
  • 将自动递增值添加到只有一列的表中

    我需要创建一个基本上仅保留索引列表的表 因此 我创建了一个只有一个名为 id 的自动递增列的表 但是 我似乎无法隐式地将自动递增值添加到该表中 我知道通常当您在表中有这样一列 不仅仅是此列 时 您可以执行以下操作 插入表 col1 col2
  • 我们可以使用sql列出MS Access数据库中的所有表吗?

    我们可以使用 sql 找到 ms access 中的所有表吗 就像我们在 sql server 中所做的那样 select from sys tables 在sqlite中 SELECT FROM sqlite master where t
  • 重命名猫鼬中的字段[重复]

    这个问题在这里已经有答案了 我有两个 JSON 对象 每个对象都有一个名字字段 我想将名字重命名为名称 还想使用猫鼬将现有的名字值导入到名称 Schema const mongoose require mongoose const Sche
  • 我应该检查代码中的数据库约束还是应该捕获数据库抛出的异常

    我有一个将数据保存到名为 作业 的表中的应用程序 Jobs 表有一个名为 Name 的列 该列具有 UNIQUE 约束 名称列不是主键 我想知道在尝试保存 更新新条目之前是否应该自己检查重复条目 或者最好等待数据访问层抛出异常 如果这个应用
  • 索引在 NOT IN 或 <> 子句中起作用吗?

    我读过 至少 Oracle 数据库中的普通索引基本上是 B 树结构 因此存储处理适当根节点的记录 小于 根的记录被迭代地存储在树的左侧部分 而 大于 根的记录被存储在右侧部分 正是这种存储方法有助于通过树遍历实现更快的扫描 因为深度和广度都
  • Mysql UUID_SHORT() 与 UUID() 相当吗

    如果您愿意的话 请快速提出问题或意见 我需要为数据库表生成一些 UUID 自动递增密钥不会减少它 因为我还需要密钥在数据库和系统中保持唯一 UUID 工作正常 但其输出对于行将导出到的某些系统来说太长 UUID SHORT 做得很好 我已经
  • SQLite:从命令行仅将模式转储到 .sql 文件中

    我正在尝试转储架构test db仅 即没有数据 到名为的文件中schema sql从 OS X 中的命令行 无需启动 sqlite3 我知道我能做到 sqlite3 open test db output schema sql schema
  • 使用包含 [模板]、[编码]、[所有者] 的批处理文件和 .sql 文件创建 Postgres 数据库

    我想使用批处理文件创建 Postgres 数据库 现在执行此操作的正常方法如下 C Program Files PostgreSQL 9 0 bin createdb exe U Myadmin MydatAbseName 上面的脚本使用默

随机推荐

  • 导师放养也能投顶会?我从零开始、历经3次拒稿、最终发CVPR顶会论文的全过程分享!

    你想发顶会论文 或者做科研 但是导师放养 不管你 没有人带你 应该怎么办 要怎么起步 我会分3个版块 告诉你如何解决这个问题 一 导师在科研中本该起什么作用 1 科研的全流程是什么样 第一块 大家首先要对科研有一个整体的认知 科研的整个流程
  • BP神经网络——基于近红外光谱的汽油辛烷值预测

    BP神经网络 基于近红外光谱的汽油辛烷值预测 问题描述 获取数据 解题思路及步骤 1 产生训练集 测试集 2 创建 训练BP神经网络及仿真测试 3 性能评价 4 绘图 Matalab代码 问题描述 辛烷值是汽油最重要的品质指标 传统的实验室
  • 如何用c++实现异常处理

    博客主页 开心档博客主页 欢迎关注 点赞 收藏 留言 本文由开心档原创 51CTO首发时间 2022年12月16日 这世界很喧嚣 做自己就好 作者水平很有限 如果发现错误 一定要及时告知作者哦 感谢感谢 本文介绍 异常是程序在执行期间产生的
  • 开发网站的过程中,经常会参考一些网站

    在我个人开发网站的过程中 经常会参考一些网站 我不擅长美工 所以一般页面都喜欢直接拿来用 再自己修饰一下 以下一些网站是我经常访问的 共享给大家 站酷 url http www zcool com cn url 拥有丰富的网站资源与模板 很
  • Effective C++

    条款01 视C 为一个语言联邦 将 视为一个由相关语言组成的联邦而非单一语言 条款02 尽量以const enum inline替换 define define处理与预处理阶段 而非编译阶段 因此此条款也可称为 宁可以编译器替换预处理器比较
  • 小白如何启动Vue项目?

    首先查看是否已经安装了 node js node v 之后 命令行会返回本机电脑上具体的版本号 如此 说明已经安装了nodejs 如果没有安装nodejs 请移步官网自行下载 https nodejs org zh cn node js安装
  • CSS学习笔记

    CSS 定义网页内容的样式 一 CSS引入 即如何将html与css联系起来 1 行内样式 将style作为一个标签的属性赋值 只能作用于当前标签 p align center style color red 将style作为一个标签的属性
  • UnitBox论文笔记(IOUloss)

    文章目录 Motivation 关于其他论文的一些观点 IoU损失 l2损失的缺点 iou损失forward过程 反传推导 UNITBOX NETWORK UnitBox An Advanced Object Detection Netwo
  • 华为OD机试 - 乱序整数序列两数之和绝对值最小(Java )

    题目描述 给定一个随机的整数 可能存在正整数和负整数 数组 nums 请你在该数组中找出两个数 其和的绝对值 nums x nums y 为最小值 并返回这个两个数 按从小到大返回 以及绝对值 每种输入只会对应一个答案 但是 数组中同一个元
  • 机器学习模型的可解释性——LIME

    以下文章摘录自 机器学习观止 核心原理与实践 京东 https item jd com 13166960 html 当当 http product dangdang com 29218274 html 由于博客系统问题 部分公式 图片和格式
  • WebSocket入门教程(一)-- WebSocket简介

    转载请标明出处 http blog csdn net u010136741 article details 51502509 本文出自 柳木木 kylin 总目录 WebSocket入门教程 大纲 WebSocket是什么 WebSocke
  • CSS灯光效果,背景黑金效果

    先看效果 再看代码
  • 太阳能板最大面积

    题目描述 给航天器一侧加装长方形或正方形的太阳能板 图中的红色斜线区域 需要先安装两个支柱 图中的黑色竖条 再在支柱的中间部分固定太阳能板 但航天器不同位置的支柱长度不同 太阳能板的安装面积受限于最短一侧的那根支柱长度 如图 现提供一组整形
  • HTTPS阿里云免费SSL证书申请教程来了(白嫖指南)

    阿里云免费SSL证书是digicert品牌的DV单域名证书 一个阿里云账号一年可以申请20张免费SSL证书 免费SSL证书是在阿里云数字证书管理服务控制台申请的 阿里云百科来详细说下阿里云免费SSL证书申请方法 证书下载及第二年到期续费说明
  • 定位城市+iOS8 定位问题

    在IOS8中定位功能新增了两个方法 void requestWhenInUseAuthorization OSX AVAILABLE STARTING MAC NA IPHONE 8 0 void requestAlwaysAuthoriz
  • python 关于git下unix和windows换行符不同导致稍微改动一行代码git diff就是全部文件对比的解决方案

    背景 家里的电脑是用来打游戏的 配置也还可以 windows的 偶尔也会用来写写代码 公司是mac pycharm的默认配置 Pycharm Settings Editor Code Style Line separator是Classis
  • 如何快乐地检测SQL注入

    这估计大家也都发现了 测试SQL注入这种漏洞啊 又有WAF页面又没有明显的报错的情况下 测试起来就是一个字 烦 有waf 我 and 1 1 啪 它拦了 我 order by 啪 它拦了 我 sleep 5 啪 它拦了 我 benchmar
  • 高阶数据结构之红黑树

    文章目录 红黑树 红黑树的性质 红黑树的定义 红黑树的插入 情况一 插入节点的父节点为红 祖父节点为黑 叔叔节点存在且为红 情况二 当前节点的父节点为红 祖父节点为黑 叔叔节点不存在或者为黑 红黑树的验证 验证是否是二叉搜索树 验证是否遵循
  • 软件静态测试

    软件静态测试 7 1 静态测试概念 通常是指不执行程序代码而寻找代码中可能存在的错误或评估程序代码的过程 7 2 静态测试测试对象 各种与软件相关的有必要进行测试的产物 比如各类文档 源代码等 7 3 静态测试的特点 1 不必动态地运行程序
  • 数据库第二章关系模型xjtu

    关系模式 关系模式的构成要素 数据结构 数据操作 完整性约束 一些定义 examples 定义2 1 域 domain 是一组值的集合 同一个域中的所有值均应具有相同的数据类型 例2 1 D1 袁玲 吴丹 刘杰 姓名域 D2 男 女 性别域