数据库系统概论(个人笔记)(第二部分)
数据库系统概论(个人笔记)
文章目录
- 数据库系统概论(个人笔记)
- 2、关系模型简介
- 2.1 关系数据库的结构
- 2.2 数据库模式
- 2.3 键
- 2.4 模式图
- 2.5 关系查询语言
- 2.6 关系代数
2、关系模型简介
2.1 关系数据库的结构
Structure of Relational Databases
在逻辑级别上,关系数据库是一个名为 Relations 的二维表的集合。
Relations 表示一个实体集或一个关系集。 (集合)
Relations 的一行表示一个实体或一个关系。(个体)

Basic Structure
关系的每一行都可以称为元组 tuple。
关系的每一列都有一个名称 → 关系的命名列称为属性 attributes。
每个属性允许的值的集合称为属性的域 domain。
属性值(通常)必须是原子的 atomic ;也就是说,它是不可分割的:
- 属性上的元组的值可以是一个帐号,但不能是一组帐号
特殊值 null 是每个域的成员。

Relation
笛卡尔积 Cartesian Product


Tuple Variable
元组变量 Tuple Variable
- 是一个变量,代表一个元组
- 其域是一个特定关系的所有元组的集合

2.2 数据库模式
Database Schema
Relation Schema
关系模式 relation schema

Relations are Unordered
元组的顺序是无关的(元组可以以任意顺序存储)。

Relational Database
一个数据库由多个关系组成。
有关企业的信息被分成若干部分,每个关系存储一部分信息。

将所有信息存储为一个简单的 relation。
university(instr_id, inst_name, stu_id, stu_name,...)
- 重复的信息——(会导致)如果两个导师给一个学生建议(What gets repeated?)
- 空值的需要——来代表一个没有老师的学生
规范化理论(第7章)涉及如何设计关系模式
2.3 键
Keys
K 是一组属性,设K ⊆ R
如果 K 的值足以识别每个可能关系 r® 的唯一元组,则K是R的超键 superkey
- ”可能的 r“ 是指可能存在于我们正在建模的企业中的关系。

如果K最小,则超键 K 为候选密钥 candidate key
- 极小意味着它的任何子集都不是超级密钥

主键 Primary key:作为识别关系中元组的主要手段而选择的候选键
- 应该选择一个其值永远或很少改变的属性
电子邮件地址是唯一的,但可能会改变,不适合主键
Foreign Keys
关系 r1 可能具有与另一个关系 r2 的主键相对应的属性。该属性称为外键 foregin key
- r1 是引用关系 r1 is referencing relation
- r2 是被引用的关系 r2 is referenced relation


Referencing Constraint
Referencing Constraint 引用约束
只有出现在被引用关系 referenced relation 的主键属性中的值才可能出现在引用关系 referencing relation 的外键属性中

2.4 模式图
Schema Diagrams
Schema Diagram for University Database

2.5 关系查询语言
Relational Query Languages
用户从数据库请求信息的语言。
语言类别
- 程序性
- 非程序性,或声明性
“纯 Pure” 的语言: 形成人们使用的查询语言的基础
- 关系代数 程序性
- 元组关系演算 非程序性
- 域关系演算 非程序性
以上3种纯语言在计算能力上是等价的在本章中
我们将集中讨论关系代数
- 不是图灵机等价物
- 由6个基本操作组成
2.6 关系代数
The Relational Algebra
一种由一组操作组成的过程语言,这些操作把一个或两个关系作为输入,并产生一个新的关系作为其结果。
| 六种基本运算符 | |
|---|---|
| select 选择 | σ |
| project 投影 | ∏ |
| union 并 | ∪ |
| set difference 集合差 | - |
| Cartesian product 笛卡尔积 | × |
| rename 重命名 | ρ |
Select Operation
选择满足给定谓词的元组



Project Operation
一元操作,选取某些列


结果被定义为通过擦除未列出的列而获得的k列之间的关系
从结果中删除重复行,因为关系是集

