关系型数据库 期末复习(未完
关系型数据库
- 绪论
- 概念间的关系
- 数据库的历史
- 信息和数据
- 数据模型
- 关系模型
- 数据结构
- 关系完整性
- 关系操作
- 语言
- 关系代数语言
绪论
概念间的关系
数据->数据库->数据库管理系统->数据库系统
数据库的历史
人工管理阶段 -> 文件系统阶段 -> 数据库系统阶段
数据库系统结构:三级模式、二级映射
- 外模式:用户
- [概念]模式
- 内模式:数据库的物理存储
信息和数据
信息抽象于现实,可用E-R图描述,包括:
- 实体 entity :具体的事物 或 抽象概念 或 他们之间的联系
- 实体集 entity set
- 属性 attribute
- 属性域 domain :属性的取值范围
- 码 key :唯一标识实体的属性(集)
- 实体型 entity type
- 联系 relationship
不同实体型之间有三种联系:1:1,1:n,m:n (可以没有)
数据由信息转化,对应计算机,包括:
- 字段 field 或数据项 data item:标记实体的属性
- 记录 record
- 记录型
- 文件
- 码 key
数据模型
分类:层次模型 hierarchical model ,网状模型 network model,关系模型 relational model ,面向对象数据模型 object oriented data model ,对象关系数据模型,半结构化数据模型等
操作:增删改查
数据结构:
- 码、主关键字 primary key:唯一标识
- 域 domain
- 行=元组 tuple =记录
- 列=属性 attribute =字段
- 主属性包括主码、候选码
- 分量
完整性约束:实体完整性、参照完整性、用户定义完整性(用户自定义域)
关系模型
描述:关系名(属性1,属性2,……属性n)
关系的每一个分量必须是不可分的数据项
数据结构
- 域 domain
值域,表示属性的取值范围
域中所包含的值的个数称域的基数(m) - 笛卡尔积 cartesian product
D 1 × D 2 = { ( d 1 , d 2 ) ∣ d i ∈ D i } D_1\times D_2=\{(d_1,d_2)|d_i\in D_i\} D1×D2={(d1,d2)∣di∈Di}
( d 1 , d 2 ) (d_1,d_2) (d1,d2)为 [二]元组,其中的每一个值叫做分量
笛卡尔积的基数是各域的基数之积 - 关系 relation
笛卡尔积的子集叫在域D1,…Dn上的关系,表示为 R ( D 1 , D 2 , . . . , D n ) R(D_1,D_2,...,D_n) R(D1,D2,...,Dn)
R是关系的名字,n是关系的目或度
若关系中,某一属性组的值能唯一地标识一个元组,而其子集不能,则称候选码,候选码的诸属性称为主属性。候选码可只包含一个属性,也可能包含全部属性,此时称为全码。
从候选码中选出一个来作为主码,主码也可以是多个属性共同构成的。
外部码,在本关系中不是码,但是其他某一关系的码。
笛卡尔积没有意义,其子集才有意义。关系必须是有限集合。
关系可有:基本表(实际)、查询表、视图表(虚表)
关系完整性
- 实体完整性 entity integrity
主属性不能取空 - 参照完整性 referential integrity
属性F是关系R的属性但不是R的码,K是关系S的主码,F与K定义在同一个域上(相对应),则F是R的外部码,R是参照关系,S是被参照关系(目标关系),R中任一元组在F上的值为:F=S中某个元组的K值 或 空值 - 用户定义完整性 user-defined integrity
用户自定义域
关系操作
增删改查
查询包括:选择、投影、连接、除、并、差、交、笛卡尔积
标粗的是基本操作,其他操作可以用五种基本操作来定义和导出
语言
- 关系代数语言 relational algebra 查询 ISBL
- 关系演算语言 relational calculus 查询 元组演算:ALPHA 域演算:QBE
- 关系数据库标准语言 SQL(structured query language) 更加强大
只需要给出查询,不需要考虑如何实现查询
关系代数语言
集合运算:
- 并union:R和S具有相同目n,且相应属性取自同一个域 R ∪ S = { t ∣ t ∈ R ∨ t ∈ S } R\cup S=\{t|t\in R\vee t\in S\} R∪S={t∣t∈R∨t∈S}
- 差except:R和S具有相同目n,且相应属性取自同一个域 R − S = { t ∣ t ∈ R ∧ t ∉ S } R- S=\{t|t\in R\wedge t\notin S\} R−S={t∣t∈R∧t∈/S}
从R中减去和S相同的 - 交intersection:R和S具有相同目n,且相应属性取自同一个域 R ∩ S = { t ∣ t ∈ R ∧ t ∈ S } R\cap S=\{t|t\in R\wedge t\in S\} R∩S={t∣t∈R∧t∈S}
- 广义笛卡尔积 cartesian product:连接
引入表示符号:
-
关系 R ( A 1 , A 2 , . . . , A n ) R(A_1,A_2,...,A_n) R(A1,A2,...,An)
有 t ∈ R , t\in R, t∈R,其中t是元组
t [ A i ] t[A_i] t[Ai]表示元组t中的分量Ai
A是属性列/域列
A ˉ \bar{A} Aˉ表示从关系中去掉A属性后剩余的属性组 -
R是n目关系,S是m目关系, t r ∈ R , t s ∈ S t_r\in R,t_s\in S tr∈R,ts∈S
是元组的连接 concatenation,是一个(n+m)列的元组 -
给定关系R(X,Z),XZ为属性组,定义当t[X]=x时,x在R中的象集images set是 Z x = { t [ Z ] ∣ t ∈ R , t [ X ] = x } Z_x=\{t[Z]|t\in R,t[X]=x\} Zx={t[Z]∣t∈R,t[X]=x},它表示R中属性组X上值为x的各元组在Z上分量的集合
关系运算:
- 选择运算 selection/restriction:选择元组 σ F ( R ) = { t ∣ t ∈ R ∧ F ( t ) = t r u e } \sigma_F(R)=\{t|t\in R\wedge F(t)=true\} σF(R)={t∣t∈R∧F(t)=true}
F是一个公式,由逻辑运算符 ∨ ∧ ¬ \vee \wedge \neg ∨∧¬连接算数表达式 > < ≥ ≤ = ≠ > < \ge \le = \ne ><≥≤==构成 - 投影运算projection:选择列 π A ( R ) = { t [ A ] ∣ t ∈ R } \pi_A(R)=\{t[A]|t\in R\} πA(R)={t[A]∣t∈R},取消重复行
- 连接运算join: R ⋈ F S R\underset{F}{\Join} S RF⋈S
- 等值连接:F中算数表达式是=, R ⋈ A = B S R\underset{A=B}{\Join} S RA=B⋈S
- 自然连接(常用且默认):进行比较的分量必须是相同的属性,并且在结果中去掉重复的属性 R ⋈ S R\underset{}{\Join} S R⋈S,会有悬浮元组消失
- 半连接 :自然连接后仅保留对R属性的投影
- 左外连接:若S中找不到匹配的元组,则不匹配的元素用空值匹配
- 右外连接:若R中找不到匹配的元组,则不匹配的元素用空值匹配
- 全外连接:所有不匹配的元组均用空值匹配
- 除:R(X,Y),S(Y,Z), R ÷ S = { t r [ X ] ∣ t r ∈ R ∧ Y X ⊇ π Y ( S ) } R\div S=\{t_r[X]|t_r\in R\wedge Y_X\supseteq \pi_Y(S)\} R÷S={tr[X]∣tr∈R∧YX⊇πY(S)}
X的象集Yx包含S在Y上的投影
运算之间的转换:
R ∩ S = R − ( R − S ) 或 S − ( S − R ) R\cap S=R-(R-S)或S-(S-R) R∩S=R−(R−S)或S−(S−R)
R ÷ S = π X ( R ) − π X ( ( T ∗ π Y ( S ) − R ) R\div S=\pi_X(R)-\pi_X((T*\pi_Y(S)-R) R÷S=πX(R)−πX((T∗πY(S)−R)
此处应看ppt
相关文章:
关系型数据库 期末复习(未完
关系型数据库 绪论概念间的关系数据库的历史信息和数据数据模型 关系模型数据结构关系完整性关系操作语言 关系代数语言 绪论 概念间的关系 数据->数据库->数据库管理系统->数据库系统 数据库的历史 人工管理阶段 -> 文件系统阶段 -> 数据库系统阶段 数据库…...
【学习笔记】CF1895G Two Characters, Two Colors
感谢grass8sheep提供的思路。 首先,我们可以用 D P DP DP解决这个问题。 设 f i , j f_{i,j} fi,j表示前 i i i个数中有 j j j个为 1 1 1的位置为红色的最大价值。则转移如下: f i , j ← f i − 1 , j b i f_{i,j}\gets f_{i-1,j}b_i fi,j←fi−…...
GZ035 5G组网与运维赛题第10套
2023年全国职业院校技能大赛 GZ035 5G组网与运维赛项(高职组) 赛题第10套 一、竞赛须知 1.竞赛内容分布 竞赛模块1--5G公共网络规划部署与开通(35分) 子任务1:5G公共网络部署与调试(15分) 子…...
基于SSM的教学管理系统(有报告)。Javaee项目。
演示视频: 基于SSM的教学管理系统(有报告)。Javaee项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring SpringMvc My…...
软件测试工作流程
流程体系介绍 在以往的项目工作中,我参与过,需求评审、测试计划制定、测试用例编写、测试用例执行、测试脚本编写、测试脚本的执行,进行回归测试、验收测试、编写阶段性测试报告等工作 需求分析,需求评审(RPD、产品原…...
高级文本编辑软件 UltraEdit mac中文版介绍说明
UltraEdit mac是一款在Windows系统中非常出名的文本编辑器, UltraEdit for mac对于IT程序猿来说,更是必不可少,可以使用UltraEdit编辑配置文件、查看16进制文件、代码高亮显示等,虽然Mac上已经有了很多优秀的文本编辑器࿰…...
python模块的介绍和导入
python模块的介绍和导入 概念 在Python中,每个Python代码文件都是一个模块。写程序时,我们可以将代码分散在不同的模块(文件)中,然后在一个模块中引用另一个模块的内容。 导入格式 1、在一个模块中引用(导入)另一个模块可以使用import语句…...
基于单片机的智能饮水机系统
收藏和点赞,您的关注是我创作的动力 文章目录 概要 一、系统设计方案分析2.1 设计功能及性能分析2.2设计方案分析 二、系统的硬件设计3.1 系统设计框图系统软件设计4.1 总体介绍原理图 四、 结论 概要 现在很多学校以及家庭使用的饮水机的功能都是比较单一的&#…...
CSS画圆以及CSS实现动态圆
CSS画圆以及CSS实现动态圆 1. 先看基础(静态圆)1.1 效果如下:1.2 代码如下: 2. 动态圆2.1 一个动态圆2.1.1 让圆渐变2.1.2 圆渐变8秒后消失2.1.3 转动的圆(单个圆) 2.2 多个动态圆 1. 先看基础(…...
K8S知识点(一)
(1)应用部署方式转变 (2)K8S介绍 容器部署容易出现编排问题,为了解决就出现了大量的编排软件,这里将的是K8S编排问题的解决佼佼者 弹性伸缩:当流量从1000变为1200可以,自动开启一个…...
人工智能师求职面试笔试题及答案汇总
人工智能师求职面试笔试题及答案汇总 1.如何在Python中实现一个生成器? 答:在Python中,生成器是一种特殊类型的迭代器。生成器允许你在需要时才生成值,从而节省内存。生成器函数在Python中是通过关键字yield来实现的。例如&…...
【Windows-软件-FFmpeg】(01)通过CMD运行FFmpeg进行操作,快速上手
前言 通过"cmd"运行"ffmpeg"进行操作,快速上手; 实操 【实操一】 说明 使用"ffmpeg"来合并音频文件和视频文件 ; 环境 Windows 11 专业版(22621.2428); 代码 …...
Spring Data Redis + RabbitMQ - 基于 string 实现缓存、计数功能(同步数据)
目录 一、Spring Data Redis 1.1、缓存功能 1.1.1、分析 1.1.2、案例实现 1.1.3、效果演示 1.2、计数功能(Redis RabbitMQ) 1.2.1、分析 1.2.2、案例实现 一、Spring Data Redis 1.1、缓存功能 1.1.1、分析 使用 redis 作为缓存, M…...
Facebook Developer 的 HashCode
在 Android 中,您可以使用 Facebook SDK 提供的工具来生成您的应用程序的哈希码(hash code),以便在 Facebook 开发者帐户中配置您的应用程序。 要生成哈希码,您可以使用以下步骤: 打开终端或命令提示符&am…...
下载使用 ant design Pro 中遇到的一些问题
文章目录 npm 版本问题在idea终端输入命令报错:error:0308010C:digital envelope routines::unsupported npm 版本问题 npm v9.6.3 is known not to run on Node.js v19.9.0. This version of npm supports the following node versions: ^14.17.0 || ^16.13.0 || …...
「Java开发指南」如何用MyEclipse搭建Spring MVC应用程序?(一)
本教程将指导开发者如何生成一个可运行的Spring MVC客户应用程序,该应用程序实现域模型的CRUD应用程序模式。在本教程中,您将学习如何: 从数据库表的Scaffold到现有项目部署搭建的应用程序 使用Spring MVC搭建需要MyEclipse Spring或Bling授…...
[动态规划] (七) 路径问题:LCR 166.剑指offer 47. 珠宝的最高价值
[动态规划] (七) 路径问题:LCR 166./剑指offer 47. 珠宝的最高价值 文章目录 [动态规划] (七) 路径问题:LCR 166./剑指offer 47. 珠宝的最高价值题目解析解题思路状态表示状态转移方程初始化和填表顺序 返回值代码实现总结 LCR 166. 珠宝的最高价值 题目…...
Mysql进阶-SQL优化篇
插入数据 insert 我们需要一次性往数据库表中插入多条记录,可以从以下三个方面进行优化。 批量插入数据 一条insert语句插入多个数据,但要注意,每个insert语句最好插入500-1000行数据,就得重新写另一条insert语句 Insert into…...
VueI18n中英文切换 vue2.0
1: npm install --save vue-i18n8.0.0 (版本不要高了,不然报错) 2:创建相关文件 3:main.js文件配置 //i18n插件 import VueI18n from vue-i18n // element-ui多语言文件 import locale from element-ui/lib/locale;…...
VUE组件间通信的七种方式
目录 1、 props / $emit (1)父组件向子组件传值(props的用法) (2)子组件向父组件传递数据($emit的用法) 2、ref / $refs 用法: 3、eventBus事件总线($e…...
FPGA图像处理避坑指南:实现CLAHE时,你的直方图统计与插值模块可能踩的这些雷
FPGA图像处理避坑指南:CLAHE实现中的直方图统计与插值模块陷阱解析 第一次在FPGA上实现CLAHE算法时,我盯着屏幕上那些奇怪的边界伪影和忽明忽暗的色块,整整三天没想明白问题出在哪。直到把示波器接到开发板上,才发现直方图统计模块…...
QW_Sensors嵌入式传感器驱动库详解
1. QW_Sensors 库概述QW_Sensors 是一个面向硬件开发者的轻量级嵌入式传感器驱动库,专为 QW Shield 硬件平台设计。该库并非通用型多平台抽象层,而是深度耦合于 QW Shield 的物理布局、供电逻辑、通信拓扑与固件约束,其核心价值在于将底层硬件…...
程序员必看:代码注释规范与最佳实践
1. 程序员与注释的爱恨情仇作为一名在代码海洋里摸爬滚打多年的老程序员,我见过太多令人啼笑皆非的代码注释。这些注释有的像谜语,有的像情书,有的干脆就是行为艺术。今天我们就来聊聊这个让无数程序员又爱又恨的话题——代码注释。记得我刚入…...
QT: 二维码生成与自定义渲染实战
1. 二维码基础与QT开发环境搭建 二维码本质上是用黑白矩形图案表示二进制数据的图形化编码方案。相比传统条形码,它的核心优势在于二维方向上的数据存储能力,以及强大的容错机制。我在实际项目中发现,即使用户拍摄的二维码有部分污损或遮挡&a…...
告别量子调试:手把手教你正确使用QtConcurrent::run和QThreadPool执行类方法
告别量子调试:手把手教你正确使用QtConcurrent::run和QThreadPool执行类方法 在Qt多线程开发中,最令人头疼的莫过于那些"薛定谔式"的Bug——它们在某些环境下稳定运行,换个场景就神秘崩溃。特别是当我们需要将传统单线程业务类改造…...
Visio是什么?附安装使用全流程
Visio是什么? 它是微软出品的专业图表绘制工具,是Office家族里最低调、但也是职场进阶最硬核的成员之一。如果说Excel是处理数字的神,那Visio就是处理逻辑和流程的王者。 安装教程和安装包获取 为什么建议你试试Visio? 1. 拖拽…...
跨越平台鸿沟:在非ROS环境中通过Rosbridge与ROS 2 Humble高效通信
1. 为什么需要Rosbridge? 在机器人开发领域,ROS 2 Humble已经成为主流操作系统之一。但现实情况是,很多开发者可能需要在Windows、MacOS甚至是没有安装ROS的Linux环境下工作。这时候就面临一个难题:如何让这些非ROS环境与ROS 2系统…...
Python MCP模板的“最后一公里”难题:K8s ServiceMesh集成、gRPC透明代理、证书自动轮转——全链路演示
第一章:Python MCP模板的企业级定位与架构全景Python MCP(Model-Controller-Plugin)模板并非通用Web框架的变体,而是专为企业级中台系统设计的可扩展服务骨架。它聚焦于解耦业务模型、控制逻辑与插件化能力扩展,适用于…...
零基础入门ai开发:在快马平台用openclaw tavily打造你的第一个智能搜索应用
作为一个刚接触AI开发的新手,最近我在InsCode(快马)平台上尝试用OpenClaw Tavily API做了一个智能搜索小工具,整个过程比想象中简单很多。今天就把这个入门经验分享给大家,希望能帮助同样想尝试AI应用开发的朋友少走弯路。 为什么选择Tavily …...
破局迷茫:Java 2026行业前瞻、零基础通关路径与理科大学生职业跃迁全攻略
你是否正站在人生的十字路口,被一连串的问题反复拷问:听过Java的大名,却始终搞不懂它到底是什么、能支撑你走多远?想入门编程,却面对海量资料无从下手,怕走弯路、怕投入时间最终竹篮打水?刷到无…...