Composition of Relational Operations
关系代数运算的结果是关系,因此关系代数运算可以组合成一个关系代数表达式 reletional-algebra expression。
考虑这个查询——查找物理系所有教员的姓名。
∏ n a m e = ( σ d e p t . . n a m e = " P h y s i c s " " ( i n s t r u c t o r ) ) ) \prod _{name}=(\sigma _{dept..name\,=\,"Physics""}(instructor))) name∏=(σdept..name="Physics""(instructor)))
我们不给出关系的名称作为投影操作的参数,而是给出一个计算结果为关系的表达式。
Union Operation
类似于集合并运算


对 r ∪ s 才有效:
- r,s 必须具有相同的参数数量 arity (相同数量的属性)
- 属性域必须兼容 compatible
r 的第二列处理的值与 s 的第二列处理的值类型相同

Set Difference Operation
类似于集合差运算


集合差必须处在兼容关系之间
- R和S必须具有相同的参数数量 arity
- 属性R和S的域必须兼容

Set-Intersection Operation
Set-Intersection Operation 交集运算

Example


Cartesian-Product Operation
将一个关系的每个元组与另一个关系的每个元组配对


Composition of Operations***
可以使用多个运算生成表达式


The instructor x teaches table

Join Operation
Join Operation 连接运算




Rename Operation
允许我们命名,从而引用关系代数表达式的结果

允许我们用多个名称来引用一个关系


The Assignment Operation
The Assignment Operation 赋值运算
有时通过将关系代数表达式的一部分分配给临时的关系变量来编写关系代数表达式是很方便的。
赋值操作用<–表示,其工作方式类似于程序设计语言中的赋值操作。

通过赋值操作,可以将查询编写为一个顺序程序,该程序由一系列赋值和一个表达式组成,表达式的值显示为查询的结果。
Equivalent Queries
Equivalent Queries 相同的查询
在关系代数中编写查询的方法不止一种。


这两个查询并不相同。但是,它们是等价的——它们在任何数据库上都给出相同的结果。
相关文章:
数据库系统概论(个人笔记)(第二部分)
数据库系统概论(个人笔记) 文章目录 数据库系统概论(个人笔记)2、关系模型简介2.1 关系数据库的结构2.2 数据库模式2.3 键2.4 模式图2.5 关系查询语言2.6 关系代数 2、关系模型简介 2.1 关系数据库的结构 Structure of Relational…...
WebView基础知识以及Androidx-WebKit的使用
文章目录 摘要WebView基础一、启动调整模式二、WebChromeClient三、WebViewClient四、WebSettings五、WebView和Native交互 Androidx-WebKit一、启动安全浏览服务二、设置代理三、安全的 WebView 和 Native 通信支持四、文件传递五、深色主题的支持六、JavaScript and WebAssem…...
解锁AI写作新纪元的文心一言指令
解锁AI写作新纪元的文心一言指令 在人工智能(AI)飞速发展的今天,自然语言处理(NLP)技术取得了显著的进步。文心一言,作为NLP领域的一颗璀璨明星,以其强大的文本生成和指令理解能力,为…...
前端学习——工具的使用
文章目录 1. 引入一个组件需要什么步骤2. 监听变量的修改3. async与await实现异步调用4. position: relative5. 定时执行方法 1. 引入一个组件需要什么步骤 引入一个组件,一定不要加{} (对)import editForm from “./component/editForm”; …...
图的拓扑序列(BFS_如果节点带着入度信息)
way:找入度为0的节点删除,减少其他节点的入度,继续找入度为0的节点,直到删除完所有的图节点。(遍历node的neighbors就能得到neighbors的入度信息) #include<iostream> #include<vector> #incl…...
Linux常用指令集合
ls显示目录文件 选项: -a 所有文件(all所有) -l 详细信息(Information信息)(自动包含-1) 所以常用 ll -1 一行只输出一个文件。 -R 列出所有子目录下的文件。…...
前端 JS 经典:为什么需要模块化
首先,自我评定一下,一个 js 文件,各位兄弟,最多能掌控多少行,什么意思呢,就是说,一个 js 文件在多少行之内,你是可以清楚的知道这个 JS 实现了哪些业务逻辑,并对这些业务…...
MySQL:某字段追加随机数
在MySQL中,你可以使用UPDATE语句结合随机函数RAND()来为某个字段追加随机数。以下是一个示例,假设我们有一个表my_table,其中有一个字段my_field,我们想要为这个字段追加一个介于1到100之间的随机数: UPDATE my_table…...
研发管理-选择研发管理系统-研发管理系统哪个好
选择研发管理系统-研发管理系统哪个好 选择研发管理系统时,并没有一个绝对的“最好”的系统,因为每个企业的需求和情况都是独特的。然而,我可以向您介绍一些在市场上广受欢迎且功能强大的研发管理系统,供您参考: 1、彩…...
学校NTP时钟系统(时间同步系统)方案助力建设智慧校园
学校NTP时钟系统(时间同步系统)方案助力建设智慧校园 学校NTP时钟系统(时间同步系统)方案助力建设智慧校园 建设智慧校园也意味着校内网络设备和服务器剧增,如何保障智慧校园内各数字系统时序一致、维稳运行成为一大难…...
HTML中打开窗口的类型及使用方法
HTML中打开窗口是Web开发中常用的功能之一,可以通过不同的方式打开窗口,以满足不同的需求。本文将介绍HTML中打开窗口的类型及使用方法。 一、使用target属性打开窗口 target属性是HTML中打开窗口最常用的方式之一,可以通过设置target属性的…...
【userfaultfd+条件竞争劫持modprobe_path】TSGCTF 2021 -- lkgit
前言 入门题,单纯就是完成每日一道 kernel pwn 的 kpi 😀 题目分析 内核版本:v5.10.25,可以使用 userfaultfd,不存在 cg 隔离开启了 smap/smep/kaslr/kpti 保护开启了 SLAB_HADNERN/RANDOM 保护 题目给了源码&…...
StNet: Local and Global Spatial-Temporal Modeling for Action Recognition 论文阅读
StNet: Local and Global Spatial-Temporal Modeling for Action Recognition 论文阅读 Abstract1 Introduction2 Related Work3 Proposed Approach4 Experiments5 Conclusion 文章信息: 原文链接:https://ojs.aaai.org/index.php/AAAI/article/view/4…...
SpringBoot解决CORS跨域——WebMvcConfigurationSupport
前端请求后端报错了。 状态码:403 返回错误:Invalid coRs request 增加配置类WebMvcConfig Configuration public class WebMvcConfig extends WebMvcConfigurationSupport {Overridepublic void addCorsMappings(CorsRegistry registry) {// 允许跨域…...
Linux之内存管理-malloc \kmalloc\vmalloc\dma
1、malloc 函数 1.1分配内存小于128k,调用brk malloc是C库实现的函数,C库维护了一个缓存,当内存够用时,malloc直接从C库缓存分配,只有当C库缓存不够用; 当申请的内存小于128K时,通过系统调用brkÿ…...
PyTorch中定义自己的数据集
文章目录 1. 简介2. 查看PyTorch自带的数据集(可视化)3. 准备材料3.1 图片数据3.2 标签数据 4. 方法 1. 简介 尽管PyTorch提供了许多自带的数据集,如MNIST、CIFAR-10、ImageNet等,但它们对于没有经验的用户来说,理解数据加载器的工作原理以及…...
助力数字农林业发展服务香榧智慧种植,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建香榧种植场景下香榧果实检测识别系统
作为一个生在北方但在南方居住多年的人,居然头一次听过香榧(fei)这种作物,而且这个字还不会念,查了以后才知道读音(fei),三声,这着实引起了我的好奇心,我相信…...
2024 年 4 月区块链游戏研报:市场低迷中活跃用户数创新高
2024 年 4 月区块链游戏研报 作者:stellafootprint.network 数据来源:GameFi 研究页面 2024 年 4 月,Web3 游戏领域在经历 3 月创纪录的表现后,迎来了显著波动。比特币自历史高位回调,月跌幅达到 10.4%。与此同时&a…...
排序(一)----冒泡排序,插入排序
前言 今天讲一些简单的排序,冒泡排序和插入排序,但是这两个排序时间复杂度较大,只是起到一定的学习作用,只需要了解并会使用就行,本文章是以升序为例子来介绍的 一冒泡排序 思路 冒泡排序是一种简单的排序算法,它重复地遍历要排序的序列,每次比较相邻…...
springcloud简单了解及上手
springcloud微服务框架简单上手 文章目录 springcloud微服务框架简单上手一、SpringCloud简单介绍1.1 单体架构1.2 分布式架构1.3 微服务 二、SpringCloud与SpringBoot的版本对应关系2022.x 分支2021.x 分支2.2.x 分支 三、Nacos注册中心3.1 认识和安装Nacos3.2 配置Nacos3.3 n…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
